Перейти к основному содержимому

ONLYOFFICE Docs в Kubernetes

Введение​

Важно

Данная инструкция действительна только для решения с платной лицензией для кластера.

  • У вас должен быть установлен кластер Kubernetes или OpenShift:
  • Также у вас должна быть локальная настроенная копия kubectl. Обратитесь к этой инструкции, чтобы узнать, как установить и настроить kubectl.
  • Необходимо установить Helm v3.7+. Чтобы установить его, следуйте инструкции здесь.
  • Если вы используете OpenShift, для управления развертыванием можно использовать как oc, так и kubectl.
  • Если установка внешних по отношению к Docs компонентов выполняется из Helm-чарта в кластере OpenShift, рекомендуется устанавливать их от имени пользователя с ролью cluster-admin, чтобы избежать возможных проблем с правами доступа. Обратитесь к этой инструкции, чтобы добавить пользователю необходимые роли.

Подготовка к развертыванию​

примечание

При установке в кластер OpenShift может потребоваться применить политику SecurityContextConstraints, которая добавляет разрешение на запуск контейнеров от имени пользователя с ID = 1001.

Для этого выполните следующие команды:

$ oc apply -f https://raw.githubusercontent.com/ONLYOFFICE/Kubernetes-Docs/master/sources/scc/helm-components.yaml
$ oc adm policy add-scc-to-group scc-helm-components system:authenticated

Кроме того, можно указать допустимый диапазон пользователей и групп из целевого пространства имен — смотрите параметры runAsUser и fsGroup при установке зависимостей, таких как RabbitMQ, Redis, PostgreSQL и т.д.

1. Добавьте репозитории Helm​

$ helm repo add bitnami https://charts.bitnami.com/bitnami
$ helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
$ helm repo add nfs-server-provisioner https://kubernetes-sigs.github.io/nfs-ganesha-server-and-external-provisioner
$ helm repo add onlyoffice https://download.onlyoffice.com/charts/stable
$ helm repo update

2. Установите постоянное хранилище​

Важно

Если вы хотите использовать Amazon S3 в качестве кэша, пропустите этот шаг.

Установите NFS Server Provisioner

примечание

При установке NFS Server Provisioner создается класс хранилища (Storage Class) NFS. При установке в кластер OpenShift у пользователя должна быть роль, которая позволяет создавать классы хранилища в кластере. Подробнее читайте здесь.

$ helm install nfs-server nfs-server-provisioner/nfs-server-provisioner \
--set persistence.enabled=true \
--set persistence.storageClass=PERSISTENT_STORAGE_CLASS \
--set persistence.size=PERSISTENT_SIZE
  • PERSISTENT_STORAGE_CLASS — это класс постоянного хранилища (Persistent Storage Class), доступный в вашем кластере Kubernetes.

    Классы постоянного хранилища у разных провайдеров:

  • PERSISTENT_SIZE — это общий размер всех постоянных хранилищ для класса постоянного хранилища nfs. Размер можно указать целым числом с одним из следующих суффиксов: T, G, M, Ti, Gi, Mi. Например: 9Gi.

Подробнее об установке NFS Server Provisioner с помощью Helm читайте здесь.

Настройте Persistent Volume Claim

По умолчанию размер Persistent Volume Claim nfs составляет 8Gi. Его можно изменить в файле values.yaml в разделе persistence.storageClass и persistence.size. Он должен быть меньше PERSISTENT_SIZE как минимум примерно на 5%. Рекомендуется использовать 8Gi или больше постоянного хранилища на каждые 100 активных пользователей ONLYOFFICE Docs.

Важно

Тип PersistentVolume, используемый для размещения PVC, должен поддерживать режим доступа ReadWriteMany. Кроме того, владельцем PersistentVolume должен быть пользователь, от имени которого будет запускаться ONLYOFFICE Docs. По умолчанию это ds (101:101).

Если вы хотите включить WOPI, задайте параметр wopi.enabled=true. В этом случае постоянное хранилище должно быть подключено к узлам кластера с отключенными атрибутами кэширования для смонтированного каталога у клиентов. Для NFS Server Provisioner этого можно добиться, добавив опцию noac в параметр storageClass.mountOptions. Подробнее читайте здесь.

3. Разверните RabbitMQ​

Чтобы установить RabbitMQ в кластер, выполните следующую команду:

$ helm install rabbitmq --version 16.0.14 bitnami/rabbitmq \
--set persistence.storageClass=PERSISTENT_STORAGE_CLASS \
--set resourcesPreset=none \
--set image.repository=bitnamilegacy/rabbitmq \
--set image.tag=4.1.3-debian-12-r1 \
--set global.security.allowInsecureImages=true \
--set metrics.enabled=false
примечание

Задайте metrics.enabled=true, чтобы включить предоставление метрик RabbitMQ для сбора с помощью Prometheus.

Подробнее об установке RabbitMQ с помощью Helm читайте здесь.

4. Разверните Redis​

Чтобы установить Redis в кластер, выполните следующую команду:

$ helm install redis --version 22.0.7 bitnami/redis \
--set architecture=standalone \
--set master.persistence.storageClass=PERSISTENT_STORAGE_CLASS \
--set master.resourcesPreset=none \
--set global.security.allowInsecureImages=true \
--set image.repository=bitnamilegacy/redis \
--set image.tag=8.2.1-debian-12-r0 \
--set metrics.enabled=false
примечание

Задайте metrics.enabled=true, чтобы включить предоставление метрик Redis для сбора с помощью Prometheus. Также добавьте следующие параметры: metrics.image.repository=bitnamilegacy/redis-exporter и metrics.image.tag=1.76.0-debian-12-r0.

Подробнее об установке Redis с помощью Helm читайте здесь.

5. Разверните базу данных​

В качестве сервера базы данных можно использовать PostgreSQL, MySQL или MariaDB.

Чтобы установить PostgreSQL в кластер, выполните следующую команду:

$ helm install postgresql --version 16.7.27 bitnami/postgresql \
--set auth.database=postgres \
--set primary.persistence.storageClass=PERSISTENT_STORAGE_CLASS \
--set primary.persistence.size=PERSISTENT_SIZE \
--set primary.resourcesPreset=none \
--set image.repository=bitnamilegacy/postgresql \
--set global.security.allowInsecureImages=true \
--set image.tag=17.6.0-debian-12-r2 \
--set metrics.enabled=false
примечание

Задайте metrics.enabled=true, чтобы включить предоставление метрик базы данных для сбора с помощью Prometheus. Также добавьте следующие параметры: metrics.image.repository=bitnamilegacy/postgres-exporter и metrics.image.tag=0.17.1-debian-12-r16.

Подробнее об установке PostgreSQL с помощью Helm читайте здесь.

6. Разверните StatsD exporter​

Важно

Это необязательный шаг. Его можно полностью пропустить, если вы не хотите запускать StatsD exporter.

  1. Добавьте репозитории Helm

    $ helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
    $ helm repo add kube-state-metrics https://kubernetes.github.io/kube-state-metrics
    $ helm repo update
  2. Установка Prometheus

    Чтобы установить Prometheus в кластер, выполните следующую команду:

    $ helm install prometheus -f https://raw.githubusercontent.com/ONLYOFFICE/Kubernetes-Docs/master/sources/extraScrapeConfigs.yaml prometheus-community/prometheus \
    --set server.global.scrape_interval=1m

    Чтобы изменить интервал сбора метрик, укажите параметр server.global.scrape_interval.

    Подробнее об установке Prometheus с помощью Helm читайте здесь.

  3. Установка StatsD exporter

    Чтобы установить StatsD exporter в кластер, выполните следующую команду:

    $ helm install statsd-exporter prometheus-community/prometheus-statsd-exporter \
    --set statsd.udpPort=8125 \
    --set statsd.tcpPort=8126 \
    --set statsd.eventFlushInterval=30000ms

    Подробнее об установке Prometheus StatsD exporter с помощью Helm читайте здесь.

    Чтобы разрешить метрики StatsD в ONLYOFFICE Docs, выполните этот шаг.

7. Внесите изменения в файлы конфигурации Node-config​

Важно

Это необязательный шаг. Его можно полностью пропустить, если вам не нужно вносить изменения в файлы конфигурации.

  1. Создайте ConfigMap, содержащий json-файл

    Чтобы создать ConfigMap из файла, который содержит структуру local.json, выполните следующую команду:

    $ kubectl create configmap local-config \
    --from-file=./local.json
    примечание

    Вместо local-config можно использовать любое имя.

  2. Укажите параметры при установке ONLYOFFICE Docs

    При установке ONLYOFFICE Docs укажите параметры extraConf.configMap=local-config и extraConf.filename=local.json.

    примечание

    Если вам нужно добавить файл конфигурации после того, как ONLYOFFICE Docs уже установлен, выполните шаг 7.1, а затем выполните команду

    helm upgrade documentserver onlyoffice/docs --set extraConf.configMap=local-config --set extraConf.filename=local.json --no-hooks

    или

    helm upgrade documentserver -f ./values.yaml onlyoffice/docs --no-hooks

    если параметры указаны в файле values.yaml.

8. Добавьте пользовательские шрифты​

Важно

Это необязательный шаг. Его можно полностью пропустить, если вам не нужно добавлять свои шрифты.

Чтобы добавить шрифты в образы, необходимо пересобрать образы. Выполните соответствующие шаги из этой инструкции. Затем укажите свои образы при установке ONLYOFFICE Docs.

9. Добавьте плагины​

Важно

Это необязательный шаг. Его можно полностью пропустить, если вам не нужно добавлять плагины.

Чтобы добавить плагины в образы, необходимо пересобрать образы. Выполните соответствующие шаги из этой инструкции. Затем укажите свои образы при установке ONLYOFFICE Docs.

10. Добавьте пользовательские словари​

Важно

Это необязательный шаг. Его можно полностью пропустить, если вам не нужно добавлять свои словари.

Чтобы добавить свои словари в образы, необходимо пересобрать образы. Выполните соответствующие шаги из этой инструкции. Затем укажите свои образы при установке ONLYOFFICE Docs.

11. Измените темы интерфейса​

Важно

