适用于 Kubernetes 的 ONLYOFFICE 文档

介绍

重要 以下指南仅适用于付费集群许可解决方案。
  • 您必须已安装 Kubernetes 或 OpenShift 集群:
  • 您还应该拥有本地配置的kubectl副本。请参阅此指南了解如何安装和配置kubectl
  • 您应该安装 Helm v3.7+。请按照此处的说明进行安装。
  • 如果您使用 OpenShift,可以使用ockubectl来管理部署。
  • 如果从 Helm Chart 在 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

或者,您可以指定目标命名空间中允许的用户和组范围,在安装依赖项(如 RabbitMQ、Redis、PostgreSQL 等)时查看runAsUserfsGroup参数。

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 服务器预配置器

安装 NFS 服务器预配置器时,会创建存储类 - 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 是您的 Kubernetes 集群中可用的持久存储类。

    不同提供程序的持久存储类:

    • Amazon EKS:gp2
    • Digital Ocean:do-block-storage
    • IBM Cloud:默认 ibmc-file-bronze更多存储类
    • Yandex Cloud:yc-network-hddyc-network-ssd更多详情
    • minikube:standard
  • PERSISTENT_SIZE 是用于 nfs 持久存储类的所有持久存储的总大小。您可以将大小表示为带有以下后缀之一的普通整数:TGMTiGiMi。例如:9Gi

有关通过 Helm 安装 NFS 服务器预配置器的更多详细信息,请参阅此处

配置持久卷声明

默认的nfs持久卷声明为 8Gi。您可以在values.yaml文件的persistence.storageClasspersistence.size部分更改它。它应至少比PERSISTENT_SIZE小约 5%。建议为ONLYOFFICE 文档的每 100 个活跃用户使用 8Gi 或更多的持久存储。

重要 用于 PVC 放置的 PersistentVolume 类型必须支持访问模式ReadWriteMany。此外,PersistentVolume 的所有者必须是启动 ONLYOFFICE 文档的用户。默认情况下是ds (101:101)。

如果您想启用WOPI,请设置参数wopi.enabled=true。在这种情况下,持久存储必须连接到集群节点,并为客户端的挂载目录禁用缓存属性。对于 NFS 服务器预配置器,可以通过将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 收集。

有关通过 Helm 安装 RabbitMQ 的更多详细信息,请参阅此处

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-exportermetrics.image.tag=1.76.0-debian-12-r0

有关通过 Helm 安装 Redis 的更多详细信息,请参阅此处

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-exportermetrics.image.tag=0.17.1-debian-12-r16

有关通过 Helm 安装 PostgreSQL 的更多详细信息,请参阅此处

要将 MySQL 安装到您的集群,请运行以下命令:

$ helm install mysql --version 14.0.3 bitnami/mysql \
  --set auth.database=onlyoffice \
  --set auth.username=onlyoffice \
  --set primary.persistence.storageClass=PERSISTENT_STORAGE_CLASS \
  --set primary.persistence.size=PERSISTENT_SIZE \
  --set primary.resourcesPreset=none \
  --set image.repository=bitnamilegacy/mysql \
  --set global.security.allowInsecureImages=true \
  --set image.tag=9.4.0-debian-12-r1 \
  --set metrics.enabled=false

有关通过 Helm 安装 MySQL 的更多详细信息,请参阅此处

此处PERSISTENT_SIZE是数据库持久卷的大小。例如:8Gi

建议为 ONLYOFFICE 文档的每 100 个活跃用户使用至少 2Gi 的持久存储。

设置metrics.enabled=true以启用暴露数据库指标,供 Prometheus 收集。还要添加以下参数:metrics.image.repository=bitnamilegacy/mysqld-exportermetrics.image.tag=0.17.2-debian-12-r16
6. 部署 StatsD 导出器
重要 此步骤可选。如果您不想运行 StatsD 导出器,可以完全跳过此步骤。
  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参数。

    有关通过 Helm 安装 Prometheus 的更多详细信息,请参阅此处

  3. 安装 StatsD 导出器

    要将 StatsD 导出器安装到您的集群,请运行以下命令:

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

    有关通过 Helm 安装 Prometheus StatsD 导出器的更多详细信息,请参阅此处

    要在 ONLYOFFICE 文档中启用 StatsD 指标,请遵循此步骤

7. 修改 Node-config 配置文件
重要 此步骤可选。如果您不需要修改配置文件,可以完全跳过此步骤。
  1. 创建一个包含 json 文件的 ConfigMap

    为了从一个包含local.json结构的文件创建 ConfigMap,您需要运行以下命令:

    $ kubectl create configmap local-config \
      --from-file=./local.json
    可以使用任何名称代替local-config
  2. 在安装 ONLYOFFICE 文档时指定参数

    安装 ONLYOFFICE 文档时,指定extraConf.configMap=local-configextraConf.filename=local.json参数。

    如果需要在 ONLYOFFICE 文档已安装后添加配置文件,您需要执行步骤 7.1,然后运行
    helm upgrade documentserver onlyoffice/docs --set extraConf.configMap=local-config --set extraConf.filename=local.json --no-hooks
    命令,或者如果参数已在values.yaml文件中指定,则运行
    helm upgrade documentserver -f ./values.yaml onlyoffice/docs --no-hooks
8. 添加自定义字体
重要 此步骤可选。如果您不需要添加字体,可以完全跳过此步骤。

为了向镜像中添加字体,您需要重新构建镜像。请参考手册中的相关步骤。然后在安装 ONLYOFFICE 文档时指定您的镜像。

9. 添加插件
重要 此步骤可选。如果您不需要添加插件,可以完全跳过此步骤。

为了向镜像中添加插件,您需要重新构建镜像。请参考手册中的相关步骤。然后在安装 ONLYOFFICE 文档时指定您的镜像。

10. 添加自定义字典
重要 此步骤可选。如果您不需要添加字典,可以完全跳过此步骤。

为了向镜像中添加自定义字典,您需要重新构建镜像。请参考手册中的相关步骤。然后在安装 ONLYOFFICE 文档时指定您的镜像。

11. 更改界面主题
重要 此步骤可选。如果您不需要更改界面主题,可以完全跳过此步骤。
  1. 创建一个包含 json 文件的 ConfigMap

    为了创建一个包含界面主题的 json 文件的 ConfigMap,您需要运行以下命令:

    $ kubectl create configmap custom-themes \
      --from-file=./custom-themes.json
    您可以使用任何其他名称代替custom-themescustom-themes.json
  2. 在安装 ONLYOFFICE 文档时指定参数

    安装 ONLYOFFICE 文档时,指定extraThemes.configMap=custom-themesextraThemes.filename=custom-themes.json参数。

    如果需要在 ONLYOFFICE 文档已安装后添加界面主题,您需要执行步骤 11.1,然后运行 helm upgrade documentserver onlyoffice/docs --set extraThemes.configMap=custom-themes --set extraThemes.filename=custom-themes.json --no-hooks 命令,或者如果参数已在 values.yaml 文件中指定,则运行 helm upgrade documentserver -f ./values.yaml onlyoffice/docs --no-hooks。
12. 将 Amazon S3 存储桶作为缓存连接到 ONLYOFFICE Helm 文档

为了将 Amazon S3 存储桶作为缓存连接,您需要根据本指南创建配置文件或编辑现有文件,并将参数persistence.storageS3的值更改为true

部署 ONLYOFFICE 文档

安装到 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

或者,您可以在描述 podTemplate 的所有资源的commonAnnotationsannotations中应用nonroot-v2SecurityContextConstraints (SCC) 策略。确保用户和服务帐户都具有使用此 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.containerSecurityContext.enabled设置为 true。

1. 部署 ONLYOFFICE 文档许可证
  1. 创建密钥

    如果您有有效的 ONLYOFFICE 文档许可证,请从文件创建名为license的密钥:

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

    其中SECRET_LICENSE_NAME是带有许可证的未来密钥的名称。

    源许可证文件名应为 'license.lic',因为此名称将用作创建密钥中的字段。
    如果安装时没有使用现有许可证文件创建密钥,则会自动创建一个空的密钥license。有关如何更新现有许可证密钥的信息,请参阅此处
  2. 在安装 ONLYOFFICE 文档时指定参数

    安装 ONLYOFFICE 文档时,指定license.existingSecret=[SECRET_LICENSE_NAME]参数。

    $ helm install documentserver onlyoffice/docs --set license.existingSecret=[SECRET_LICENSE_NAME]
    如果需要在 ONLYOFFICE 文档已安装后添加许可证,您需要执行步骤 1.1,然后运行helm upgrade documentserver onlyoffice/docs --set license.existingSecret=[SECRET_LICENSE_NAME] --no-hooks命令,或者如果参数已在values.yaml文件中指定,则运行helm upgrade documentserver -f ./values.yaml onlyoffice/docs --no-hooks
2. 部署 ONLYOFFICE 文档

使用发布名称documentserver部署 ONLYOFFICE 文档:

$ helm install documentserver onlyoffice/docs

该命令在默认配置下将 ONLYOFFICE 文档部署到 Kubernetes 集群上。参数部分列出了可以在安装过程中配置的参数。

在位于 Web 代理后面或无法访问互联网的私有 k8s 集群中安装 ONLYOFFICE 文档时,请参阅下面的注意事项
3. 卸载 ONLYOFFICE 文档

要卸载/删除documentserver部署:

$ helm delete documentserver

执行helm delete命令会启动钩子,这些钩子在完全删除 ONLYOFFICE 文档之前执行一些准备操作,包括停止服务器、清理已使用的 PVC 和数据库表。默认的钩子执行时间为 300 秒。可以使用--timeout [time]更改执行时间,例如:

$ helm delete documentserver --timeout 25m
在位于 Web 代理后面或无法访问互联网的私有 k8s 集群中删除 ONLYOFFICE 文档时,请参阅下面的注意事项

如果您想删除 ONLYOFFICE 文档而不执行任何准备操作,请运行以下命令:

$ helm delete documentserver --no-hooks

helm delete命令会删除与 Chart 关联的所有 Kubernetes 组件,并删除该发布。

4. 参数
connections.dbType数据库类型。可能的值有postgresmariadbmysqloraclemssqldamengpostgres
connections.dbHost数据库主机的 IP 地址或名称。postgresql
connections.dbUser数据库用户。postgres
connections.dbPort数据库服务器端口号。5432
connections.dbName应用程序将要连接的数据库名称。postgres
connections.dbPassword数据库用户密码。如果设置,则优先于connections.dbExistingSecret""
connections.dbSecretKeyName包含数据库用户密码的键的名称。postgres-password
connections.dbExistingSecret用于数据库密码的现有密钥名称。必须包含在connections.dbSecretKeyName中指定的键。postgresql
connections.redisConnectorName定义用于连接到 Redis 的连接器。如果您需要连接到 Redis Sentinel,请设置值为ioredisredis
connections.redistHostRedis 主机的 IP 地址或名称。如果在connections.redisClusterNodesconnections.redisSentinelNodes中设置了值,则不使用此参数。 redis-master
connections.redisPortRedis 服务器端口号。如果在connections.redisClusterNodesconnections.redisSentinelNodes中设置了值,则不使用此参数。 6379
connections.redisUserRedis 用户名称。如果您添加自定义配置文件,此参数中的值将覆盖local.jsonoptions对象设置的值。 default
connections.redisDBNum选择的 Redis 逻辑数据库编号。如果您添加自定义配置文件,此参数中的值将覆盖local.jsonoptions对象设置的值。0
connections.redisClusterNodesRedis 集群中的节点列表。无需指定集群中的每个节点,3 个就足够了。您可以指定多个值。必须以host:port格式指定。[]
connections.redisPassword为 Redis 帐户设置的密码。如果设置,则优先于connections.redisExistingSecret。如果您添加自定义配置文件,此参数中的值将覆盖local.jsonoptions对象设置的值。 ""
connections.redisSecretKeyName包含 Redis 用户密码的键的名称。redis-password
connections.redisExistingSecret用于 Redis 密码的现有密钥名称。必须包含在connections.redisSecretKeyName中指定的键。此密钥中的密码将覆盖local.jsonoptions对象设置的密码。 redis
connections.redisNoPass定义是否使用无密码的 Redis 认证。如果连接到 Redis 服务器不需要密码,请将值设置为truefalse
connections.redisSentinelNodesRedis Sentinel 节点列表。无需指定每个节点,3 个就足够了。您可以指定多个值。必须以host:port格式指定。在connections.redisConnectorName设置为ioredis时使用。 []
connections.redisSentinelGroupName由一个主节点和一个或多个从节点组成的 Redis 实例组的名称。在connections.redisConnectorName设置为ioredis时使用。mymaster
connections.redisSentinelExistingSecret用于 Redis Sentinel 密码的现有密钥名称。必须包含在connections.redisSentinelSecretKeyName中指定的键。此密钥中的密码将覆盖local.jsoniooptions对象设置的密码值。 ""
connections.redisSentinelSecretKeyName包含 Redis Sentinel 用户密码的键的名称。如果您在redisSentinelPassword中设置了密码,将自动创建一个密钥,其键名称将为此处设置的值。 sentinel-password
connections.redisSentinelPassword为 Redis Sentinel 帐户设置的密码。如果设置,则优先于connections.redisSentinelExistingSecret。此参数中的值将覆盖local.jsoniooptions对象设置的值。 ""
connections.redisSentinelNoPass定义是否使用无密码的 Redis Sentinel 认证。如果连接到 Redis Sentinel 不需要密码,请将值设置为truetrue
connections.amqpType定义 AMQP 服务器类型。可能的值有rabbitmqactivemqrabbitmq
connections.amqpHostAMQP 服务器的 IP 地址或名称。rabbitmq
connections.amqpPort连接到 AMQP 服务器的端口。5672
connections.amqpVhost连接到 AMQP 服务器的虚拟主机。/
connections.amqpUserAMQP 服务器帐户的用户名。user
connections.amqpProto连接到 AMQP 服务器的协议。amqp
connections.amqpPasswordAMQP 服务器用户密码。如果设置,则优先于connections.amqpExistingSecret""
connections.amqpSecretKeyName包含 AMQP 服务器用户密码的键的名称。rabbitmq-password
connections.amqpExistingSecret用于 AMQP 服务器密码的现有密钥名称。必须包含在connections.amqpSecretKeyName中指定的键。rabbitmq
persistence.existingClaim要使用的现有 PVC 的名称。如果未指定,将创建一个名为 "ds-files" 的 PVC。""
persistence.annotations定义将额外添加到 "ds-files" PVC 的注释。如果设置,则优先于commonAnnotations{}
persistence.storageClass用于 ONLYOFFICE 文档数据和运行时配置卷的 PVC 存储类。nfs
persistence.sizeONLYOFFICE 文档卷的 PVC 存储请求。8Gi
persistence.storageS3定义是否将 S3 用作缓存存储。如果您将使用 S3 作为缓存存储,请设置为truefalse
persistence.runtimeConfig.enabled定义是否使用 PVC 以及是否将其挂载到容器中。true
persistence.runtimeConfig.existingClaim用于存储运行时配置的现有 PVC 的名称。如果未指定,将创建一个名为 "ds-runtime-config" 的 PVC。""
persistence.runtimeConfig.annotations定义将额外添加到 "ds-runtime-config" PVC 的注释。如果设置,则优先于commonAnnotations{}
persistence.runtimeConfig.size运行时配置卷的 PVC 存储请求。1Gi
commonNameSuffix将作为后缀添加到所有创建资源名称中的名称。""
namespaceOverride将部署 ONLYOFFICE 文档的命名空间名称。如果未设置,名称将从.Release.Namespace获取。""
commonLabels定义将额外添加到所有已部署资源的标签。您也可以将tpl用作键的值。{}
commonAnnotations定义将额外添加到所有已部署资源的注释。您也可以将tpl用作键的值。某些资源可能会用自己的值覆盖此处指定的值。{}
serviceAccount.create启用 ServiceAccount 创建。false
serviceAccount.name要使用的 ServiceAccount 的名称。如果未设置且serviceAccount.createtrue,则名称将从.Release.Name获取;如果serviceAccount.createfalse,则名称为 "default"。""
serviceAccount.annotations要添加到 ServiceAccount 的注释映射。如果设置,则优先于commonAnnotations{}
serviceAccount.automountServiceAccountToken启用自动挂载创建的 serviceAccount 上的 ServiceAccountToken。仅在serviceAccount.createtrue时使用。true
license.existingSecret包含许可证的现有密钥的名称。必须包含键license.lic""
license.existingClaim存储许可证的现有 PVC 的名称。必须包含文件license.lic""
log.level定义记录事件的类型和严重性。可能的值有ALLTRACEDEBUGINFOWARNERRORFATALMARKOFFWARN
log.type定义记录事件的格式。可能的值有patternjsonbasiccolouredmessagePassThroughdummypattern
log.pattern定义日志模式(如果log.type=pattern)。 [%d] [%p] %c - %.10000m
wopi.enabled定义是否启用WOPI。如果启用此参数,则应为客户端禁用挂载目录(PVC)的缓存属性。false
wopi.keys.generation定义是否生成 API 密钥。在您将wopi.enabled设置为true时使用。true
wopi.keys.newKeysExistingSecret包含 WOPI 密钥的现有密钥名称。必须包含键WOPI_PRIVATE_KEYWOPI_PUBLIC_KEYWOPI_MODULUS_KEYWOPI_EXPONENT_KEY。如果未设置,将生成新密钥并据此创建一个密钥。 ""
wopi.keys.oldKeysExistingSecret包含旧 WOPI 密钥的现有密钥名称。必须包含键WOPI_PRIVATE_KEY_OLDWOPI_PUBLIC_KEY_OLDWOPI_MODULUS_KEY_OLDWOPI_EXPONENT_KEY_OLD。如果未设置,将生成新密钥并据此创建一个密钥。 ""
metrics.enabled指定为 ONLYOFFICE 文档启用 StatsD。false
metrics.host定义 StatsD 监听主机。statsd-exporter-prometheus-statsd-exporter
metrics.port定义 StatsD 监听端口。8125
metrics.prefix为后端服务定义 StatsD 指标前缀。ds.
extraConf.configMap包含用于覆盖默认值的 json 文件的 ConfigMap 名称。""
extraConf.filename包含自定义值的 json 文件名。必须与 extraConf.ConfigMap 中的 key 名称相同。local.json
extraThemes.configMap包含界面主题的 json 文件的 ConfigMap 名称。""
extraThemes.filename包含自定义界面主题的 json 文件名。必须与 extraThemes.configMap 中的 key 名称相同。custom-themes.json
podAntiAffinity.typePod 反亲和性类型。允许的值:softhardsoft
podAntiAffinity.topologyKey要匹配的节点标签键。kubernetes.io/hostname
podAntiAffinity.weight选择节点时的优先级。范围从 1 到 100。100
nodeSelector用于 Pod 分配的节点标签。每个 ONLYOFFICE 文档服务可以用自己的值覆盖此处指定的值。{}
tolerations用于 Pod 分配的容忍度。每个 ONLYOFFICE 文档服务可以用自己的值覆盖此处指定的值。[]
imagePullSecrets容器镜像仓库密钥名称。""
requestFilteringAgent.allowPrivateIPAddress定义是否允许连接私有 IP 地址。如果 JWT 被禁用:jwt.enabled=false,则使用 requestFilteringAgent 参数。 false
requestFilteringAgent.allowMetaIPAddress定义是否允许连接元地址。false
requestFilteringAgent.allowIPAddressList定义允许连接的 IP 地址列表。这些值优先于 requestFilteringAgent.denyIPAddressList[]
requestFilteringAgent.denyIPAddressList定义允许连接的 IP 地址列表。[]
docservice.annotations定义将额外添加到 Docservice 部署的注释。如果设置,则优先于 commonAnnotations{}
docservice.podAnnotations要添加到 Docservice 部署 Pod 的注释映射。rollme: "{{ randAlphaNum 5 | quote }}"
docservice.replicasDocservice 副本数量。如果启用了 docservice.autoscaling.enabled 参数,则忽略此参数。2
docservice.updateStrategy.typeDocservice 部署更新策略类型。Recreate
docservice.customPodAntiAffinity禁止在同一节点上调度包含指定标签的其他 Pod 时,调度 Docservice Pod。{}
docservice.podAffinity定义按节点相对于其他 Pod 调度 Docservice Pod 的 Pod 亲和性规则。{}
docservice.nodeAffinity定义按节点调度 Docservice Pod 的 节点亲和性规则。 {}
docservice.nodeSelector用于 Docservice Pod 分配的节点标签。如果设置,则优先于 nodeSelector{}
docservice.tolerations用于 Docservice Pod 分配的容忍度。如果设置,则优先于 tolerations[]
docservice.terminationGracePeriodSeconds优雅终止的时间,在此期间 Docservice Pod 将处于 Terminating 状态。30
docservice.hostAliases附加条目添加到 Docservice 和代理容器的主机文件中。[]
docservice.initContainers定义在 Docservice 部署 Pod 中的 docservice 和代理容器之前运行的容器。例如,更改 PersistentVolume 所有者的容器。[]
docservice.image.repositoryDocservice 容器镜像仓库*。onlyoffice/docs-docservice-de
docservice.image.tagDocservice 容器镜像标签。9.0.4-1
docservice.image.pullPolicyDocservice 容器镜像拉取策略。IfNotPresent
docservice.containerSecurityContext.enabled为 Docservice 容器启用安全上下文。false
docservice.lifecycleHooks定义 Docservice 容器生命周期钩子。用于在容器生命周期的特定点触发要运行的事件。 {}
docservice.resources.requestsDocservice 容器的请求资源。{}
docservice.resources.limitsDocservice 容器的资源限制。{}
docservice.extraEnvVars用于 Docservice 容器的额外环境变量数组。[]
docservice.extraVolumes用于 Docservice Pod 的额外卷数组。[]
docservice.extraVolumeMounts用于 Docservice 容器的额外卷挂载数组。[]
docservice.readinessProbe.enabled为 Docservice 容器启用就绪探针。true
docservice.livenessProbe.enabled为 Docservice 容器启用存活探针。true
docservice.startupProbe.enabled为 Docservice 容器启用启动探针。true
docservice.autoscaling.enabled启用 Docservice 部署的自动缩放。false
docservice.autoscaling.annotations定义将额外添加到 Docservice 部署 HPA 的注释。如果设置,则优先于 commonAnnotations{}
docservice.autoscaling.minReplicasDocservice 部署自动缩放的最小副本数。2
docservice.autoscaling.maxReplicasDocservice 部署自动缩放的最大副本数。4
docservice.autoscaling.targetCPU.enabled通过 CPU 使用率百分比启用 Docservice 部署的自动缩放。true
docservice.autoscaling.targetCPU.utilizationPercentageDocservice 部署自动缩放的目标 CPU 百分比。70
docservice.autoscaling.targetMemory.enabled通过内存使用率百分比启用 Docservice 部署的自动缩放。false
docservice.autoscaling.targetMemory.utilizationPercentageDocservice 部署自动缩放的目标内存百分比。70
docservice.autoscaling.customMetricsType用于 Docservice 部署的自定义、附加或外部自动缩放指标。[]
docservice.autoscaling.behaviorscaleDownscaleUp 字段配置 Docservice 部署缩放行为策略。{}
proxy.accessLog定义 nginx 配置 access_log 格式指令。off
proxy.logFormat使用文本和各种变量定义日志条目的格式'$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'
proxy.gzipProxied定义 nginx 配置 gzip_proxied 指令。off
proxy.clientMaxBodySize定义 nginx 配置 client_max_body_size 指令。100m
proxy.workerConnections定义 nginx 配置 worker_connections 指令。4096
proxy.secureLinkSecret定义 nginx 配置指令 secure_link_md5 的密钥。如果值为空,将生成一个随机值,该值将在后续升级中使用。如果设置了值,则将使用该值。""
proxy.secureLinkExistingSecret用于 secure_link 的现有密钥名称。如果设置,则优先于 proxy.secureLinkSecret""
proxy.infoAllowedIP定义允许访问信息页面的 IP 地址。[]
proxy.infoAllowedUser定义访问信息页面的用户名。如果未设置,则 Nginx 基本认证将不会应用于访问信息页面。更多详情请参见此处""
proxy.infoAllowedPassword定义访问信息页面的用户密码。在设置了 proxy.infoAllowedUser 时使用。如果值为空,将生成一个随机值,该值将在后续升级中使用。如果设置了值,则将使用该值。""
proxy.infoAllowedSecretKeyName包含信息认证用户密码的键的名称。在设置了 proxy.infoAllowedUser 时使用。info-auth-password
proxy.infoAllowedExistingSecret用于信息认证密码的现有密钥名称。在设置了 proxy.infoAllowedUser 时使用。必须包含在 proxy.infoAllowedSecretKeyName 中指定的键。如果设置,则优先于 proxy.infoAllowedPassword""
proxy.welcomePage.enabled定义是否显示欢迎页面。true
proxy.image.repositoryDocservice 代理容器镜像仓库*。onlyoffice/docs-proxy-de
proxy.image.tagDocservice 代理容器镜像标签。9.0.4-1
proxy.image.pullPolicyDocservice 代理容器镜像拉取策略。IfNotPresent
proxy.containerSecurityContext.enabled为代理容器启用安全上下文。false
proxy.lifecycleHooks定义代理容器生命周期钩子。用于在容器生命周期的特定点触发要运行的事件。 {}
proxy.resources.requests代理容器的请求资源。{}
proxy.resources.limits代理容器的资源限制。{}
proxy.extraEnvVars用于代理容器的额外环境变量数组。[]
proxy.extraVolumeMounts用于代理容器的额外卷挂载数组。[]
proxy.readinessProbe.enabled为代理容器启用就绪探针。true
proxy.livenessProbe.enabled为代理容器启用存活探针。true
proxy.startupProbe.enabled为代理容器启用启动探针。true
converter.annotations定义将额外添加到转换器部署的注释。如果设置,则优先于 commonAnnotations{}
converter.podAnnotations要添加到转换器部署 Pod 的注释映射。rollme: "{{ randAlphaNum 5 | quote }}"
converter.replicas转换器副本数量。如果启用了 converter.autoscaling.enabled 参数,则忽略此参数。2
converter.updateStrategy.type转换器部署更新策略类型。Recreate
converter.customPodAntiAffinity禁止在同一节点上调度包含指定标签的其他 Pod 时,调度转换器 Pod。{}
converter.podAffinity定义按节点相对于其他 Pod 调度转换器 Pod 的 Pod 亲和性规则。{}
converter.nodeAffinity定义按节点调度转换器 Pod 的 节点亲和性规则。 {}
converter.nodeSelector用于转换器 Pod 分配的节点标签。如果设置,则优先于 nodeSelector{}
converter.tolerations用于转换器 Pod 分配的容忍度。如果设置,则优先于 tolerations[]
converter.terminationGracePeriodSeconds优雅终止的时间,在此期间转换器 Pod 将处于 Terminating 状态。30
converter.hostAliases附加条目添加到转换器容器的主机文件中。 []
converter.initContainers定义在转换器部署 Pod 中的转换器容器之前运行的容器。例如,更改 PersistentVolume 所有者的容器。[]
converter.image.repository转换器容器镜像仓库*。onlyoffice/docs-converter-de
converter.image.tag转换器容器镜像标签。9.0.4-1
converter.image.pullPolicy转换器容器镜像拉取策略。IfNotPresent
converter.containerSecurityContext.enabled为转换器容器启用安全上下文。false
converter.lifecycleHooks定义转换器容器生命周期钩子。用于在容器生命周期的特定点触发要运行的事件。 {}
converter.resources.requests转换器容器的请求资源。{}
converter.resources.limits转换器容器的资源限制。{}
converter.extraEnvVars用于转换器容器的额外环境变量数组。[]
converter.extraVolumes用于转换器 Pod 的额外卷数组。[]
converter.extraVolumeMounts用于转换器容器的额外卷挂载数组。[]
converter.autoscaling.enabled启用转换器部署的自动缩放。false
converter.autoscaling.annotations定义将额外添加到转换器部署 HPA 的注释。如果设置,则优先于 commonAnnotations{}
converter.autoscaling.minReplicas转换器部署自动缩放的最小副本数。2
converter.autoscaling.maxReplicas转换器部署自动缩放的最大副本数。16
converter.autoscaling.targetCPU.enabled通过 CPU 使用率百分比启用转换器部署的自动缩放。true
converter.autoscaling.targetCPU.utilizationPercentage转换器部署自动缩放的目标 CPU 百分比。70
converter.autoscaling.targetMemory.enabled通过内存使用率百分比启用转换器部署的自动缩放。false
converter.autoscaling.targetMemory.utilizationPercentage转换器部署自动缩放的目标内存百分比。70
converter.autoscaling.customMetricsType用于转换器部署的自定义、附加或外部自动缩放指标。[]
converter.autoscaling.behaviorscaleDownscaleUp 字段配置转换器部署缩放行为策略。{}
example.enabled启用示例的安装。false
example.annotations定义将额外添加到示例 StatefulSet 的注释。如果设置,则优先于 commonAnnotations{}
example.podAnnotations要添加到示例 Pod 的注释映射。rollme: "{{ randAlphaNum 5 | quote }}"
example.updateStrategy.type示例 StatefulSet 更新策略类型。RollingUpdate
example.customPodAntiAffinity禁止在同一节点上调度包含指定标签的其他 Pod 时,调度示例 Pod。{}
example.podAffinity定义按节点相对于其他 Pod 调度示例 Pod 的 Pod 亲和性规则。{}
example.nodeAffinity定义按节点调度示例 Pod 的 节点亲和性规则。 {}
example.nodeSelector用于示例 Pod 分配的节点标签。如果设置,则优先于 nodeSelector{}
example.tolerations用于示例 Pod 分配的容忍度。如果设置,则优先于 tolerations[]
example.terminationGracePeriodSeconds优雅终止的时间,在此期间示例 Pod 将处于 Terminating 状态。30
example.hostAliases附加条目添加到示例容器的主机文件中。 []
example.initContainers定义在 Pod 中的示例容器之前运行的容器。[]
example.image.repository示例容器镜像名称。onlyoffice/docs-example
example.image.tag示例容器镜像标签。9.0.4-1
example.image.pullPolicy示例容器镜像拉取策略。IfNotPresent
example.containerSecurityContext.enabled为示例容器启用安全上下文。false
example.dsUrlONLYOFFICE 文档外部地址。仅在需要检查示例中的转换操作时才应更改此设置(例如 http://<documentserver-address>/)。/
example.resources.requests示例容器的请求资源。{}
example.resources.limits示例容器的资源限制。{}
example.extraEnvVars用于示例容器的额外环境变量数组。[]
example.extraConf.configMap包含用于覆盖默认值的 json 文件的 ConfigMap 名称。创建示例请参见此处""
example.extraConf.filename包含自定义值的 json 文件名。必须与 example.extraConf.ConfigMap 中的 key 名称相同。local.json
example.extraVolumes用于示例 Pod 的额外卷数组。[]
example.extraVolumeMounts用于示例容器的额外卷挂载数组。[]
jwt.enabled指定 ONLYOFFICE 文档启用 JSON Web 令牌验证。适用于收件箱和发件箱请求。true
jwt.secret定义用于验证对 ONLYOFFICE 文档请求中的 JSON Web 令牌的密钥。适用于收件箱和发件箱请求。如果值为空,将生成一个随机值,该值将在后续升级中使用。如果设置了值,则将使用该值。 ""
jwt.header定义用于发送 JSON Web 令牌的 http 请求头。适用于收件箱和发件箱请求。Authorization
jwt.inBody指定在向 ONLYOFFICE 文档的请求正文中启用令牌验证。false
jwt.inbox仅用于收件箱请求的 JSON Web 令牌验证参数。如果未指定,则使用通用 jwt 的参数值。{}
jwt.outbox仅用于发件箱请求的 JSON Web 令牌验证参数。如果未指定,则使用通用 jwt 的参数值。{}
jwt.existingSecret包含 jwt 变量的现有密钥名称。如果未指定,将创建一个名为 jwt 的密钥。""
service.existingONLYOFFICE 文档的现有服务名称。如果未指定,将创建一个名为 documentserver 的服务。""
service.annotations要添加到 ONLYOFFICE 文档服务的注释映射。如果设置,则优先于 commonAnnotations{}
service.typeONLYOFFICE 文档服务类型。ClusterIP
service.portONLYOFFICE 文档服务端口。8888
service.sessionAffinityONLYOFFICE 文档服务的会话亲和性。如果未设置,则默认值将为 None""
service.sessionAffinityConfigONLYOFFICE 文档服务会话亲和性的配置。在设置了 service.sessionAffinity 时使用。 {}
ingress.enabled为 ONLYOFFICE 文档启用 Ingress 的创建。false
ingress.annotations要添加到 Ingress 的注释映射。如果设置,则优先于 commonAnnotationsnginx.ingress.kubernetes.io/proxy-body-size: 100m
ingress.ingressClassName用于引用应实现此 Ingress 的 IngressClass。nginx
ingress.controllerName用于区分具有相同 IngressClassName 但来自不同供应商的控制器。ingress-nginx
ingress.hostONLYOFFICE 文档 Ingress 的主机名。""
ingress.tenants如果您需要使用多个名称(例如用于多租户),则为 Ingress 主机名。如果设置,则优先于 ingress.host。如果 ingress.ssl.enabled 设置为 true,则假定所有指定域的证书都由 ingress.ssl.secret 保密。 []
ingress.ssl.enabled为 ONLYOFFICE 文档 Ingress 启用 ssl。false
ingress.ssl.secret用于 ssl 的密钥名称,以挂载到 Ingress 中。tls
ingress.path指定 ONLYOFFICE 文档可用的路径。/
ingress.pathType指定 ONLYOFFICE 文档 Ingress 资源的路径类型。允许的值为 ExactPrefixImplementationSpecificImplementationSpecific
ingress.letsencrypt.enabled在 Let's Encrypt 中启用证书请求创建。在 ingress.enabled 设置为 true 时使用。false
ingress.letsencrypt.clusterIssuerNameClusterIssuer 名称。letsencrypt-prod
ingress.letsencrypt.email您的电子邮件地址,用于 ACME 注册。""
ingress.letsencrypt.server将向其发送证书请求的 Let's Encrypt 服务器地址。https://acme-v02.api.letsencrypt.org/directory
ingress.letsencrypt.secretName用于存储 ACME 帐户私钥的密钥名称。letsencrypt-prod-private-key
openshift.route.enabled为 ONLYOFFICE 文档启用 OpenShift 路由的创建。false
openshift.route.annotations要添加到 OpenShift 路由的注释映射。如果设置,则优先于 commonAnnotations{}
openshift.route.hostONLYOFFICE 文档路由的 OpenShift 路由主机名。""
openshift.route.path指定 ONLYOFFICE 文档可用的路径。/
openshift.route.wildcardPolicyOpenShift 路由中处理通配符子域的策略。允许的值为 NoneSubdomainNone
grafana.enabled启用 Grafana 中指标可视化所需资源的安装。false
grafana.namespace将部署 RBAC 组件和 Grafana 资源的命名空间名称。如果未设置,则名称将从 namespaceOverride(如果已设置)或 .Release.Namespace 中获取。""
grafana.ingress.enabled为 Grafana 启用 Ingress 的创建。当您将 grafana.enabled 设置为 true 并希望使用 Nginx Ingress 访问 Grafana 时使用。false
grafana.ingress.annotations要添加到 Grafana Ingress 的注释映射。如果设置,则优先于 commonAnnotationsnginx.ingress.kubernetes.io/proxy-body-size: 100m
grafana.dashboard.enabled启用现成 Grafana 仪表板的安装。当您将 grafana.enabled 设置为 true 时使用。false
podSecurityContext.enabled为 Pod 启用安全上下文。false
podSecurityContext.converter.fsGroup定义在转换器 Pod 中挂载时,卷中所有文件的所有者和权限将更改成的组 ID。101
podSecurityContext.docservice.fsGroup定义在 Docservice Pod 中挂载时,卷中所有文件的所有者和权限将更改成的组 ID。101
podSecurityContext.jobs.fsGroup定义在 Job 创建的 Pod 中挂载时,卷中所有文件的所有者和权限将更改成的组 ID。101
podSecurityContext.example.fsGroup定义在示例 Pod 中挂载时,卷中所有文件的所有者和权限将更改成的组 ID。1001
podSecurityContext.tests.fsGroup定义在测试 Pod 中挂载时,卷中所有文件的所有者和权限将更改成的组 ID。101
webProxy.enabled指定您的网络中是否使用 Web 代理来使 k8s 集群的 Pod 访问互联网。false
webProxy.http用于 HTTP 流量的 Web 代理地址。http://proxy.example.com
webProxy.https用于 HTTPS 流量的 Web 代理地址。https://proxy.example.com
webProxy.noProxy不应使用 Web 代理的 IP 地址、k8s 服务名称或域名的模式。localhost,127.0.0.1,docservice
privateCluster指定 k8s 集群是否在无法访问互联网的私有网络中使用。false
upgrade.job.enabled在升级 ONLYOFFICE 文档之前启用预升级任务的执行。true
upgrade.job.annotations定义将额外添加到预升级 Job 的注释。如果设置,则优先于 commonAnnotations{}
upgrade.job.podAnnotations要添加到预升级 Pod 的注释映射。{}
upgrade.job.customPodAntiAffinity禁止在同一节点上调度包含指定标签的其他 Pod 时,调度预升级 Job Pod。{}
upgrade.job.podAffinity定义按节点相对于其他 Pod 调度预升级 Job Pod 的 Pod 亲和性规则。{}
upgrade.job.nodeAffinity定义按节点调度预升级 Job Pod 的 节点亲和性规则。 {}
upgrade.job.nodeSelector用于预升级 Job Pod 分配的节点标签。如果设置,则优先于 nodeSelector{}
upgrade.job.tolerations用于预升级 Job Pod 分配的容忍度。如果设置,则优先于 tolerations[]
upgrade.job.initContainers定义在 Pod 中的预升级容器之前运行的容器。[]
upgrade.job.image.repository升级 Job 的镜像仓库。onlyoffice/docs-utils
upgrade.job.image.tag升级 Job 的镜像标签。9.0.4-1
upgrade.job.image.pullPolicy升级 Job 的镜像拉取策略。IfNotPresent
upgrade.job.containerSecurityContext.enabled为预升级容器启用安全上下文。false
upgrade.job.resources.requests预升级 Job 容器的请求资源。{}
upgrade.job.resources.limits预升级 Job 容器的资源限制。{}
upgrade.existingConfigmap.tblRemove.name包含用于从数据库删除表的 sql 文件的现有 ConfigMap 的名称。remove-db-scripts
upgrade.existingConfigmap.tblRemove.keyName包含从数据库删除表的说明的 sql 文件名。必须与 upgrade.existingConfigmap.tblRemove.name 中的 key 名称相同。 removetbl.sql
upgrade.existingConfigmap.tblCreate.name包含用于在数据库中创建表的 sql 文件的现有 ConfigMap 的名称。init-db-scripts
upgrade.existingConfigmap.tblCreate.keyName包含在数据库中创建表的说明的 sql 文件名。必须与 upgrade.existingConfigmap.tblCreate.name 中的 key 名称相同。 createdb.sql
upgrade.existingConfigmap.dsStop包含 ONLYOFFICE 文档升级脚本的现有 ConfigMap 的名称。如果设置,则忽略前四个参数。必须包含一个键 stop.sh""
rollback.job.enabled在回滚 ONLYOFFICE 文档之前启用预回滚任务的执行。true
rollback.job.annotations定义将额外添加到预回滚 Job 的注释。如果设置,则优先于 commonAnnotations{}
rollback.job.podAnnotations要添加到预回滚 Pod 的注释映射。{}
rollback.job.customPodAntiAffinity禁止在同一节点上调度包含指定标签的其他 Pod 时,调度预回滚 Job Pod。{}
rollback.job.podAffinity定义按节点相对于其他 Pod 调度预回滚 Job Pod 的 Pod 亲和性规则。{}
rollback.job.nodeAffinity定义按节点调度预回滚 Job Pod 的 节点亲和性规则。 {}
rollback.job.nodeSelector用于预回滚 Job Pod 分配的节点标签。如果设置,则优先于 nodeSelector{}
rollback.job.tolerations用于预回滚 Job Pod 分配的容忍度。如果设置,则优先于 tolerations[]
rollback.job.initContainers定义在 Pod 中的预回滚容器之前运行的容器。[]
rollback.job.image.repository回滚 Job 的镜像仓库。onlyoffice/docs-utils
rollback.job.image.tag回滚 Job 的镜像标签。9.0.4-1
rollback.job.image.pullPolicy回滚 Job 的镜像拉取策略。IfNotPresent
rollback.job.containerSecurityContext.enabled为预回滚容器启用安全上下文。false
rollback.job.resources.requests回滚 Job 容器的请求资源。{}
rollback.job.resources.limits回滚 Job 容器的资源限制。{}
rollback.existingConfigmap.tblRemove.name包含用于从数据库删除表的 sql 文件的现有 ConfigMap 的名称。remove-db-scripts
rollback.existingConfigmap.tblRemove.keyName包含从数据库删除表的说明的 sql 文件名。必须与 rollback.existingConfigmap.tblRemove.name 中的 key 名称相同。 removetbl.sql
rollback.existingConfigmap.tblCreate.name包含用于在数据库中创建表的 sql 文件的现有 ConfigMap 的名称。init-db-scripts
rollback.existingConfigmap.tblCreate.keyName包含在数据库中创建表的说明的 sql 文件名。必须与 rollback.existingConfigmap.tblCreate.name 中的 key 名称相同。 createdb.sql
rollback.existingConfigmap.dsStop包含 ONLYOFFICE 文档回滚脚本的现有 ConfigMap 的名称。如果设置,则忽略前四个参数。必须包含一个键 stop.sh""
delete.job.enabled在删除 ONLYOFFICE 文档之前启用预删除任务的执行。true
delete.job.annotations定义将额外添加到预删除 Job 的注释。如果设置,则优先于 commonAnnotations{}
delete.job.podAnnotations要添加到预删除 Pod 的注释映射。{}
delete.job.customPodAntiAffinity禁止在同一节点上调度包含指定标签的其他 Pod 时,调度预删除 Job Pod。{}
delete.job.podAffinity定义按节点相对于其他 Pod 调度预删除 Job Pod 的 Pod 亲和性规则。{}
delete.job.nodeAffinity定义按节点调度预删除 Job Pod 的 节点亲和性规则。 {}
delete.job.nodeSelector用于预删除 Job Pod 分配的节点标签。如果设置,则优先于 nodeSelector{}
delete.job.tolerations用于预删除 Job Pod 分配的容忍度。如果设置,则优先于 tolerations[]
delete.job.initContainers定义在 Pod 中的预删除容器之前运行的容器。[]
delete.job.image.repository删除 Job 的镜像仓库。onlyoffice/docs-utils
delete.job.image.tag删除 Job 的镜像标签。9.0.4-1
delete.job.image.pullPolicy删除 Job 的镜像拉取策略。IfNotPresent
delete.job.containerSecurityContext.enabled为预删除容器启用安全上下文。false
delete.job.resources.requests删除 Job 容器的请求资源。{}
delete.job.resources.limits删除 Job 容器的资源限制。{}
delete.existingConfigmap.tblRemove.name包含用于从数据库删除表的 sql 文件的现有 ConfigMap 的名称。remove-db-scripts
delete.existingConfigmap.tblRemove.keyName包含从数据库删除表的说明的 sql 文件名。必须与 delete.existingConfigmap.tblRemove.name 中的 key 名称相同。 removetbl.sql
delete.existingConfigmap.dsStop包含 ONLYOFFICE 文档删除脚本的现有 ConfigMap 的名称。如果设置,则忽略前两个参数。必须包含一个键 stop.sh""
install.job.enabled在安装 ONLYOFFICE 文档之前启用预安装任务的执行。true
install.job.annotations定义将额外添加到预安装 Job 的注释。如果设置,则优先于 commonAnnotations{}
install.job.podAnnotations要添加到预安装 Pod 的注释映射。{}
install.job.customPodAntiAffinity禁止在同一节点上调度包含指定标签的其他 Pod 时,调度预安装 Job Pod。{}
install.job.podAffinity定义按节点相对于其他 Pod 调度预安装 Job Pod 的 Pod 亲和性规则。{}
install.job.nodeAffinity定义按节点调度预安装 Job Pod 的 节点亲和性规则。 {}
install.job.nodeSelector用于预安装 Job Pod 分配的节点标签。如果设置,则优先于 nodeSelector{}
install.job.tolerations用于预安装 Job Pod 分配的容忍度。如果设置,则优先于 tolerations[]
install.job.initContainers定义在 Pod 中的预安装容器之前运行的容器。[]
install.job.image.repository预安装 ONLYOFFICE 文档 Job 的镜像仓库。onlyoffice/docs-utils
install.job.image.tag预安装 ONLYOFFICE 文档 Job 的镜像标签。9.0.4-1
install.job.image.pullPolicy预安装 ONLYOFFICE 文档 Job 的镜像拉取策略。IfNotPresent
install.job.containerSecurityContext.enabled为预安装容器启用安全上下文。false
install.job.resources.requests预安装 Job 容器的请求资源。{}
install.job.resources.limits预安装 Job 容器的资源限制。{}
install.existingConfigmap.tblCreate.name包含用于在数据库中创建表的 sql 文件的现有 ConfigMap 的名称。init-db-scripts
install.existingConfigmap.tblCreate.keyName包含在数据库中创建表的说明的 sql 文件名。必须与 install.existingConfigmap.tblCreate.name 中的 key 名称相同。 createdb.sql
install.existingConfigmap.initdb包含 initdb 脚本的现有 ConfigMap 的名称。如果设置,则忽略前两个参数。必须包含一个键 initdb.sh""
clearCache.job.enabled在升级 ONLYOFFICE 文档后启用清除缓存任务的执行。清除缓存任务有一个 post-upgrade 钩子,在 Kubernetes 中任何资源升级后执行。它会清除缓存目录。true
clearCache.job.annotations定义将额外添加到清除缓存 Job 的注释。如果设置,则优先于 commonAnnotations{}
clearCache.job.podAnnotations要添加到清除缓存 Pod 的注释映射。{}
clearCache.job.customPodAntiAffinity禁止在同一节点上调度包含指定标签的其他 Pod 时,调度清除缓存 Job Pod。{}
clearCache.job.podAffinity定义按节点相对于其他 Pod 调度清除缓存 Job Pod 的 Pod 亲和性规则。{}
clearCache.job.nodeAffinity定义按节点调度清除缓存 Job Pod 的 节点亲和性规则。 {}
clearCache.job.nodeSelector用于清除缓存 Job Pod 分配的节点标签。如果设置,则优先于 nodeSelector{}
clearCache.job.tolerations用于清除缓存 Job Pod 分配的容忍度。如果设置,则优先于 tolerations[]
clearCache.job.initContainers定义在 Pod 中的清除缓存容器之前运行的容器。[]
clearCache.job.image.repository清除缓存 ONLYOFFICE 文档 Job 的镜像仓库。onlyoffice/docs-utils
clearCache.job.image.tag清除缓存 ONLYOFFICE 文档 Job 的镜像标签。9.0.4-1
clearCache.job.image.pullPolicy清除缓存 ONLYOFFICE 文档 Job 的镜像拉取策略。IfNotPresent
clearCache.job.containerSecurityContext.enabled为清除缓存容器启用安全上下文。false
clearCache.job.resources.requests清除缓存 Job 容器的请求资源。{}
clearCache.job.resources.limits清除缓存 Job 容器的资源限制。{}
clearCache.existingConfigmap.name包含清除缓存目录的自定义脚本的现有 ConfigMap 的名称。如果设置,则不会创建默认的 configmap。""
clearCache.existingConfigmap.keyName包含清除缓存目录说明的脚本名称。如果使用自定义脚本,必须与 clearCache.existingConfigmap.name 中的 key 名称相同。clearCache.sh
grafanaDashboard.job.annotations定义将额外添加到 Grafana 仪表板 Job 的注释。如果设置,则优先于 commonAnnotations{}
grafanaDashboard.job.podAnnotations要添加到 Grafana 仪表板 Pod 的注释映射。{}
grafanaDashboard.job.customPodAntiAffinity禁止在同一节点上调度包含指定标签的其他 Pod 时,调度 Grafana 仪表板 Job Pod。{}
grafanaDashboard.job.podAffinity定义按节点相对于其他 Pod 调度 Grafana 仪表板 Job Pod 的 Pod 亲和性规则。{}
grafanaDashboard.job.nodeAffinity定义按节点调度 Grafana 仪表板 Job Pod 的 节点亲和性规则。 {}
grafanaDashboard.job.nodeSelector用于 Grafana 仪表板 Job Pod 分配的节点标签。如果设置,则优先于 nodeSelector{}
grafanaDashboard.job.tolerations用于 Grafana 仪表板 Job Pod 分配的容忍度。如果设置,则优先于 tolerations[]
grafanaDashboard.job.initContainers定义在 Pod 中的 Grafana 仪表板容器之前运行的容器。[]
grafanaDashboard.job.image.repositoryGrafana 仪表板 ONLYOFFICE 文档 Job 的镜像仓库。onlyoffice/docs-utils
grafanaDashboard.job.image.tagGrafana 仪表板 ONLYOFFICE 文档 Job 的镜像标签。9.0.4-1
grafanaDashboard.job.image.pullPolicyGrafana 仪表板 ONLYOFFICE 文档 Job 的镜像拉取策略。IfNotPresent
grafanaDashboard.job.containerSecurityContext.enabled为 Grafana 仪表板容器启用安全上下文。false
grafanaDashboard.job.resources.requestsGrafana 仪表板 Job 容器的请求资源。{}
grafanaDashboard.job.resources.limitsGrafana 仪表板 Job 容器的资源限制。{}
wopiKeysGeneration.job.annotations定义将额外添加到 WOPI 密钥生成 Job 的注释。如果设置,则优先于 commonAnnotations{}
wopiKeysGeneration.job.podAnnotations要添加到 WOPI 密钥生成 Pod 的注释映射。{}
wopiKeysGeneration.job.customPodAntiAffinity禁止在同一节点上调度包含指定标签的其他 Pod 时,调度 WOPI 密钥生成 Job Pod。{}
wopiKeysGeneration.job.podAffinity定义按节点相对于其他 Pod 调度 WOPI 密钥生成 Job Pod 的 Pod 亲和性规则。{}
wopiKeysGeneration.job.nodeAffinity定义按节点调度 WOPI 密钥生成 Job Pod 的 节点亲和性规则。 {}
wopiKeysGeneration.job.nodeSelector用于 WOPI 密钥生成 Job Pod 分配的节点标签。如果设置,则优先于 nodeSelector{}
wopiKeysGeneration.job.tolerations用于 WOPI 密钥生成 Job Pod 分配的容忍度。如果设置,则优先于 tolerations[]
wopiKeysGeneration.job.initContainers定义在 Pod 中的 WOPI 密钥生成容器之前运行的容器。[]
wopiKeysGeneration.job.image.repositoryWOPI 密钥生成 ONLYOFFICE 文档 Job 的镜像仓库。onlyoffice/docs-utils
wopiKeysGeneration.job.image.tagWOPI 密钥生成 ONLYOFFICE 文档 Job 的镜像标签。9.0.4-1
wopiKeysGeneration.job.image.pullPolicyWOPI 密钥生成 ONLYOFFICE 文档 Job 的镜像拉取策略。IfNotPresent
wopiKeysGeneration.job.containerSecurityContext.enabled为 WOPI 密钥生成容器启用安全上下文。false
wopiKeysGeneration.job.resources.requestsWOPI 密钥生成 Job 容器的请求资源。{}
wopiKeysGeneration.job.resources.limitsWOPI 密钥生成 Job 容器的资源限制。{}
wopiKeysDeletion.job.enabled 在删除 ONLYOFFICE 文档之前启用 WOPI 密钥删除任务的执行。它会删除自动生成的 WOPI 密钥。当 wopi.enabledwopi.keys.generationwopiKeysDeletion.job.enabled 都设置为 true 时执行。 true
wopiKeysDeletion.job.annotations定义将额外添加到 WOPI 密钥删除 Job 的注释。如果设置,则优先于 commonAnnotations{}
wopiKeysDeletion.job.podAnnotations要添加到 WOPI 密钥删除 Pod 的注释映射。{}
wopiKeysDeletion.job.customPodAntiAffinity禁止在同一节点上调度包含指定标签的其他 Pod 时,调度 WOPI 密钥删除 Job Pod。{}
wopiKeysDeletion.job.podAffinity定义按节点相对于其他 Pod 调度 WOPI 密钥删除 Job Pod 的 Pod 亲和性规则。{}
wopiKeysDeletion.job.nodeAffinity定义按节点调度 WOPI 密钥删除 Job Pod 的 节点亲和性规则。 {}
wopiKeysDeletion.job.nodeSelector用于 WOPI 密钥删除 Job Pod 分配的节点标签。如果设置,则优先于 nodeSelector{}
wopiKeysDeletion.job.tolerations用于 WOPI 密钥删除 Job Pod 分配的容忍度。如果设置,则优先于 tolerations[]
wopiKeysDeletion.job.initContainers定义在 Pod 中的 WOPI 密钥删除容器之前运行的容器。[]
wopiKeysDeletion.job.image.repositoryWOPI 密钥删除 ONLYOFFICE 文档 Job 的镜像仓库。onlyoffice/docs-utils
wopiKeysDeletion.job.image.tagWOPI 密钥删除 ONLYOFFICE 文档 Job 的镜像标签。9.0.4-1
wopiKeysDeletion.job.image.pullPolicyWOPI 密钥删除 ONLYOFFICE 文档 Job 的镜像拉取策略。IfNotPresent
wopiKeysDeletion.job.containerSecurityContext.enabled为 WOPI 密钥删除容器启用安全上下文。false
wopiKeysDeletion.job.resources.requestsWOPI 密钥删除 Job 容器的请求资源。{}
wopiKeysDeletion.job.resources.limitsWOPI 密钥删除 Job 容器的资源限制。{}
tests.enabled启用 ONLYOFFICE 文档启动测试和连接依赖项可用性测试所需的资源创建。这些资源将在运行 helm test 命令时使用。true
tests.annotations定义将额外添加到测试 Pod 的注释。如果设置,则优先于 commonAnnotations{}
tests.customPodAntiAffinity禁止在同一节点上调度包含指定标签的其他 Pod 时,调度测试 Pod。{}
tests.podAffinity定义按节点相对于其他 Pod 调度测试 Pod 的 Pod 亲和性规则。{}
tests.nodeAffinity定义按节点调度测试 Pod 的 节点亲和性规则。 {}
tests.nodeSelector用于测试 Pod 分配的节点标签。如果设置,则优先于 nodeSelector{}
tests.tolerations用于测试 Pod 分配的容忍度。如果设置,则优先于 tolerations[]
tests.initContainers定义在 Pod 中的测试容器之前运行的容器。[]
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。用于商业开发者版。
    • -ee。用于商业企业版。

    此参数的默认值指向 ONLYOFFICE 文档服务器开发者版。要了解有关此版本的更多信息并将其与其他版本进行比较,请参阅此页面上的比较表。

使用 --set key=value[,key=value] 参数为 helm install 指定每个参数。例如:

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

此命令通过 HTTPS 暴露 ONLYOFFICE 文档。

或者,可以在安装 Chart 时提供一个 YAML 文件来指定参数的值。例如:

$ helm install documentserver -f values.yaml onlyoffice/docs
您可以使用默认的 values.yaml
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 文档
    1. 通过服务暴露 ONLYOFFICE 文档(仅限 HTTP)
      如果您打算通过 HTTPS 暴露 ONLYOFFICE 文档,应跳过此步骤。

      这种暴露方式性能开销最小,它会创建一个负载均衡器来访问 ONLYOFFICE 文档。如果您使用外部 TLS 终结,并且 k8s 集群中没有其他 WEB 应用程序,请使用此暴露类型。

      要通过服务暴露 ONLYOFFICE 文档,请将 service.type 参数设置为 LoadBalancer:

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

      运行以下命令获取 documentserver 服务的 IP:

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

      之后,ONLYOFFICE 文档将在 http://DOCUMENTSERVER-SERVICE-IP/ 可用。

      如果服务 IP 为空,请尝试获取 documentserver 服务的主机名:

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

      在这种情况下,ONLYOFFICE 文档将在 http://DOCUMENTSERVER-SERVICE-HOSTNAME/ 可用。

    2. 通过 Ingress 暴露 ONLYOFFICE 文档
      1. 安装 Kubernetes Nginx Ingress 控制器

        要将 Nginx Ingress 控制器安装到您的集群,请运行以下命令:

        $ helm install nginx-ingress ingress-nginx/ingress-nginx --set controller.publishService.enabled=true,controller.replicaCount=2
        要使用相同参数安装 Nginx Ingress 并启用暴露 ingress-nginx 指标供 Prometheus 收集,请运行以下命令:
        $ helm install nginx-ingress -f https://raw.githubusercontent.com/ONLYOFFICE/Kubernetes-Docs/master/sources/ingress_values.yaml ingress-nginx/ingress-nginx

        有关通过 Helm 安装 Nginx Ingress 的更多详细信息,请参阅此处

      2. 通过 HTTP 暴露 ONLYOFFICE 文档
        如果您打算通过 HTTPS 暴露 ONLYOFFICE 文档,应跳过此步骤。

        与服务暴露相比,这种暴露方式性能开销更大,它也会创建一个负载均衡器来访问 ONLYOFFICE 文档。如果您使用外部 TLS 终结,并且 k8s 集群中有多个 WEB 应用程序,请使用此类型。您可以为它们使用一组 Ingress 实例和一个负载均衡器。这可以优化入口点性能并减少您的集群费用,因为提供商可能会对每个负载均衡器收费。

        要通过 Ingress HTTP 暴露 ONLYOFFICE 文档,请将 ingress.enabled 参数设置为 true:

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

        运行以下命令获取 documentserver Ingress 的 IP:

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

        之后,ONLYOFFICE 文档将在 http://DOCUMENTSERVER-INGRESS-IP/ 可用。

        如果 Ingress IP 为空,请尝试获取 documentserver Ingress 的主机名:

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

        在这种情况下,ONLYOFFICE 文档将在 http://DOCUMENTSERVER-INGRESS-HOSTNAME/ 可用。

      3. 通过 HTTPS 暴露 ONLYOFFICE 文档

        这种暴露方式允许您为 ONLYOFFICE 文档启用内部 TLS 终结。

        创建包含 SSL 证书的 tls 密钥。

        将 SSL 证书和私钥放入 tls.crttls.key 文件中,然后运行:

        $ 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

        运行以下命令获取 documentserver Ingress 的 IP:

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

        如果 Ingress IP 为空,请尝试获取 documentserver Ingress 的主机名:

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

        通过您的 DNS 提供商将 documentserver Ingress IP 或主机名与您的域名关联起来。

        之后,ONLYOFFICE 文档将在 https://your-domain-name/ 可用。

      4. 使用 Let's Encrypt 证书通过 HTTPS 暴露 ONLYOFFICE 文档
        • 添加 Helm 仓库:
          $ helm repo add jetstack https://charts.jetstack.io
          $ helm repo update
        • 安装 cert-manager
          $ helm install cert-manager --version v1.17.4 jetstack/cert-manager \
            --namespace cert-manager \
            --create-namespace \
            --set crds.enabled=true \
            --set crds.keep=false

          接下来,通过将 ingress.enabledingress.ssl.enabledingress.letsencrypt.enabled 参数设置为 true 来执行安装或升级。同时,在参数 ingress.letsencrypt.emailingress.hostingress.tenants(例如,--set "ingress.tenants={tenant1.example.com,tenant2.example.com}")中设置您自己的值,如果您想使用多个域名。

    3. 在虚拟路径上暴露 ONLYOFFICE 文档

      这种暴露方式允许您在虚拟路径上暴露 ONLYOFFICE 文档,例如 http://your-domain-name/docs。要通过 Ingress 在虚拟路径上暴露 ONLYOFFICE 文档,请设置 ingress.enabledingress.hostingress.path 参数。

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

      支持虚拟路径配置的 Ingress 控制器列表:

      对于使用 Ingress NGINX by Kubernetes 的虚拟路径配置,请将模式 (/|$)(.*) 附加到 ingress.path,例如 /docs 变为 /docs(/|$)(.*)

  4. 在 OpenShift 中通过路由暴露 ONLYOFFICE 文档

    这种暴露方式允许您在 OpenShift 中通过路由暴露 ONLYOFFICE 文档。要通过路由暴露 ONLYOFFICE 文档,请使用以下参数:openshift.route.enabledopenshift.route.hostopenshift.route.path

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

    对于 tls 终结,请通过 OpenShift Web 控制台手动将证书添加到路由。

6. 扩展 ONLYOFFICE 文档(可选)
此步骤可选。如果您想使用默认部署设置,可以完全跳过此步骤。
  1. 水平 Pod 自动缩放

    您可以启用自动缩放,以便根据指标的值和类型自动计算 docserviceconverter 部署的副本数。

    对于资源指标,必须注册 API metrics.k8s.io,这通常由 metrics-server 提供。它可以作为集群附加组件启动。

    要使用目标利用率值(target.type==Utilization),必须在部署中指定 resources.requests 的值。

    有关水平 Pod 自动缩放的更多信息,请参阅此处

    要为 docservice 部署启用 HPA,请指定 docservice.autoscaling.enabled=true 参数。在这种情况下,docservice.replicas 参数将被忽略,副本数由 HPA 控制。

    类似地,要为 converter 部署启用 HPA,请指定 converter.autoscaling.enabled=true 参数。在这种情况下,converter.replicas 参数将被忽略,副本数由 HPA 控制。

    启用 autoscaling.enabled 参数后,默认情况下自动缩放将根据平均 CPU 利用率百分比调整副本数。有关其他可配置的自动缩放参数,请参阅参数表。

  2. 手动缩放

    docserviceconverter 部署默认各包含 2 个 Pod。

    要缩放 docservice 部署,请使用以下命令:

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

    其中 POD_COUNTdocservice Pod 的数量。

    converter 部署执行相同操作:

    $ kubectl scale -n default deployment converter --replicas=POD_COUNT
7. 更新 ONLYOFFICE 文档

必须设置更新参数。例如:

$ helm upgrade documentserver onlyoffice/docs \
  --set docservice.image.tag=[version]
您还需要指定安装期间指定的参数。

或者修改 values.yaml 文件并运行命令:

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

运行 helm upgrade 命令会启动一个钩子,该钩子会关闭 ONLYOFFICE 文档并清理数据库。这在更新 ONLYOFFICE 文档版本时需要。默认的钩子执行时间为 300 秒。可以使用 --timeout [time] 更改执行时间,例如:

$ helm upgrade documentserver -f values.yaml onlyoffice/docs --timeout 15m
在位于 Web 代理后面或无法访问互联网的私有 k8s 集群中升级 ONLYOFFICE 文档时,请参阅下面的注意事项

如果您想更新 ONLYOFFICE 文档版本以外的任何参数,请在 helm upgrade 命令中不带 hooks 运行,例如:

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

要回滚更新,请运行以下命令:

$ helm rollback documentserver
在位于 Web 代理后面或无法访问互联网的私有 k8s 集群中回滚 ONLYOFFICE 文档时,请参阅下面的注意事项
8. 关闭 ONLYOFFICE 文档(可选)

要执行关闭,请运行以下命令:

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

其中 <NAMESPACE> 是安装了 ONLYOFFICE 文档的命名空间。如果未指定,将使用默认值:default

例如:

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

成功执行 Job 创建的 Pod shutdown-ds 后,使用以下命令删除此 Job:

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

如果在停止 ONLYOFFICE 文档后需要再次启动它,请重新启动 docservice 和 converter Pod。例如,使用以下命令:

$ kubectl delete pod converter-*** docservice-*** -n <NAMESPACE>
9. 更新 ONLYOFFICE 文档许可证(可选)

从 v5.1.1 版本开始,您可以通过简单地使用新许可证重新创建密钥来更新许可证,而无需删除或重启 Pod。documentserver 现在能够在替换许可证文件后动态重新读取它。例如:

要更新许可证,您需要执行以下步骤:

  • 将包含新密钥的 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 是包含许可证的现有密钥的名称

就这样,documentserver 将自行重新读取新许可证。

[已弃用方法]重启 docservice 和 converter Pod。例如,使用以下命令:
$ kubectl delete pod converter-*** docservice-*** -n <NAMESPACE>
10. ONLYOFFICE 文档安装测试(可选)

您可以通过运行以下命令测试 ONLYOFFICE 文档的可用性以及对连接依赖项的访问:

$ helm test documentserver -n <NAMESPACE>

输出应包含以下行:

Phase: Succeeded

要查看作为 helm test 命令结果运行的 Pod 的日志,请运行以下命令:

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

ONLYOFFICE 文档的可用性检查被认为是优先级,因此如果检查失败并出现错误,则测试被视为失败。

之后,您可以通过运行以下命令删除 test-ds Pod:

$ kubectl delete pod test-ds -n <NAMESPACE>
此测试仅供参考,不能保证 100% 的可用性结果。即使所有检查都成功完成,应用程序中也可能发生错误。在这种情况下,可以在应用程序日志中找到更详细的信息。
11. 在私有 k8s 集群中运行任务(可选)

当运行用于安装、更新、回滚和删除的Job时,启动的容器需要访问互联网以下载最新的 sql 脚本。如果您的 k8s 集群中禁止容器访问外部网络,则可以通过设置privateCluster=true参数并手动创建一个包含必要 sql 脚本的ConfigMap来执行这些任务。

为此,请运行以下命令:

如果您的集群中已存在remove-db-scriptsinit-db-scripts配置映射,请删除它们:

$ kubectl delete cm remove-db-scripts init-db-scripts

下载用于数据库清理和数据库表创建的 ONLYOFFICE 文档数据库脚本:

如果选择 PostgreSQL 作为数据库服务器:

$ wget -O removetbl.sql https://raw.githubusercontent.com/ONLYOFFICE/server/master/schema/postgresql/removetbl.sql
$ wget -O createdb.sql https://raw.githubusercontent.com/ONLYOFFICE/server/master/schema/postgresql/createdb.sql

如果选择 MySQL 作为数据库服务器:

$ wget -O removetbl.sql https://raw.githubusercontent.com/ONLYOFFICE/server/master/schema/mysql/removetbl.sql
$ wget -O createdb.sql https://raw.githubusercontent.com/ONLYOFFICE/server/master/schema/mysql/createdb.sql

从这些文件创建配置映射:

$ kubectl create configmap remove-db-scripts --from-file=./removetbl.sql
$ kubectl create configmap init-db-scripts --from-file=./createdb.sql

如果您为ConfigMap及其创建的文件指定了不同的名称,请为相应的任务设置适当的参数:

  • 用于数据库清理脚本的existingConfigmap.tblRemove.nameexistingConfigmap.tblRemove.keyName
  • 用于数据库表创建脚本的existingConfigmap.tblCreate.nameexistingConfigmap.tblCreate.keyName

接下来,在执行helm install|upgrade|rollback|delete命令时,设置参数privateCluster=true

如果可以在您的网络中使用 Web 代理以确保 Pod 容器可以访问互联网,那么您可以保留参数privateCluster=false,无需手动创建带有 sql 脚本的配置映射,并设置参数webProxy.enabled=true,同时为 Web 代理设置适当的参数。
12. 访问信息页面(可选)

默认情况下,对/info页面的访问是受限的。为了允许访问,您需要使用proxy.infoAllowedIP参数指定 IP 地址或子网(在这种情况下,它们将是代理容器客户端)。考虑到 Kubernetes 网络交互的特性,有可能获取用户的原始 IP(代理客户端),尽管这不是标准场景。通常,Pod/节点/负载均衡器地址实际上是客户端,因此应使用这些地址。在这种情况下,信息页面的访问将对所有人可用。您可以使用 Nginx 基本认证进一步限制对info页面的访问,您可以通过设置proxy.infoAllowedUser参数值并使用proxy.infoAllowedPassword参数设置密码来启用该认证,或者您可以使用proxy.infoAllowedExistingSecret参数设置包含密码的现有密钥的名称。

使用 Grafana 可视化指标(可选)

此步骤可选。如果您不想安装 Grafana,可以跳过本部分。
1. 部署 Grafana
假设步骤 #6.2 已完成。
  1. 不安装现成仪表板部署 Grafana
    如果您想部署 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 仪表板,请将grafana.enabledgrafana.dashboard.enabled参数设置为true。如果 ONLYOFFICE 文档已安装,您需要运行helm upgrade documentserver onlyoffice/docs --set grafana.enabled=true --set grafana.dashboard.enabled=true命令,或者如果参数已在values.yaml文件中指定,则运行helm upgrade documentserver -f ./values.yaml onlyoffice/docs。结果,将以JSON格式从 Grafana 网站下载现成的仪表板,对其进行必要的编辑,并从中创建配置映射。还将添加一个仪表板来可视化来自 ONLYOFFICE 文档的指标(假设步骤 #6 已完成)。

    2. 安装 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 \
        --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 中:

      • 节点导出器
      • 部署 Statefulset Daemonset
      • 用于 Prometheus Redis 导出器的 Redis 仪表板
      • RabbitMQ-概述
      • PostgreSQL 数据库
      • NGINX Ingress 控制器
      • ONLYOFFICE 文档
      • Pod 和容器的资源使用情况
      您可以在此处查看在 Grafana 中可视化的 ONLYOFFICE 文档指标的描述。

      有关通过 Helm 安装 Grafana 的更多详细信息,请参阅此处

2. 通过 Ingress 访问 Grafana
假设步骤 #5.3.2.1 已完成。

如果 ONLYOFFICE 文档在安装时使用了参数grafana.ingress.enabled步骤 #5.2),则访问 Grafana 的地址为:http://INGRESS-ADDRESS/grafana/

如果 Ingress 是使用安全连接安装的(步骤 #5.3.2.3),则访问 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 接收到的指标。

文章: 标签:
浏览所有标签