Это необязательный шаг. Его можно полностью пропустить, если вам не нужно менять темы интерфейса.

  1. Создайте ConfigMap, содержащий json-файл

    Чтобы создать ConfigMap с json-файлом, который содержит темы интерфейса, выполните следующую команду:

    $ kubectl create configmap custom-themes \
    --from-file=./custom-themes.json
    примечание

    Вместо custom-themes и custom-themes.json можно использовать любые другие имена.

  2. Укажите параметры при установке ONLYOFFICE Docs

    При установке ONLYOFFICE Docs укажите параметры extraThemes.configMap=custom-themes и extraThemes.filename=custom-themes.json.

    примечание

    Если вам нужно добавить темы интерфейса после того, как ONLYOFFICE Docs уже установлен, выполните шаг 11.1, а затем выполните команду helm upgrade documentserver onlyoffice/docs --set extraThemes.configMap=custom-themes --set extraThemes.filename=custom-themes.json --no-hooks или helm upgrade documentserver -f ./values.yaml onlyoffice/docs --no-hooks, если параметры указаны в файле values.yaml.

12. Подключение бакета Amazon S3 в качестве кэша к ONLYOFFICE Helm Docs​

Важно

Это необязательный шаг. Его можно полностью пропустить, если вы не хотите использовать Amazon S3 в качестве хранилища кэша.

Чтобы подключить бакет Amazon S3 в качестве кэша, необходимо создать файл конфигурации или отредактировать существующий в соответствии с этой инструкцией и изменить значение параметра persistence.storageS3 на true.

Развертывание ONLYOFFICE Docs​

примечание

При установке в кластер OpenShift может потребоваться применить политику SecurityContextConstraints, которая добавляет разрешение на запуск контейнеров от имени пользователя с ID = 101.

Для этого выполните следующие команды:

$ oc apply -f https://raw.githubusercontent.com/ONLYOFFICE/Kubernetes-Docs/master/sources/scc/docs-components.yaml
$ oc adm policy add-scc-to-group scc-docs-components system:authenticated

Кроме того, можно применить политику SecurityContextConstraints (SCC) nonroot-v2 в commonAnnotations или annotations для всех ресурсов, описывающих podTemplate. Убедитесь, что и у пользователя, и у учетной записи службы есть необходимые разрешения на использование этой SCC. Чтобы проверить, у кого есть разрешение на использование nonroot-v2, выполните следующую команду:

oc adm policy who-can use scc nonroot-v2
helm install documentserver onlyoffice/docs --set commonAnnotations."openshift\.io/required-scc"="nonroot-v2"

При необходимости задайте для podSecurityContext.enabled и <resources>.containerSecurityContext.enabled значение true.

1. Разверните лицензию ONLYOFFICE Docs​

  1. Создайте секрет

    Если у вас есть действующая лицензия ONLYOFFICE Docs, создайте из файла секрет license:

    $ kubectl create secret generic [SECRET_LICENSE_NAME] --from-file=path/to/license.lic

    Где SECRET_LICENSE_NAME — это имя будущего секрета с лицензией.

    примечание

    Исходный файл лицензии должен называться «license.lic», так как это имя будет использоваться в качестве поля в создаваемом секрете.

    примечание

    Если установка выполняется без создания секрета с существующим файлом лицензии, будет автоматически создан пустой секрет license. О том, как обновить существующий секрет с лицензией, читайте здесь.

  2. Укажите параметры при установке ONLYOFFICE Docs

    При установке ONLYOFFICE Docs укажите параметр license.existingSecret=[SECRET_LICENSE_NAME].

    $ helm install documentserver onlyoffice/docs --set license.existingSecret=[SECRET_LICENSE_NAME]
    примечание

    Если вам нужно добавить лицензию после того, как ONLYOFFICE Docs уже установлен, выполните шаг 1.1, а затем выполните команду helm upgrade documentserver onlyoffice/docs --set license.existingSecret=[SECRET_LICENSE_NAME] --no-hooks или helm upgrade documentserver -f ./values.yaml onlyoffice/docs --no-hooks, если параметры указаны в файле values.yaml.

2. Разверните ONLYOFFICE Docs​

Чтобы развернуть ONLYOFFICE Docs с именем релиза documentserver, выполните команду:

$ helm install documentserver onlyoffice/docs

Эта команда развертывает ONLYOFFICE Docs в кластере Kubernetes в конфигурации по умолчанию. В разделе Параметры перечислены параметры, которые можно настроить во время установки.

примечание

Если ONLYOFFICE Docs устанавливается в частном кластере k8s за веб-прокси или без доступа к Интернету, ознакомьтесь с примечаниями ниже.

3. Удалите ONLYOFFICE Docs​

Чтобы удалить развертывание documentserver, выполните команду:

$ helm delete documentserver

Выполнение команды helm delete запускает хуки, которые выполняют подготовительные действия перед полным удалением ONLYOFFICE Docs, включая остановку сервера, очистку используемого PVC и таблиц базы данных. Время выполнения хука по умолчанию — 300 с. Время выполнения можно изменить с помощью --timeout [time], например:

$ helm delete documentserver --timeout 25m
примечание

Если ONLYOFFICE Docs удаляется в частном кластере k8s за веб-прокси или без доступа к Интернету, ознакомьтесь с примечаниями ниже.

Если вы хотите удалить ONLYOFFICE Docs без каких-либо подготовительных действий, выполните следующую команду:

$ helm delete documentserver --no-hooks

Команда helm delete удаляет все компоненты Kubernetes, связанные с чартом, и удаляет релиз.

4. Параметры​

Указывайте каждый параметр с помощью аргумента --set key=value[,key=value] команды helm install. Например:

$ helm install documentserver onlyoffice/docs --set ingress.enabled=true,ingress.ssl.enabled=true,ingress.host=example.com

Эта команда публикует ONLYOFFICE Docs по протоколу HTTPS.

Кроме того, при установке чарта можно передать YAML-файл, в котором указаны значения параметров:

$ helm install documentserver -f values.yaml onlyoffice/docs
примечание

Можно использовать файл values.yaml по умолчанию.

Показать все параметры
ПараметрОписаниеЗначение по умолчанию
connections.dbTypeТип базы данных. Возможные значения: postgres, mariadb, mysql, oracle, mssql или damengpostgres
connections.dbHostIP-адрес или имя хоста базы данныхpostgresql
connections.dbUserПользователь базы данныхpostgres
connections.dbPortНомер порта сервера базы данных5432
connections.dbNameИмя базы данных, к которой будет подключено приложениеpostgres
connections.dbPasswordПароль пользователя базы данных. Если задан, имеет приоритет над connections.dbExistingSecret""
connections.dbSecretKeyNameИмя ключа, который содержит пароль пользователя базы данныхpostgres-password
connections.dbExistingSecretИмя существующего секрета, используемого для паролей базы данных. Должен содержать ключ, указанный в connections.dbSecretKeyNamepostgresql
connections.redisConnectorNameОпределяет, какой коннектор использовать для подключения к Redis. Если необходимо подключиться к Redis Sentinel, задайте значение ioredisredis
connections.redisHostIP-адрес или имя хоста Redis. Не используется, если заданы значения в connections.redisClusterNodes и connections.redisSentinelNodesredis-master
connections.redisPortНомер порта сервера Redis. Не используется, если заданы значения в connections.redisClusterNodes и connections.redisSentinelNodes6379
connections.redisUserИмя пользователя Redis. Значение этого параметра переопределяет значение, заданное в объекте options в файле local.json, если вы добавляете пользовательский файл конфигурацииdefault
connections.redisDBNumНомер логической базы данных Redis, которая будет выбрана. Значение этого параметра переопределяет значение, заданное в объекте options в файле local.json, если вы добавляете пользовательский файл конфигурации0
connections.redisClusterNodesСписок узлов в кластере Redis. Указывать все узлы кластера не обязательно, достаточно трех. Можно указать несколько значений. Значения необходимо указывать в формате host:port[]
connections.redisPasswordПароль, заданный для учетной записи Redis. Если задан, имеет приоритет над connections.redisExistingSecret. Значение этого параметра переопределяет значение, заданное в объекте options в файле local.json, если вы добавляете пользовательский файл конфигурации""
connections.redisSecretKeyNameИмя ключа, который содержит пароль пользователя Redisredis-password
connections.redisExistingSecretИмя существующего секрета, используемого для паролей Redis. Должен содержать ключ, указанный в connections.redisSecretKeyName. Пароль из этого секрета переопределяет пароль, заданный в объекте options в файле local.jsonredis
connections.redisNoPassОпределяет, использовать ли аутентификацию Redis без пароля. Если для подключения к серверу Redis пароль не требуется, задайте значение truefalse
connections.redisSentinelNodesСписок узлов Redis Sentinel. Указывать все узлы не обязательно, достаточно трех. Можно указать несколько значений. Значения необходимо указывать в формате host:port. Используется, если для connections.redisConnectorName задано значение ioredis[]
connections.redisSentinelGroupNameИмя группы экземпляров Redis, состоящей из одного основного и одного или нескольких подчиненных экземпляров. Используется, если для connections.redisConnectorName задано значение ioredismymaster
connections.redisSentinelExistingSecretИмя существующего секрета, используемого для пароля Redis Sentinel. Должен содержать ключ, указанный в connections.redisSentinelSecretKeyName. Пароль из этого секрета переопределяет значение пароля, заданное в объекте iooptions в файле local.json""
connections.redisSentinelSecretKeyNameИмя ключа, который содержит пароль пользователя Redis Sentinel. Если вы задали пароль в redisSentinelPassword, будет автоматически создан секрет, имя ключа которого будет равно заданному здесь значениюsentinel-password
connections.redisSentinelPasswordПароль, заданный для учетной записи Redis Sentinel. Если задан, имеет приоритет над connections.redisSentinelExistingSecret. Значение этого параметра переопределяет значение, заданное в объекте iooptions в файле local.json""
connections.redisSentinelNoPassОпределяет, использовать ли аутентификацию Redis Sentinel без пароля. Если для подключения к Redis Sentinel пароль не требуется, задайте значение truetrue
connections.amqpTypeОпределяет тип сервера AMQP. Возможные значения: rabbitmq или activemqrabbitmq
connections.amqpHostIP-адрес или имя сервера AMQPrabbitmq
connections.amqpPortПорт для подключения к серверу AMQP5672
connections.amqpVhostВиртуальный хост для подключения к серверу AMQP/
connections.amqpUserИмя пользователя учетной записи сервера AMQPuser
connections.amqpProtoПротокол для подключения к серверу AMQPamqp
connections.amqpPasswordПароль пользователя сервера AMQP. Если задан, имеет приоритет над connections.amqpExistingSecret""
connections.amqpSecretKeyNameИмя ключа, который содержит пароль пользователя сервера AMQPrabbitmq-password
connections.amqpExistingSecretИмя существующего секрета, используемого для паролей сервера AMQP. Должен содержать ключ, указанный в connections.amqpSecretKeyNamerabbitmq
persistence.existingClaimИмя существующего PVC. Если не указано, будет создан PVC с именем «ds-files»""
persistence.annotationsОпределяет аннотации, которые будут дополнительно добавлены к PVC «ds-files». Если заданы, имеют приоритет над commonAnnotations{}
persistence.storageClassКласс хранилища PVC для томов данных и конфигурации среды выполнения Onlyoffice Docsnfs
persistence.sizeЗапрашиваемый объем хранилища PVC для тома ONLYOFFICE Docs8Gi
persistence.storageS3Определяет, будет ли S3 использоваться в качестве хранилища кэша. Задайте значение true, если будете использовать S3 в качестве хранилища кэшаfalse
persistence.runtimeConfig.enabledОпределяет, использовать ли PVC и монтировать ли его в контейнерыtrue
persistence.runtimeConfig.existingClaimИмя существующего PVC, используемого для хранения конфигурации среды выполнения. Если не указано, будет создан PVC с именем «ds-runtime-config»""
persistence.runtimeConfig.annotationsОпределяет аннотации, которые будут дополнительно добавлены к PVC «ds-runtime-config». Если заданы, имеют приоритет над commonAnnotations{}
persistence.runtimeConfig.sizeЗапрашиваемый объем хранилища PVC для тома конфигурации среды выполнения1Gi
commonNameSuffixИмя, которое будет добавлено в качестве суффикса к имени всех создаваемых ресурсов""
namespaceOverrideИмя пространства имен, в котором будет развернут Onlyoffice Docs. Если не задано, имя будет взято из .Release.Namespace""
commonLabelsОпределяет метки, которые будут дополнительно добавлены ко всем развернутым ресурсам. В качестве значения ключа также можно использовать tpl{}
commonAnnotationsОпределяет аннотации, которые будут дополнительно добавлены ко всем развернутым ресурсам. В качестве значения ключа также можно использовать tpl. Некоторые ресурсы могут переопределять указанные здесь значения своими{}
serviceAccount.createВключает создание ServiceAccountfalse
serviceAccount.nameИмя используемой учетной записи ServiceAccount. Если не задано и для serviceAccount.create задано значение true, имя будет взято из .Release.Name; если для serviceAccount.create задано значение false, будет использовано имя «default»""
serviceAccount.annotationsНабор аннотаций, добавляемых к ServiceAccount. Если задан, имеет приоритет над commonAnnotations{}
serviceAccount.automountServiceAccountTokenВключает автоматическое монтирование ServiceAccountToken в созданную учетную запись serviceAccount. Используется, только если для serviceAccount.create задано значение truetrue
license.existingSecretИмя существующего секрета, который содержит лицензию. Должен содержать ключ license.lic""
license.existingClaimИмя существующего PVC, в котором хранится лицензия. Должен содержать файл license.lic""
log.levelОпределяет тип и уровень важности регистрируемого события. Возможные значения: ALL, TRACE, DEBUG, INFO, WARN, ERROR, FATAL, MARK, OFFWARN
log.typeОпределяет формат регистрируемого события. Возможные значения: pattern, json, basic, coloured, messagePassThrough, dummypattern
log.patternОпределяет шаблон логов, если задано log.type=pattern[%d] [%p] %c - %.10000m
wopi.enabledОпределяет, включен ли WOPI. Если параметр включен, для клиента необходимо отключить атрибуты кэширования смонтированного каталога (PVC)false
wopi.keys.generationОпределяет, генерировать ли ключи API. Используется, если для wopi.enabled задано значение truetrue
wopi.keys.newKeysExistingSecretИмя существующего секрета, содержащего ключи WOPI. Должен содержать ключи WOPI_PRIVATE_KEY, WOPI_PUBLIC_KEY, WOPI_MODULUS_KEY и WOPI_EXPONENT_KEY. Если не задано, будут сгенерированы новые ключи и из них будет создан секрет""
wopi.keys.oldKeysExistingSecretИмя существующего секрета, содержащего старые ключи WOPI. Должен содержать ключи WOPI_PRIVATE_KEY_OLD, WOPI_PUBLIC_KEY_OLD, WOPI_MODULUS_KEY_OLD и WOPI_EXPONENT_KEY_OLD. Если не задано, будут сгенерированы новые ключи и из них будет создан секрет""
metrics.enabledОпределяет, включен ли StatsD для ONLYOFFICE Docsfalse
metrics.hostОпределяет хост, который прослушивает StatsDstatsd-exporter-prometheus-statsd-exporter
metrics.portОпределяет порт, который прослушивает StatsD8125
metrics.prefixОпределяет префикс метрик StatsD для серверных службds.
extraConf.configMapИмя ConfigMap, содержащего json-файл, который переопределяет значения по умолчанию""
extraConf.filenameИмя json-файла, который содержит пользовательские значения. Должно совпадать с именем ключа key в extraConf.ConfigMaplocal.json
extraThemes.configMapИмя ConfigMap, содержащего json-файл с темами интерфейса""
extraThemes.filenameИмя json-файла, который содержит пользовательские темы интерфейса. Должно совпадать с именем ключа key в extraThemes.configMapcustom-themes.json
podAntiAffinity.typeТипы антиаффинити подов. Допустимые значения: soft или hardsoft
podAntiAffinity.topologyKeyКлюч метки узла для сопоставленияkubernetes.io/hostname
podAntiAffinity.weightПриоритет при выборе узла. Значение в диапазоне от 1 до 100100
nodeSelectorМетки узлов для назначения подов. Каждая служба ONLYOFFICE Docs может переопределить указанные здесь значения своими{}
tolerationsДопуски (tolerations) для назначения подов. Каждая служба ONLYOFFICE Docs может переопределить указанные здесь значения своими[]
imagePullSecretsИмя секрета реестра образов контейнеров""
requestFilteringAgent.allowPrivateIPAddressОпределяет, разрешено ли подключение к частным IP-адресам. Параметры requestFilteringAgent используются, если JWT отключен: jwt.enabled=falsefalse
requestFilteringAgent.allowMetaIPAddressОпределяет, разрешено ли подключение к мета-адресамfalse
requestFilteringAgent.allowIPAddressListОпределяет список IP-адресов, с которых разрешено подключение. Эти значения имеют приоритет над requestFilteringAgent.denyIPAddressList[]
requestFilteringAgent.denyIPAddressListОпределяет список IP-адресов, с которых запрещено подключение[]
docservice.annotationsОпределяет аннотации, которые будут дополнительно добавлены к развертыванию (Deployment) Docservice. Если заданы, имеют приоритет над commonAnnotations{}
docservice.podAnnotationsНабор аннотаций, добавляемых к подам развертывания Docservicerollme: "{{ randAlphaNum 5 | quote }}"
docservice.replicasКоличество реплик Docservice. Игнорируется, если включен параметр docservice.autoscaling.enabled2
docservice.updateStrategy.typeТип стратегии обновления развертывания DocserviceRecreate
docservice.customPodAntiAffinityЗапрет размещения подов Docservice относительно других подов, содержащих указанные метки, на одном узле{}
docservice.podAffinityОпределяет правила Pod affinity для размещения подов Docservice по узлам относительно других подов{}
docservice.nodeAffinityОпределяет правила Node affinity для размещения подов Docservice по узлам{}
docservice.nodeSelectorМетки узлов для назначения подов Docservice. Если заданы, имеют приоритет над nodeSelector{}
docservice.tolerationsДопуски (tolerations) для назначения подов Docservice. Если заданы, имеют приоритет над tolerations[]
docservice.terminationGracePeriodSecondsВремя на корректное завершение работы, в течение которого под Docservice будет иметь статус Terminating30
docservice.hostAliasesДобавляет дополнительные записи в файл hosts в контейнерах Docservice и Proxy[]
docservice.initContainersОпределяет контейнеры, которые запускаются перед контейнерами docservice и proxy в поде развертывания Docservice. Например, контейнер, который меняет владельца PersistentVolume[]
docservice.image.repositoryРепозиторий образа контейнера Docservice*onlyoffice/docs-docservice-de
docservice.image.tagТег образа контейнера Docservice9.0.4-1
docservice.image.pullPolicyПолитика загрузки образа контейнера DocserviceIfNotPresent
docservice.containerSecurityContext.enabledВключает контекст безопасности для контейнера Docservicefalse
docservice.lifecycleHooksОпределяет хуки жизненного цикла контейнера Docservice. Используется для запуска событий в определенные моменты жизненного цикла контейнера{}
docservice.resources.requestsЗапрашиваемые ресурсы для контейнера Docservice{}
docservice.resources.limitsОграничения ресурсов для контейнера Docservice{}
docservice.extraEnvVarsМассив с дополнительными переменными среды для контейнера Docservice[]
docservice.extraVolumesМассив с дополнительными томами для пода Docservice[]
docservice.extraVolumeMountsМассив с дополнительными точками монтирования томов для контейнера Docservice[]
docservice.readinessProbe.enabledВключает readinessProbe для контейнера Docservicetrue
docservice.livenessProbe.enabledВключает livenessProbe для контейнера Docservicetrue
docservice.startupProbe.enabledВключает startupProbe для контейнера Docservicetrue
docservice.autoscaling.enabledВключает автомасштабирование развертывания Docservicefalse
docservice.autoscaling.annotationsОпределяет аннотации, которые будут дополнительно добавлены к HPA развертывания Docservice. Если заданы, имеют приоритет над commonAnnotations{}
docservice.autoscaling.minReplicasМинимальное количество реплик при автомасштабировании развертывания Docservice2
docservice.autoscaling.maxReplicasМаксимальное количество реплик при автомасштабировании развертывания Docservice4
docservice.autoscaling.targetCPU.enabledВключает автомасштабирование развертывания Docservice по проценту использования ЦПtrue
docservice.autoscaling.targetCPU.utilizationPercentageЦелевой процент использования ЦП при автомасштабировании развертывания Docservice70
docservice.autoscaling.targetMemory.enabledВключает автомасштабирование развертывания Docservice по проценту использования памятиfalse
docservice.autoscaling.targetMemory.utilizationPercentageЦелевой процент использования памяти при автомасштабировании развертывания Docservice70
docservice.autoscaling.customMetricsTypeПользовательские, дополнительные или внешние метрики автомасштабирования для развертывания Docservice[]
docservice.autoscaling.behaviorНастройка политик поведения масштабирования развертывания Docservice для полей scaleDown и scaleUp{}
proxy.accessLogОпределяет директиву формата access_log конфигурации nginxoff
proxy.logFormatОпределяет формат записей лога с помощью текста и различных переменных'$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'
proxy.gzipProxiedОпределяет директиву gzip_proxied конфигурации nginxoff
proxy.clientMaxBodySizeОпределяет директиву client_max_body_size конфигурации nginx100m
proxy.workerConnectionsОпределяет директиву worker_connections конфигурации nginx4096
proxy.secureLinkSecretОпределяет секрет для директивы secure_link_md5 конфигурации nginx. Если значение пустое, будет сгенерировано случайное значение, которое затем будет использоваться при обновлении. Если значение задано, будет использовано оно""
proxy.secureLinkExistingSecretИмя существующего секрета, используемого для secure_link. Если задано, имеет приоритет над proxy.secureLinkSecret""
proxy.infoAllowedIPОпределяет IP-адреса для доступа к информационной странице[]
proxy.infoAllowedUserОпределяет имя пользователя для доступа к информационной странице. Если не задано, базовая аутентификация Nginx не будет применяться для доступа к информационной странице. Подробнее смотрите здесь""
proxy.infoAllowedPasswordОпределяет пароль пользователя для доступа к информационной странице. Используется, если задан proxy.infoAllowedUser. Если значение пустое, будет сгенерировано случайное значение, которое затем будет использоваться при обновлении. Если значение задано, будет использовано оно""
proxy.infoAllowedSecretKeyNameИмя ключа, который содержит пароль пользователя для аутентификации на информационной странице. Используется, если задан proxy.infoAllowedUserinfo-auth-password
proxy.infoAllowedExistingSecretИмя существующего секрета, используемого для пароля аутентификации на информационной странице. Используется, если задан proxy.infoAllowedUser. Должен содержать ключ, указанный в proxy.infoAllowedSecretKeyName. Если задано, имеет приоритет над proxy.infoAllowedPassword""
proxy.welcomePage.enabledОпределяет, будет ли отображаться страница приветствияtrue
proxy.image.repositoryРепозиторий образа контейнера Docservice Proxy*onlyoffice/docs-proxy-de
proxy.image.tagТег образа контейнера Docservice Proxy9.0.4-1
proxy.image.pullPolicyПолитика загрузки образа контейнера Docservice ProxyIfNotPresent
proxy.containerSecurityContext.enabledВключает контекст безопасности для контейнера Proxyfalse
proxy.lifecycleHooksОпределяет хуки жизненного цикла контейнера Proxy. Используется для запуска событий в определенные моменты жизненного цикла контейнера{}
proxy.resources.requestsЗапрашиваемые ресурсы для контейнера Proxy{}
proxy.resources.limitsОграничения ресурсов для контейнера Proxy{}
proxy.extraEnvVarsМассив с дополнительными переменными среды для контейнера Proxy[]
proxy.extraVolumeMountsМассив с дополнительными точками монтирования томов для контейнера Proxy[]
proxy.readinessProbe.enabledВключает readinessProbe для контейнера Proxytrue
proxy.livenessProbe.enabledВключает livenessProbe для контейнера Proxytrue
proxy.startupProbe.enabledВключает startupProbe для контейнера Proxytrue
converter.annotationsОпределяет аннотации, которые будут дополнительно добавлены к развертыванию (Deployment) Converter. Если заданы, имеют приоритет над commonAnnotations{}
converter.podAnnotationsНабор аннотаций, добавляемых к подам развертывания Converterrollme: "{{ randAlphaNum 5 | quote }}"
converter.replicasКоличество реплик Converter. Игнорируется, если включен параметр converter.autoscaling.enabled2
converter.updateStrategy.typeТип стратегии обновления развертывания ConverterRecreate
converter.customPodAntiAffinityЗапрет размещения подов Converter относительно других подов, содержащих указанные метки, на одном узле{}
converter.podAffinityОпределяет правила Pod affinity для размещения подов Converter по узлам относительно других подов{}
converter.nodeAffinityОпределяет правила Node affinity для размещения подов Converter по узлам{}
converter.nodeSelectorМетки узлов для назначения подов Converter. Если заданы, имеют приоритет над nodeSelector{}
converter.tolerationsДопуски (tolerations) для назначения подов Converter. Если заданы, имеют приоритет над tolerations[]
converter.terminationGracePeriodSecondsВремя на корректное завершение работы, в течение которого под Converter будет иметь статус Terminating30
converter.hostAliasesДобавляет дополнительные записи в файл hosts в контейнере Converter[]
converter.initContainersОпределяет контейнеры, которые запускаются перед контейнером Converter в поде развертывания Converter. Например, контейнер, который меняет владельца PersistentVolume[]
converter.image.repositoryРепозиторий образа контейнера Converter*onlyoffice/docs-converter-de
converter.image.tagТег образа контейнера Converter9.0.4-1
converter.image.pullPolicyПолитика загрузки образа контейнера ConverterIfNotPresent
converter.containerSecurityContext.enabledВключает контекст безопасности для контейнера Converterfalse
converter.lifecycleHooksОпределяет хуки жизненного цикла контейнера Converter. Используется для запуска событий в определенные моменты жизненного цикла контейнера{}
converter.resources.requestsЗапрашиваемые ресурсы для контейнера Converter{}
converter.resources.limitsОграничения ресурсов для контейнера Converter{}
converter.extraEnvVarsМассив с дополнительными переменными среды для контейнера Converter[]
converter.extraVolumesМассив с дополнительными томами для пода Converter[]
converter.extraVolumeMountsМассив с дополнительными точками монтирования томов для контейнера Converter[]
converter.autoscaling.enabledВключает автомасштабирование развертывания Converterfalse
converter.autoscaling.annotationsОпределяет аннотации, которые будут дополнительно добавлены к HPA развертывания Converter. Если заданы, имеют приоритет над commonAnnotations{}
converter.autoscaling.minReplicasМинимальное количество реплик при автомасштабировании развертывания Converter2
converter.autoscaling.maxReplicasМаксимальное количество реплик при автомасштабировании развертывания Converter16
converter.autoscaling.targetCPU.enabledВключает автомасштабирование развертывания Converter по проценту использования ЦПtrue
converter.autoscaling.targetCPU.utilizationPercentageЦелевой процент использования ЦП при автомасштабировании развертывания Converter70
converter.autoscaling.targetMemory.enabledВключает автомасштабирование развертывания Converter по проценту использования памятиfalse
converter.autoscaling.targetMemory.utilizationPercentageЦелевой процент использования памяти при автомасштабировании развертывания Converter70
converter.autoscaling.customMetricsTypeПользовательские, дополнительные или внешние метрики автомасштабирования для развертывания Converter[]
converter.autoscaling.behaviorНастройка политик поведения масштабирования развертывания Converter для полей scaleDown и scaleUp{}
example.enabledВключает установку Examplefalse
example.annotationsОпределяет аннотации, которые будут дополнительно добавлены к StatefulSet Example. Если заданы, имеют приоритет над commonAnnotations{}
example.podAnnotationsНабор аннотаций, добавляемых к поду Examplerollme: "{{ randAlphaNum 5 | quote }}"
example.updateStrategy.typeТип стратегии обновления StatefulSet ExampleRollingUpdate
example.customPodAntiAffinityЗапрет размещения пода Example относительно других подов, содержащих указанные метки, на одном узле{}
example.podAffinityОпределяет правила Pod affinity для размещения пода Example по узлам относительно других подов{}
example.nodeAffinityОпределяет правила Node affinity для размещения пода Example по узлам{}
example.nodeSelectorМетки узлов для назначения подов Example. Если заданы, имеют приоритет над nodeSelector{}
example.tolerationsДопуски (tolerations) для назначения подов Example. Если заданы, имеют приоритет над tolerations[]
example.terminationGracePeriodSecondsВремя на корректное завершение работы, в течение которого под Example будет иметь статус Terminating30
example.hostAliasesДобавляет дополнительные записи в файл hosts в контейнере Example[]
example.initContainersОпределяет контейнеры, которые запускаются перед контейнером Example в поде[]
example.image.repositoryИмя образа контейнера Exampleonlyoffice/docs-example
example.image.tagТег образа контейнера Example9.0.4-1
example.image.pullPolicyПолитика загрузки образа контейнера ExampleIfNotPresent
example.containerSecurityContext.enabledВключает контекст безопасности для контейнера Examplefalse
example.dsUrlВнешний адрес ONLYOFFICE Docs. Его следует изменять, только если необходимо проверить работу конвертации в Example (например, http://<documentserver-address>/)/
example.resources.requestsЗапрашиваемые ресурсы для контейнера Example{}
example.resources.limitsОграничения ресурсов для контейнера Example{}
example.extraEnvVarsМассив с дополнительными переменными среды для контейнера Example[]
example.extraConf.configMapИмя ConfigMap, содержащего json-файл, который переопределяет значения по умолчанию. Пример создания смотрите здесь""
example.extraConf.filenameИмя json-файла, который содержит пользовательские значения. Должно совпадать с именем ключа key в example.extraConf.ConfigMaplocal.json
example.extraVolumesМассив с дополнительными томами для пода Example[]
example.extraVolumeMountsМассив с дополнительными точками монтирования томов для контейнера Example[]
jwt.enabledУправляет включением валидации посредством JSON веб-токена в ONLYOFFICE Docs. Общий для входящих и исходящих запросовtrue
jwt.secretОпределяет секретный ключ для валидации JSON веб-токена в запросе к ONLYOFFICE Docs. Общий для входящих и исходящих запросов. Если значение пустое, будет сгенерировано случайное значение, которое затем будет использоваться при обновлении. Если значение задано, будет использовано оно""
jwt.headerОпределяет HTTP-заголовок, который будет использоваться для отправки JSON веб-токена. Общий для входящих и исходящих запросовAuthorization
jwt.inBodyУправляет включением валидации посредством токена в теле запроса к ONLYOFFICE Docsfalse
jwt.inboxПараметры валидации JSON веб-токена только для входящих запросов. Если не указаны, используются значения параметров общего jwt{}
jwt.outboxПараметры валидации JSON веб-токена только для исходящих запросов. Если не указаны, используются значения параметров общего jwt{}
jwt.existingSecretИмя существующего секрета, содержащего переменные для jwt. Если не указано, будет создан секрет с именем jwt""
service.existingИмя существующей службы для ONLYOFFICE Docs. Если не указано, будет создана служба с именем documentserver""
service.annotationsНабор аннотаций, добавляемых к службе ONLYOFFICE Docs. Если задан, имеет приоритет над commonAnnotations{}
service.typeТип службы ONLYOFFICE DocsClusterIP
service.portПорт службы ONLYOFFICE Docs8888
service.sessionAffinitySession Affinity для службы ONLYOFFICE Docs. Если не задано, по умолчанию будет установлено значение None""
service.sessionAffinityConfigКонфигурация Session Affinity для службы ONLYOFFICE Docs. Используется, если задан service.sessionAffinity{}
ingress.enabledВключает создание ingress для ONLYOFFICE Docsfalse
ingress.annotationsНабор аннотаций, добавляемых к Ingress. Если задан, имеет приоритет над commonAnnotationsnginx.ingress.kubernetes.io/proxy-body-size: 100m
ingress.ingressClassNameИспользуется для ссылки на IngressClass, который должен использоваться для реализации этого Ingressnginx
ingress.controllerNameИспользуется для различения контроллеров с одинаковым IngressClassName, но от разных поставщиковingress-nginx
ingress.hostИмя хоста Ingress для ingress ONLYOFFICE Docs""
ingress.tenantsИмена хостов Ingress, если необходимо использовать более одного имени. Например, для мультитенантности. Если заданы, имеют приоритет над ingress.host. Если для ingress.ssl.enabled задано значение true, предполагается, что сертификат для всех указанных доменов хранится в секрете ingress.ssl.secret[]
ingress.ssl.enabledВключает SSL для ingress ONLYOFFICE Docsfalse
ingress.ssl.secretИмя секрета для SSL, монтируемого в Ingresstls
ingress.pathУказывает путь, по которому будет доступен ONLYOFFICE Docs/
ingress.pathTypeУказывает тип пути для ресурса ingress ONLYOFFICE Docs. Допустимые значения: Exact, Prefix или ImplementationSpecificImplementationSpecific
ingress.letsencrypt.enabledВключает создание запроса сертификата в Let's Encrypt. Используется, если для ingress.enabled задано значение truefalse
ingress.letsencrypt.clusterIssuerNameИмя ClusterIssuerletsencrypt-prod
ingress.letsencrypt.emailВаш адрес электронной почты, используемый для регистрации ACME""
ingress.letsencrypt.serverАдрес сервера Let's Encrypt, на который будут отправляться запросы сертификатовhttps://acme-v02.api.letsencrypt.org/directory
ingress.letsencrypt.secretNameИмя секрета, используемого для хранения закрытого ключа учетной записи ACMEletsencrypt-prod-private-key
openshift.route.enabledВключает создание OpenShift Route для ONLYOFFICE Docsfalse
openshift.route.annotationsНабор аннотаций, добавляемых к OpenShift Route. Если задан, имеет приоритет над commonAnnotations{}
openshift.route.hostИмя хоста OpenShift Route для маршрута ONLYOFFICE Docs""
openshift.route.pathУказывает путь, по которому будет доступен ONLYOFFICE Docs/
openshift.route.wildcardPolicyПолитика обработки поддоменов с подстановочными знаками в OpenShift Route. Допустимые значения: None, SubdomainNone
grafana.enabledВключает установку ресурсов, необходимых для визуализации метрик в Grafanafalse
grafana.namespaceИмя пространства имен, в котором будут развернуты компоненты RBAC и ресурсы Grafana. Если не задано, имя будет взято из namespaceOverride, если задано, или из .Release.Namespace""
grafana.ingress.enabledВключает создание ingress для Grafana. Используется, если для grafana.enabled задано значение true и вы хотите использовать Nginx Ingress для доступа к Grafanafalse
grafana.ingress.annotationsНабор аннотаций, добавляемых к Ingress Grafana. Если задан, имеет приоритет над commonAnnotationsnginx.ingress.kubernetes.io/proxy-body-size: 100m
grafana.dashboard.enabledВключает установку готовых панелей мониторинга Grafana. Используется, если для grafana.enabled задано значение truefalse
podSecurityContext.enabledВключает контекст безопасности для подовfalse
podSecurityContext.converter.fsGroupОпределяет идентификатор группы, на который меняются владелец и права доступа для всех файлов в томах при монтировании в под Converter101
podSecurityContext.docservice.fsGroupОпределяет идентификатор группы, на который меняются владелец и права доступа для всех файлов в томах при монтировании в под Docservice101
podSecurityContext.jobs.fsGroupОпределяет идентификатор группы, на который меняются владелец и права доступа для всех файлов в томах при монтировании в поды, создаваемые заданиями (Jobs)101
podSecurityContext.example.fsGroupОпределяет идентификатор группы, на который меняются владелец и права доступа для всех файлов в томах при монтировании в под Example1001
podSecurityContext.tests.fsGroupОпределяет идентификатор группы, на который меняются владелец и права доступа для всех файлов в томах при монтировании в тестовый под101
webProxy.enabledУказывает, используется ли в вашей сети веб-прокси для доступа подов кластера k8s в Интернетfalse
webProxy.httpАдрес веб-прокси для трафика HTTPhttp://proxy.example.com
webProxy.httpsАдрес веб-прокси для трафика HTTPShttps://proxy.example.com
webProxy.noProxyШаблоны IP-адресов, имен служб k8s или доменных имен, которые не должны использовать веб-проксиlocalhost,127.0.0.1,docservice
upgrade.job.enabledВключает выполнение задания pre-upgrade перед обновлением ONLYOFFICE Docstrue
upgrade.job.annotationsОпределяет аннотации, которые будут дополнительно добавлены к заданию (Job) pre-upgrade. Если заданы, имеют приоритет над commonAnnotations{}
upgrade.job.podAnnotationsНабор аннотаций, добавляемых к поду pre-upgrade{}
upgrade.job.customPodAntiAffinityЗапрет размещения пода задания pre-upgrade относительно других подов, содержащих указанные метки, на одном узле{}
upgrade.job.podAffinityОпределяет правила Pod affinity для размещения пода задания pre-upgrade по узлам относительно других подов{}
upgrade.job.nodeAffinityОпределяет правила Node affinity для размещения пода задания pre-upgrade по узлам{}
upgrade.job.nodeSelectorМетки узлов для назначения пода задания pre-upgrade. Если заданы, имеют приоритет над nodeSelector{}
upgrade.job.tolerationsДопуски (tolerations) для назначения пода задания pre-upgrade. Если заданы, имеют приоритет над tolerations[]
upgrade.job.initContainersОпределяет контейнеры, которые запускаются перед контейнером pre-upgrade в поде[]
upgrade.job.image.repositoryРепозиторий образа задания upgradeonlyoffice/docs-utils
upgrade.job.image.tagТег образа задания upgrade9.0.4-1
upgrade.job.image.pullPolicyПолитика загрузки образа задания upgradeIfNotPresent
upgrade.job.containerSecurityContext.enabledВключает контекст безопасности для контейнера pre-upgradefalse
upgrade.job.resources.requestsЗапрашиваемые ресурсы для контейнера задания pre-upgrade{}
upgrade.job.resources.limitsОграничения ресурсов для контейнера задания pre-upgrade{}
upgrade.existingConfigmap.tblRemove.nameИмя существующего ConfigMap, который содержит sql-файл для удаления таблиц из базы данныхremove-db-scripts
upgrade.existingConfigmap.tblRemove.keyNameИмя sql-файла, содержащего инструкции по удалению таблиц из базы данных. Должно совпадать с именем ключа key в upgrade.existingConfigmap.tblRemove.nameremovetbl.sql
upgrade.existingConfigmap.tblCreate.nameИмя существующего ConfigMap, который содержит sql-файл для создания таблиц в базе данныхinit-db-scripts
upgrade.existingConfigmap.tblCreate.keyNameИмя sql-файла, содержащего инструкции по созданию таблиц в базе данных. Должно совпадать с именем ключа key в upgrade.existingConfigmap.tblCreate.namecreatedb.sql
upgrade.existingConfigmap.dsStopИмя существующего ConfigMap, который содержит скрипт обновления ONLYOFFICE Docs. Если задано, четыре предыдущих параметра игнорируются. Должен содержать ключ stop.sh""
rollback.job.enabledВключает выполнение задания pre-rollback перед откатом ONLYOFFICE Docstrue
rollback.job.annotationsОпределяет аннотации, которые будут дополнительно добавлены к заданию (Job) pre-rollback. Если заданы, имеют приоритет над commonAnnotations{}
rollback.job.podAnnotationsНабор аннотаций, добавляемых к поду pre-rollback{}
rollback.job.customPodAntiAffinityЗапрет размещения пода задания pre-rollback относительно других подов, содержащих указанные метки, на одном узле{}
rollback.job.podAffinityОпределяет правила Pod affinity для размещения пода задания pre-rollback по узлам относительно других подов{}
rollback.job.nodeAffinityОпределяет правила Node affinity для размещения пода задания pre-rollback по узлам{}
rollback.job.nodeSelectorМетки узлов для назначения пода задания pre-rollback. Если заданы, имеют приоритет над nodeSelector{}
rollback.job.tolerationsДопуски (tolerations) для назначения пода задания pre-rollback. Если заданы, имеют приоритет над tolerations[]
rollback.job.initContainersОпределяет контейнеры, которые запускаются перед контейнером pre-rollback в поде[]
rollback.job.image.repositoryРепозиторий образа задания rollbackonlyoffice/docs-utils
rollback.job.image.tagТег образа задания rollback9.0.4-1
rollback.job.image.pullPolicyПолитика загрузки образа задания rollbackIfNotPresent
rollback.job.containerSecurityContext.enabledВключает контекст безопасности для контейнера pre-rollbackfalse
rollback.job.resources.requestsЗапрашиваемые ресурсы для контейнера задания rollback{}
rollback.job.resources.limitsОграничения ресурсов для контейнера задания rollback{}
rollback.existingConfigmap.tblRemove.nameИмя существующего ConfigMap, который содержит sql-файл для удаления таблиц из базы данныхremove-db-scripts
rollback.existingConfigmap.tblRemove.keyNameИмя sql-файла, содержащего инструкции по удалению таблиц из базы данных. Должно совпадать с именем ключа key в rollback.existingConfigmap.tblRemove.nameremovetbl.sql
rollback.existingConfigmap.tblCreate.nameИмя существующего ConfigMap, который содержит sql-файл для создания таблиц в базе данныхinit-db-scripts
rollback.existingConfigmap.tblCreate.keyNameИмя sql-файла, содержащего инструкции по созданию таблиц в базе данных. Должно совпадать с именем ключа key в rollback.existingConfigmap.tblCreate.namecreatedb.sql
rollback.existingConfigmap.dsStopИмя существующего ConfigMap, который содержит скрипт отката ONLYOFFICE Docs. Если задано, четыре предыдущих параметра игнорируются. Должен содержать ключ stop.sh""
delete.job.enabledВключает выполнение задания pre-delete перед удалением ONLYOFFICE Docstrue
delete.job.annotationsОпределяет аннотации, которые будут дополнительно добавлены к заданию (Job) pre-delete. Если заданы, имеют приоритет над commonAnnotations{}
delete.job.podAnnotationsНабор аннотаций, добавляемых к поду pre-delete{}
delete.job.customPodAntiAffinityЗапрет размещения пода задания pre-delete относительно других подов, содержащих указанные метки, на одном узле{}
delete.job.podAffinityОпределяет правила Pod affinity для размещения пода задания pre-delete по узлам относительно других подов{}
delete.job.nodeAffinityОпределяет правила Node affinity для размещения пода задания pre-delete по узлам{}
delete.job.nodeSelectorМетки узлов для назначения пода задания pre-delete. Если заданы, имеют приоритет над nodeSelector{}
delete.job.tolerationsДопуски (tolerations) для назначения пода задания pre-delete. Если заданы, имеют приоритет над tolerations[]
delete.job.initContainersОпределяет контейнеры, которые запускаются перед контейнером pre-delete в поде[]
delete.job.image.repositoryРепозиторий образа задания deleteonlyoffice/docs-utils
delete.job.image.tagТег образа задания delete9.0.4-1
delete.job.image.pullPolicyПолитика загрузки образа задания deleteIfNotPresent
delete.job.containerSecurityContext.enabledВключает контекст безопасности для контейнера pre-deletefalse
delete.job.resources.requestsЗапрашиваемые ресурсы для контейнера задания delete{}
delete.job.resources.limitsОграничения ресурсов для контейнера задания delete{}
delete.existingConfigmap.tblRemove.nameИмя существующего ConfigMap, который содержит sql-файл для удаления таблиц из базы данныхremove-db-scripts
delete.existingConfigmap.tblRemove.keyNameИмя sql-файла, содержащего инструкции по удалению таблиц из базы данных. Должно совпадать с именем ключа key в delete.existingConfigmap.tblRemove.nameremovetbl.sql
delete.existingConfigmap.dsStopИмя существующего ConfigMap, который содержит скрипт удаления ONLYOFFICE Docs. Если задано, два предыдущих параметра игнорируются. Должен содержать ключ stop.sh""
install.job.enabledВключает выполнение задания pre-install перед установкой ONLYOFFICE Docstrue
install.job.annotationsОпределяет аннотации, которые будут дополнительно добавлены к заданию (Job) pre-install. Если заданы, имеют приоритет над commonAnnotations{}
install.job.podAnnotationsНабор аннотаций, добавляемых к поду pre-install{}
install.job.customPodAntiAffinityЗапрет размещения пода задания pre-install относительно других подов, содержащих указанные метки, на одном узле{}
install.job.podAffinityОпределяет правила Pod affinity для размещения пода задания pre-install по узлам относительно других подов{}
install.job.nodeAffinityОпределяет правила Node affinity для размещения пода задания pre-install по узлам{}
install.job.nodeSelectorМетки узлов для назначения пода задания pre-install. Если заданы, имеют приоритет над nodeSelector{}
install.job.tolerationsДопуски (tolerations) для назначения пода задания pre-install. Если заданы, имеют приоритет над tolerations[]
install.job.initContainersОпределяет контейнеры, которые запускаются перед контейнером pre-install в поде[]
install.job.image.repositoryРепозиторий образа ONLYOFFICE Docs задания pre-installonlyoffice/docs-utils
install.job.image.tagТег образа ONLYOFFICE Docs задания pre-install9.0.4-1
install.job.image.pullPolicyПолитика загрузки образа ONLYOFFICE Docs задания pre-installIfNotPresent
install.job.containerSecurityContext.enabledВключает контекст безопасности для контейнера pre-installfalse
install.job.resources.requestsЗапрашиваемые ресурсы для контейнера задания pre-install{}
install.job.resources.limitsОграничения ресурсов для контейнера задания pre-install{}
install.existingConfigmap.tblCreate.nameИмя существующего ConfigMap, который содержит sql-файл для создания таблиц в базе данныхinit-db-scripts
install.existingConfigmap.tblCreate.keyNameИмя sql-файла, содержащего инструкции по созданию таблиц в базе данных. Должно совпадать с именем ключа key в install.existingConfigmap.tblCreate.namecreatedb.sql
install.existingConfigmap.initdbИмя существующего ConfigMap, который содержит скрипт initdb. Если задано, два предыдущих параметра игнорируются. Должен содержать ключ initdb.sh""
clearCache.job.enabledВключает выполнение задания Clear Cache после обновления ONLYOFFICE Docs. Задание Clear Cache использует хук post-upgrade, который выполняется после обновления всех ресурсов в Kubernetes. Оно очищает каталог Cachetrue
clearCache.job.annotationsОпределяет аннотации, которые будут дополнительно добавлены к заданию (Job) Clear Cache. Если заданы, имеют приоритет над commonAnnotations{}
clearCache.job.podAnnotationsНабор аннотаций, добавляемых к поду Clear Cache{}
clearCache.job.customPodAntiAffinityЗапрет размещения пода задания Clear Cache относительно других подов, содержащих указанные метки, на одном узле{}
clearCache.job.podAffinityОпределяет правила Pod affinity для размещения пода задания Clear Cache по узлам относительно других подов{}
clearCache.job.nodeAffinityОпределяет правила Node affinity для размещения пода задания Clear Cache по узлам{}
clearCache.job.nodeSelectorМетки узлов для назначения пода задания Clear Cache. Если заданы, имеют приоритет над nodeSelector{}
clearCache.job.tolerationsДопуски (tolerations) для назначения пода задания Clear Cache. Если заданы, имеют приоритет над tolerations[]
clearCache.job.initContainersОпределяет контейнеры, которые запускаются перед контейнером Clear Cache в поде[]
clearCache.job.image.repositoryРепозиторий образа ONLYOFFICE Docs задания Clear Cacheonlyoffice/docs-utils
clearCache.job.image.tagТег образа ONLYOFFICE Docs задания Clear Cache9.0.4-1
clearCache.job.image.pullPolicyПолитика загрузки образа ONLYOFFICE Docs задания Clear CacheIfNotPresent
clearCache.job.containerSecurityContext.enabledВключает контекст безопасности для контейнера Clear Cachefalse
clearCache.job.resources.requestsЗапрашиваемые ресурсы для контейнера задания Clear Cache{}
clearCache.job.resources.limitsОграничения ресурсов для контейнера задания Clear Cache{}
clearCache.existingConfigmap.nameИмя существующего ConfigMap, который содержит пользовательский скрипт очистки каталога Cache. Если задано, ConfigMap по умолчанию не будет создан""
clearCache.existingConfigmap.keyNameИмя скрипта, содержащего инструкции по очистке каталога Cache. Должно совпадать с именем ключа key в clearCache.existingConfigmap.name, если используется пользовательский скриптclearCache.sh
grafanaDashboard.job.annotationsОпределяет аннотации, которые будут дополнительно добавлены к заданию (Job) Grafana Dashboard. Если заданы, имеют приоритет над commonAnnotations{}
grafanaDashboard.job.podAnnotationsНабор аннотаций, добавляемых к поду Grafana Dashboard{}
grafanaDashboard.job.customPodAntiAffinityЗапрет размещения пода задания Grafana Dashboard относительно других подов, содержащих указанные метки, на одном узле{}
grafanaDashboard.job.podAffinityОпределяет правила Pod affinity для размещения пода задания Grafana Dashboard по узлам относительно других подов{}
grafanaDashboard.job.nodeAffinityОпределяет правила Node affinity для размещения пода задания Grafana Dashboard по узлам{}
grafanaDashboard.job.nodeSelectorМетки узлов для назначения пода задания Grafana Dashboard. Если заданы, имеют приоритет над nodeSelector{}
grafanaDashboard.job.tolerationsДопуски (tolerations) для назначения пода задания Grafana Dashboard. Если заданы, имеют приоритет над tolerations[]
grafanaDashboard.job.initContainersОпределяет контейнеры, которые запускаются перед контейнером Grafana Dashboard в поде[]
grafanaDashboard.job.image.repositoryРепозиторий образа ONLYOFFICE Docs задания Grafana Dashboardonlyoffice/docs-utils
grafanaDashboard.job.image.tagТег образа ONLYOFFICE Docs задания Grafana Dashboard9.0.4-1
grafanaDashboard.job.image.pullPolicyПолитика загрузки образа ONLYOFFICE Docs задания Grafana DashboardIfNotPresent
grafanaDashboard.job.containerSecurityContext.enabledВключает контекст безопасности для контейнера Grafana Dashboardfalse
grafanaDashboard.job.resources.requestsЗапрашиваемые ресурсы для контейнера задания Grafana Dashboard{}
grafanaDashboard.job.resources.limitsОграничения ресурсов для контейнера задания Grafana Dashboard{}
wopiKeysGeneration.job.annotationsОпределяет аннотации, которые будут дополнительно добавлены к заданию (Job) Wopi Keys Generation. Если заданы, имеют приоритет над commonAnnotations{}
wopiKeysGeneration.job.podAnnotationsНабор аннотаций, добавляемых к поду Wopi Keys Generation{}
wopiKeysGeneration.job.customPodAntiAffinityЗапрет размещения пода задания Wopi Keys Generation относительно других подов, содержащих указанные метки, на одном узле{}
wopiKeysGeneration.job.podAffinityОпределяет правила Pod affinity для размещения пода задания Wopi Keys Generation по узлам относительно других подов{}
wopiKeysGeneration.job.nodeAffinityОпределяет правила Node affinity для размещения пода задания Wopi Keys Generation по узлам{}
wopiKeysGeneration.job.nodeSelectorМетки узлов для назначения пода задания Wopi Keys Generation. Если заданы, имеют приоритет над nodeSelector{}
wopiKeysGeneration.job.tolerationsДопуски (tolerations) для назначения пода задания Wopi Keys Generation. Если заданы, имеют приоритет над tolerations[]
wopiKeysGeneration.job.initContainersОпределяет контейнеры, которые запускаются перед контейнером Wopi Keys Generation в поде[]
wopiKeysGeneration.job.image.repositoryРепозиторий образа ONLYOFFICE Docs задания Wopi Keys Generationonlyoffice/docs-utils
wopiKeysGeneration.job.image.tagТег образа ONLYOFFICE Docs задания Wopi Keys Generation9.0.4-1
wopiKeysGeneration.job.image.pullPolicyПолитика загрузки образа ONLYOFFICE Docs задания Wopi Keys GenerationIfNotPresent
wopiKeysGeneration.job.containerSecurityContext.enabledВключает контекст безопасности для контейнера Wopi Keys Generationfalse
wopiKeysGeneration.job.resources.requestsЗапрашиваемые ресурсы для контейнера задания Wopi Keys Generation{}
wopiKeysGeneration.job.resources.limitsОграничения ресурсов для контейнера задания Wopi Keys Generation{}
wopiKeysDeletion.job.enabledВключает выполнение задания Wopi Keys Deletion перед удалением ONLYOFFICE Docs. Оно удаляет автоматически сгенерированные секреты WOPI. Выполняется, если для wopi.enabled, wopi.keys.generation и wopiKeysDeletion.job.enabled задано значение truetrue
wopiKeysDeletion.job.annotationsОпределяет аннотации, которые будут дополнительно добавлены к заданию (Job) Wopi Keys Deletion. Если заданы, имеют приоритет над commonAnnotations{}
wopiKeysDeletion.job.podAnnotationsНабор аннотаций, добавляемых к поду Wopi Keys Deletion{}
wopiKeysDeletion.job.customPodAntiAffinityЗапрет размещения пода задания Wopi Keys Deletion относительно других подов, содержащих указанные метки, на одном узле{}
wopiKeysDeletion.job.podAffinityОпределяет правила Pod affinity для размещения пода задания Wopi Keys Deletion по узлам относительно других подов{}
wopiKeysDeletion.job.nodeAffinityОпределяет правила Node affinity для размещения пода задания Wopi Keys Deletion по узлам{}
wopiKeysDeletion.job.nodeSelectorМетки узлов для назначения пода задания Wopi Keys Deletion. Если заданы, имеют приоритет над nodeSelector{}
wopiKeysDeletion.job.tolerationsДопуски (tolerations) для назначения пода задания Wopi Keys Deletion. Если заданы, имеют приоритет над tolerations[]
wopiKeysDeletion.job.initContainersОпределяет контейнеры, которые запускаются перед контейнером Wopi Keys Deletion в поде[]
wopiKeysDeletion.job.image.repositoryРепозиторий образа ONLYOFFICE Docs задания Wopi Keys Deletiononlyoffice/docs-utils
wopiKeysDeletion.job.image.tagТег образа ONLYOFFICE Docs задания Wopi Keys Deletion9.0.4-1
wopiKeysDeletion.job.image.pullPolicyПолитика загрузки образа ONLYOFFICE Docs задания Wopi Keys DeletionIfNotPresent
wopiKeysDeletion.job.containerSecurityContext.enabledВключает контекст безопасности для контейнера Wopi Keys Deletionfalse
wopiKeysDeletion.job.resources.requestsЗапрашиваемые ресурсы для контейнера задания Wopi Keys Deletion{}
wopiKeysDeletion.job.resources.limitsОграничения ресурсов для контейнера задания Wopi Keys Deletion{}
tests.enabledВключает создание ресурсов, необходимых для тестирования запуска ONLYOFFICE Docs и доступности подключенных зависимостей. Эти ресурсы будут использоваться при выполнении команды helm testtrue
tests.annotationsОпределяет аннотации, которые будут дополнительно добавлены к тестовому поду. Если заданы, имеют приоритет над commonAnnotations{}
tests.customPodAntiAffinityЗапрет размещения тестового пода относительно других подов, содержащих указанные метки, на одном узле{}
tests.podAffinityОпределяет правила Pod affinity для размещения тестового пода по узлам относительно других подов{}
tests.nodeAffinityОпределяет правила Node affinity для размещения тестового пода по узлам{}
tests.nodeSelectorМетки узлов для назначения тестового пода. Если заданы, имеют приоритет над nodeSelector{}
tests.tolerationsДопуски (tolerations) для назначения тестового пода. Если заданы, имеют приоритет над tolerations[]
tests.initContainersОпределяет контейнеры, которые запускаются перед тестовым контейнером в поде[]
tests.image.repositoryИмя образа тестового контейнераonlyoffice/docs-utils
tests.image.tagТег образа тестового контейнера9.0.4-1
tests.image.pullPolicyПолитика загрузки образа тестового контейнераIfNotPresent
tests.containerSecurityContext.enabledВключает контекст безопасности для тестового контейнераfalse
tests.resources.requestsЗапрашиваемые ресурсы для тестового контейнера{}
tests.resources.limitsОграничения ресурсов для тестового контейнера{}
  • *Примечание: в значении репозитория образа указан префикс -de, который обозначает тип решения. Возможные варианты:

    • -de. Для коммерческой версии Developer Edition
    • -ee. Для коммерческой версии Enterprise Edition

    Значение этого параметра по умолчанию относится к ONLYOFFICE Document Server Developer Edition. Чтобы узнать больше об этой версии и сравнить ее с другими версиями, обратитесь к сравнительной таблице на этой странице.

5. Подробности настройки и установки​

  1. Развертывание примера (необязательно)

    Важно

    Это необязательный шаг. Его можно полностью пропустить, если вам не нужно развертывать пример.

    Чтобы развернуть пример, задайте для параметра example.enabled значение true:

    $ helm install documentserver onlyoffice/docs --set example.enabled=true
  2. Развертывание метрик (необязательно)

    Важно

    Это необязательный шаг. Его можно полностью пропустить, если вам не нужно развертывать метрики.

    Чтобы развернуть метрики, задайте для metrics.enabled значение true:

    $ helm install documentserver onlyoffice/docs --set metrics.enabled=true

    Если вы хотите использовать Grafana для визуализации метрик, задайте для grafana.enabled значение true. Если вы хотите использовать Nginx Ingress для доступа к Grafana, задайте для grafana.ingress.enabled значение true:

    $ helm install documentserver onlyoffice/docs --set grafana.enabled=true --set grafana.ingress.enabled=true
  3. Публикация ONLYOFFICE Docs

    1. Публикация ONLYOFFICE Docs через Service (только HTTP)

      примечание

      Пропустите этот шаг, если вы собираетесь публиковать ONLYOFFICE Docs по протоколу HTTPS.

      При этом типе публикации создается балансировщик нагрузки для доступа к ONLYOFFICE Docs. Используйте этот тип, если вы используете внешнее завершение TLS и в кластере k8s нет другого веб-приложения.

      Чтобы опубликовать ONLYOFFICE Docs через службу, задайте для параметра service.type значение LoadBalancer:

      $ helm install documentserver onlyoffice/docs --set service.type=LoadBalancer,service.port=80

      Выполните следующую команду, чтобы получить IP-адрес службы documentserver:

      $ kubectl get service documentserver -o jsonpath="{.status.loadBalancer.ingress[*].ip}"

      После этого ONLYOFFICE Docs будет доступен по адресу http://DOCUMENTSERVER-SERVICE-IP/.

      Если IP-адрес службы пуст, попробуйте получить имя хоста службы documentserver:

      $ kubectl get service documentserver -o jsonpath="{.status.loadBalancer.ingress[*].hostname}"

      В этом случае ONLYOFFICE Docs будет доступен по адресу http://DOCUMENTSERVER-SERVICE-HOSTNAME/.

    2. Публикация ONLYOFFICE Docs через Ingress

      Сначала установите контроллер Kubernetes Nginx Ingress:

      $ helm install nginx-ingress ingress-nginx/ingress-nginx --set controller.publishService.enabled=true,controller.replicaCount=2
      примечание

      Чтобы включить предоставление метрик ingress-nginx для Prometheus, выполните:

      $ helm install nginx-ingress -f https://raw.githubusercontent.com/ONLYOFFICE/Kubernetes-Docs/master/sources/ingress_values.yaml ingress-nginx/ingress-nginx

      Подробнее об установке Nginx Ingress с помощью Helm читайте здесь.

      Затем выберите способ публикации:

      • По протоколу HTTP

        примечание

        Пропустите этот шаг, если вы собираетесь публиковать ONLYOFFICE Docs по протоколу HTTPS.

        $ helm install documentserver onlyoffice/docs --set ingress.enabled=true

        Получите IP-адрес ingress:

        $ kubectl get ingress documentserver -o jsonpath="{.status.loadBalancer.ingress[*].ip}"

        ONLYOFFICE Docs будет доступен по адресу http://DOCUMENTSERVER-INGRESS-IP/ (или используйте имя хоста, если IP-адрес пуст).

      • По протоколу HTTPS (завершение TLS)

        Создайте секрет tls с вашим SSL-сертификатом:

        $ kubectl create secret generic tls \
        --from-file=./tls.crt \
        --from-file=./tls.key
        $ helm install documentserver onlyoffice/docs --set ingress.enabled=true,ingress.ssl.enabled=true,ingress.host=example.com

        Свяжите IP-адрес или имя хоста ingress со своим доменным именем у DNS-провайдера. После этого ONLYOFFICE Docs будет доступен по адресу https://your-domain-name/.

      • По протоколу HTTPS с помощью Let's Encrypt

        $ helm repo add jetstack https://charts.jetstack.io
        $ helm repo update
        $ helm install cert-manager --version v1.17.4 jetstack/cert-manager \
        --namespace cert-manager \
        --create-namespace \
        --set crds.enabled=true \
        --set crds.keep=false

        Затем установите или обновите ONLYOFFICE Docs, задав для ingress.enabled, ingress.ssl.enabled, ingress.letsencrypt.enabled значение true и указав свои значения для ingress.letsencrypt.email и ingress.host (или ingress.tenants для нескольких доменов).

      • По виртуальному пути

        Задайте параметры ingress.enabled, ingress.host и ingress.path:

        $ helm install documentserver onlyoffice/docs --set ingress.enabled=true,ingress.host=your-domain-name,ingress.path=/docs

        Поддерживаемые контроллеры ingress: Ingress NGINX by Kubernetes, NGINX Ingress by NGINX, HAProxy Ingress by HAProxy.

        Для Ingress NGINX by Kubernetes добавьте к ingress.path шаблон (/|$)(.*), например, /docs(/|$)(.*).

    3. Публикация ONLYOFFICE Docs через маршрут в OpenShift

      $ helm install documentserver onlyoffice/docs --set openshift.route.enabled=true,openshift.route.host=your-domain-name,openshift.route.path=/docs

      Для завершения TLS добавьте сертификаты в маршрут вручную через веб-консоль OpenShift.

6. Масштабируйте ONLYOFFICE Docs​

Важно

Это необязательный шаг. Его можно полностью пропустить, если вы хотите использовать параметры развертывания по умолчанию.

  1. Горизонтальное автомасштабирование подов

    Можно включить автомасштабирование, чтобы количество реплик развертываний docservice и converter рассчитывалось автоматически на основе значений и типа метрик.

    Для метрик ресурсов должен быть зарегистрирован API metrics.k8s.io, который обычно предоставляется metrics-server. Его можно запустить как дополнение кластера.

    Чтобы включить HPA для развертывания docservice, укажите параметр docservice.autoscaling.enabled=true. Аналогично, чтобы включить HPA для развертывания converter, укажите converter.autoscaling.enabled=true. В обоих случаях соответствующий параметр replicas игнорируется, и количеством реплик управляет HPA.

    Подробнее о горизонтальном автомасштабировании подов читайте здесь. Другие настраиваемые параметры автомасштабирования приведены в таблице Параметры.

  2. Ручное масштабирование

    По умолчанию развертывания docservice и converter состоят из 2 подов каждое.

    Чтобы масштабировать развертывание docservice, выполните команду:

    $ kubectl scale -n default deployment docservice --replicas=POD_COUNT

    Чтобы масштабировать развертывание converter, выполните команду:

    $ kubectl scale -n default deployment converter --replicas=POD_COUNT

7. Обновите ONLYOFFICE Docs​

Чтобы выполнить обновление, задайте параметры обновления. Например:

$ helm upgrade documentserver onlyoffice/docs \
--set docservice.image.tag=[version]
примечание

Также необходимо указать параметры, которые были заданы при установке.

Или измените файл values.yaml и выполните команду:

$ helm upgrade documentserver -f values.yaml onlyoffice/docs

Команда helm upgrade запускает хук, который останавливает ONLYOFFICE Docs и очищает базу данных. Время выполнения хука по умолчанию — 300 с. Чтобы его изменить, выполните команду:

$ helm upgrade documentserver -f values.yaml onlyoffice/docs --timeout 15m
примечание

При обновлении в частном кластере k8s за веб-прокси или без доступа к Интернету ознакомьтесь с примечаниями ниже.

Чтобы обновить любой параметр, кроме версии ONLYOFFICE Docs, выполните helm upgrade без хуков:

$ helm upgrade documentserver onlyoffice/docs --set jwt.enabled=false --no-hooks

Чтобы откатить обновления, выполните команду:

$ helm rollback documentserver
примечание

При откате в частном кластере k8s ознакомьтесь с примечаниями ниже.

8. Остановите ONLYOFFICE Docs​

Важно

Это необязательный шаг.

Чтобы выполнить остановку, выполните следующую команду:

$ kubectl apply -f https://raw.githubusercontent.com/ONLYOFFICE/Kubernetes-Docs/master/sources/shutdown-ds.yaml -n <NAMESPACE>

Где <NAMESPACE> — это пространство имен, в котором установлен ONLYOFFICE Docs. Если не указано, используется default. Например:

$ kubectl apply -f https://raw.githubusercontent.com/ONLYOFFICE/Kubernetes-Docs/master/sources/shutdown-ds.yaml -n onlyoffice

После успешного выполнения пода shutdown-ds удалите задание (Job):

$ kubectl delete job shutdown-ds -n <NAMESPACE>

Чтобы перезапустить ONLYOFFICE Docs после остановки, перезапустите поды docservice и converter:

$ kubectl delete pod converter-*** docservice-*** -n <NAMESPACE>

9. Обновите лицензию ONLYOFFICE Docs​

Важно

Это необязательный шаг.

Начиная с версии v5.1.1, лицензию можно обновить, пересоздав секрет без перезагрузки подов. Чтобы обновить лицензию:

  • Поместите новый файл license.lic в каталог.

  • Выполните следующие команды:

    $ kubectl delete secret [SECRET_LICENSE_NAME] -n <NAMESPACE>
    $ kubectl create secret generic [SECRET_LICENSE_NAME] --from-file=path/to/license.lic -n <NAMESPACE>

    Где SECRET_LICENSE_NAME — это имя существующего секрета с лицензией.

Сервер документов автоматически перечитает новую лицензию.

УСТАРЕВШИЙ МЕТОД

Перезапустите поды docservice и converter:

$ kubectl delete pod converter-*** docservice-*** -n <NAMESPACE>

10. Тестирование установки ONLYOFFICE Docs​

Важно

Это необязательный шаг.

Проверьте доступность ONLYOFFICE Docs и доступ к подключенным зависимостям:

$ helm test documentserver -n <NAMESPACE>

Вывод должен содержать:

Phase: Succeeded

Чтобы просмотреть лог теста, выполните команду:

$ kubectl logs -f test-ds -n <NAMESPACE>

После тестирования удалите под test-ds:

$ kubectl delete pod test-ds -n <NAMESPACE>
примечание

Это тестирование носит исключительно информационный характер и не может гарантировать 100% доступность. Подробную информацию смотрите в логах приложения.

11. Запуск заданий в частном кластере k8s​

Важно

Это необязательный шаг. Его можно полностью пропустить, если у вашего кластера есть неограниченный доступ к Интернету.

Начиная с версии Helm-чарта 6.1.0, SQL-скрипты, необходимые для инициализации базы данных, входят в образ docs-utils, поэтому заданиям не нужен доступ к Интернету для их скачивания.

примечание

Если вы сопоставляете пользовательский скрипт, которому требуется доступ к Интернету, с ConfigMap, указанным в параметре install.existingConfigmap.initdb или upgrade|rollback|delete.existingConfigmap.dsStop, а в вашей сети доступен веб-прокси, задайте webProxy.enabled=true и соответствующие параметры веб-прокси, чтобы контейнеры подов могли получить доступ к Интернету.

12. Доступ к информационной странице​

Важно

Это необязательный шаг.

По умолчанию доступ к странице /info ограничен. Чтобы разрешить доступ, укажите IP-адреса или подсети с помощью параметра proxy.infoAllowedIP. Обратите внимание, что из-за особенностей сети Kubernetes фактическими клиентами обычно являются адреса подов, узлов или балансировщика нагрузки, а не исходный IP-адрес пользователя.

Можно дополнительно ограничить доступ с помощью базовой аутентификации Nginx, задав параметр proxy.infoAllowedUser и пароль с помощью proxy.infoAllowedPassword. Кроме того, можно использовать существующий секрет, задав proxy.infoAllowedExistingSecret.

Использование Grafana для визуализации метрик​

Важно

Это необязательный раздел. Его можно полностью пропустить, если вы не хотите устанавливать Grafana.

1. Разверните Grafana​

примечание

Предполагается, что шаг 6.2 (Установка Prometheus) уже выполнен.

  1. Развертывание Grafana без готовых панелей мониторинга

    примечание

    Пропустите этот шаг, если вы хотите развернуть Grafana с готовыми панелями мониторинга.

    $ helm install grafana --version 12.1.8 bitnami/grafana \
    --set service.ports.grafana=80 \
    --set config.useGrafanaIniFile=true \
    --set config.grafanaIniConfigMap=grafana-ini \
    --set datasources.secretName=grafana-datasource \
    --set resourcesPreset=none \
    --set image.repository=bitnamilegacy/grafana \
    --set image.tag=12.1.1-debian-12-r1 \
    --set global.security.allowInsecureImages=true
  2. Развертывание Grafana с готовыми панелями мониторинга

    1. Установите готовые панели мониторинга Grafana

      Задайте для параметров grafana.enabled и grafana.dashboard.enabled значение true. Если ONLYOFFICE Docs уже установлен, выполните команду:

      helm upgrade documentserver onlyoffice/docs --set grafana.enabled=true --set grafana.dashboard.enabled=true

      Эта команда скачивает готовые панели мониторинга в формате JSON с сайта Grafana, вносит в них необходимые изменения и создает из них ConfigMap. Также добавляется панель мониторинга для метрик ONLYOFFICE Docs (предполагается, что шаг 6 (Развертывание StatsD exporter) уже выполнен).

    2. Установите Grafana

      $ helm install grafana --version 12.1.8 bitnami/grafana \
      --set service.ports.grafana=80 \
      --set config.useGrafanaIniFile=true \
      --set config.grafanaIniConfigMap=grafana-ini \
      --set datasources.secretName=grafana-datasource \
      --set resourcesPreset=none \
      --set image.repository=bitnamilegacy/grafana \
      --set image.tag=12.1.1-debian-12-r1 \
      --set global.security.allowInsecureImages=true \
      --set dashboardsProvider.enabled=true \
      --set dashboardsConfigMaps[0].configMapName=dashboard-node-exporter \
      --set dashboardsConfigMaps[0].fileName=dashboard-node-exporter.json \
      --set dashboardsConfigMaps[1].configMapName=dashboard-deployment \
      --set dashboardsConfigMaps[1].fileName=dashboard-deployment.json \
      --set dashboardsConfigMaps[2].configMapName=dashboard-redis \
      --set dashboardsConfigMaps[2].fileName=dashboard-redis.json \
      --set dashboardsConfigMaps[3].configMapName=dashboard-rabbitmq \
      --set dashboardsConfigMaps[3].fileName=dashboard-rabbitmq.json \
      --set dashboardsConfigMaps[4].configMapName=dashboard-postgresql \
      --set dashboardsConfigMaps[4].fileName=dashboard-postgresql.json \
      --set dashboardsConfigMaps[5].configMapName=dashboard-nginx-ingress \
      --set dashboardsConfigMaps[5].fileName=dashboard-nginx-ingress.json \
      --set dashboardsConfigMaps[6].configMapName=dashboard-documentserver \
      --set dashboardsConfigMaps[6].fileName=dashboard-documentserver.json \
      --set dashboardsConfigMaps[7].configMapName=dashboard-cluster-resourses \
      --set dashboardsConfigMaps[7].fileName=dashboard-cluster-resourses.json

      В Grafana будут импортированы следующие панели мониторинга: Node Exporter, Deployment Statefulset Daemonset, Redis Dashboard for Prometheus Redis Exporter, RabbitMQ-Overview, PostgreSQL Database, NGINX Ingress controller, ONLYOFFICE Docs и Resource usage by Pods and Containers.

      примечание

      Описание метрик ONLYOFFICE Docs, визуализируемых в Grafana, можно найти здесь.

      Подробнее об установке Grafana с помощью Helm читайте здесь.

2. Доступ к Grafana через Ingress​

примечание

Предполагается, что шаг установки контроллера Kubernetes Nginx Ingress уже выполнен.

Если ONLYOFFICE Docs был установлен с параметром grafana.ingress.enabled (Развертывание метрик), Grafana будет доступна по адресу: http://INGRESS-ADDRESS/grafana/

Если Ingress был установлен с защищенным соединением (Публикация ONLYOFFICE Docs по протоколу HTTPS), Grafana будет доступна по адресу: https://your-domain-name/grafana/

3. Просмотр собранных метрик в Grafana​

Перейдите по адресу http(s)://your-domain-name/grafana/ и войдите со следующими данными:

Login - admin

Чтобы получить пароль, выполните команду:

$ kubectl get secret grafana-admin --namespace default -o jsonpath="{.data.GF_SECURITY_ADMIN_PASSWORD}" | base64 --decode

В разделе панелей мониторинга вы увидите добавленные панели, отображающие метрики, полученные от Prometheus.