MongoDB Controllers for Kubernetes Operator 根据您写入的规范文件创建容器化MongoDB Ops Manager部署。
创建或更新MongoDB Ops Manager资源规范后,您可以指示MongoDB Controllers for Kubernetes Operator 将此规范应用您的Kubernetes环境。 Kubernetes Operator 创建MongoDB Ops Manager所需的服务和自定义Kubernetes资源,然后在Kubernetes环境中的容器中部署MongoDB Ops Manager及其后端应用程序数据库。
每个MongoDB Ops Manager资源都使用 YAML 中的对象规范来定义部署的特征和设置。
示例
以下示例显示了 Ops Manager 部署的资源规范:
1 apiVersion: mongodb.com/v1 2 kind: MongoDBOpsManager 3 metadata: 4 name: om 5 spec: 6 topology: SingleCluster # optional, SingleCluster by default 7 opsManagerURL: https://link.to.configured.load-balancer.example.com # optional OM URL for the operator 8 replicas: 1 9 version: "8.0.0" 10 adminCredentials: ops-manager-admin-secret 11 configuration: 12 mms.fromEmailAddr: admin@example.com 13 mms.security.allowCORS: "false" 14 security: 15 tls: 16 ca: issuer-ca 17 backup: 18 enabled: true 19 encryption: 20 kmip: 21 server: 22 url: kmip.corp.mongodb.com:5696 23 ca: mongodb-kmip-certificate-authority-pem 24 headDB: 25 storage: "30Gi" 26 labelSelector: 27 matchLabels: 28 app: my-app 29 opLogStores: 30 - name: oplog1 31 # Sets labels for the oplog store. 32 assignmentLabels: ["test1", "test2"] 33 mongodbResourceRef: 34 name: my-oplog-db 35 mongodbUserRef: 36 name: my-oplog-user 37 s3Stores: 38 - name: s3store1 39 # Sets labels for the S3 store. 40 assignmentLabels: ["test1", "test2"] 41 42 mongodbResourceRef: 43 name: my-s3-metadata-db 44 mongodbUserRef: 45 name: my-s3-store-user 46 s3SecretRef: 47 name: my-s3-credentials 48 pathStyleAccessEnabled: true 49 s3BucketEndpoint: s3.region.amazonaws.com 50 s3BucketName: my-bucket 51 applicationDatabase: 52 passwordSecretKeyRef: 53 name: om-db-user-secret 54 key: password 55 members: 3 56 topology: SingleCluster 57 version: "7.0.21-ubi8" 58 featureCompatibilityVersion: "6.0" # During upgrade, set this FCV value to your currently deployed AppDB version. 59 security: 60 certsSecretPrefix: appdb 61 tls: 62 ca: issuer-ca
1 apiVersion: mongodb.com/v1 2 kind: MongoDBOpsManager 3 metadata: 4 name: om 5 spec: 6 topology: MultiCluster # optional, SingleCluster by default 7 opsManagerURL: https://link.to.configured.lb.example.com # optional OM URL for the operator 8 clusterSpecList: # optional ClusterSpecOMItem list, the type is different than ClusterSpecItem for AppDB and MongoDB 9 - clusterName: cluster-1 # required 10 replicas: 1 # required, OM application replicas 11 # optional parameters to override those defined at MongoDBOpsManager level 12 clusterDomain: cluster-1.example.com # optional, default cluster.local 13 jvmParameters: ["-Xmx4352m","-Xms4352m"] 14 externalConnectivity: # optional to override 15 type: LoadBalancer 16 port: 9090 17 annotations: 18 key: value 19 statefulSet: # StatefulSetSpecWrapper override 20 spec: {} 21 metadata: {} 22 configuration: 23 automation.versions.source: mongodb 24 mms.adminEmailAddr: cloud-manager-support@mongodb.com 25 backup: # MongoDBOpsManagerBackup, optional, we only support a subset of fields 26 members: 1 # backup daemon replicas, optional, default=1 27 assignmentLabels: [] # assignment labels to override 28 jvmParameters: ["-Xmx4352m","-Xms4352m"] # optional 29 statefulSet: # mdbc.StatefulSetConfiguration, optional to override for backup daemon 30 spec: {} 31 metadata: {} 32 - clusterName: cluster-2 33 replicas: 1 34 35 .... 36 37 replicas: 1 38 version: "8.0.0" 39 adminCredentials: ops-manager-admin-secret 40 configuration: 41 mms.fromEmailAddr: admin@example.com 42 mms.security.allowCORS: "false" 43 backup: 44 enabled: true 45 encryption: 46 kmip: 47 server: 48 url: kmip.corp.mongodb.com:5696 49 ca: mongodb-kmip-certificate-authority-pem 50 headDB: 51 storage: "30Gi" 52 labelSelector: 53 matchLabels: 54 app: my-app 55 opLogStores: 56 - name: oplog1 57 # Sets labels for the oplog store. 58 assignmentLabels: ["test1", "test2"] 59 mongodbResourceRef: 60 name: my-oplog-db 61 mongodbUserRef: 62 name: my-oplog-user 63 s3Stores: 64 - name: s3store1 65 # Sets labels for the S3 store. 66 assignmentLabels: ["test1", "test2"] 67 68 mongodbResourceRef: 69 name: my-s3-metadata-db 70 mongodbUserRef: 71 name: my-s3-store-user 72 s3SecretRef: 73 name: my-s3-credentials 74 pathStyleAccessEnabled: true 75 s3BucketEndpoint: s3.region.amazonaws.com 76 s3BucketName: my-bucket 77 security: 78 tls: 79 ca: issuer-ca 80 applicationDatabase: 81 passwordSecretKeyRef: 82 name: om-db-user-secret 83 key: password 84 version: "8.0.0-ubi8" 85 topology: MultiCluster 86 clusterSpecList: 87 - clusterName: cluster1.example.com 88 members: 4 89 - clusterName: cluster2.example.com 90 members: 3 91 - clusterName: cluster3.example.com 92 members: 2 93 security: 94 certsSecretPrefix: appdb 95 tls: 96 ca: issuer-ca
MongoDB Ops Manager所需设置
本部分介绍必须用于所有 Ops Manager 资源的设置。
spec.adminCredentials类型:字符串
必需。 密钥 的名称Kubernetes 您为 管理员用户创建的。MongoDB Ops Manager部署MongoDB Ops Manager资源时, Kubernetes Operator 会使用这些档案创建用户。
注意
为避免在单集群Kubernetes部署中存储密钥,您可以将所有密钥迁移到密钥存储工具。多个Kubernetes集群上的部署不支持将密钥存储在密钥存储工具中,例如 HashiCorp Vault 。
管理员用户被授予“全局所有者”角色。
spec.replicas类型:整型
有条件。要并行运行的Ops Manager实例的数量。如果在
SingleCluster中指定spec.topology,则需要此参数。接受的最小值为1。如果您在
MultiCluster中指定spec.topology,则忽略此参数。
MongoDB Ops Manager可选设置
MongoDB Ops Manager资源还可以使用以下设置:
spec.backup.fileSystemStores类型:字符串
标识文件系统快照存储的名称。要学习更多信息,请参阅使用 Kubernetes 操作符 配置 文件系统 备份 存储。
spec.backup.logging.LogBackAccessRef类型:字符串
对 ConfigMap 的引用,其中包含用于配置MongoDB Ops Manager备份日志的自定义
logback-access.xml文件。ConfigMap 中的键必须与
logback-access.xml的名称完全匹配,以确保它替换MongoDB Ops Manager Pod 中的默认文件。要学习;了解更多信息,请参阅使用 CRD 配置MongoDB Ops Manager日志。
spec.backup.logging.LogBackRef类型:字符串
对包含自定义
logback.xml文件的 ConfigMap 的引用。 此文件配置MongoDB Ops Manager备份的一般日志记录行为,包括日志轮换策略、日志级别和其他日志记录参数。ConfigMap 中的键必须与
logback-access.xml的名称完全匹配,以确保它替换MongoDB Ops Manager Pod 中的默认文件。 要学习;了解更多信息,请参阅使用 CRD 配置MongoDB Ops Manager日志。
spec.logging.LogBackAccessRef类型:字符串
对 ConfigMap 的引用,其中包含用于配置MongoDB Ops Manager日志的自定义
logback-access.xml文件。ConfigMap 中的键必须完全是
logback-access.xml,以确保它替换MongoDB Ops Manager Pod 中的默认文件。要学习;了解更多信息,请参阅使用 CRD 配置MongoDB Ops Manager日志。
spec.logging.LogBackRef类型:字符串
对包含自定义
logback.xml文件的 ConfigMap 的引用。 此文件配置MongoDB Ops Manager的一般日志记录行为,包括日志轮换策略、日志级别和其他日志记录参数。ConfigMap 中的键必须完全是
logback.xml,以确保它替换MongoDB Ops Manager Pod 中的默认文件。要学习;了解更多信息,请参阅使用 CRD 配置MongoDB Ops Manager日志。
注意
如果Ops Manager仪表盘生成的文件大小大于
emptyDir卷中的可用存储空间,请考虑使用持久卷覆盖emptyDir卷,以防止 Pod 崩溃。要学习;了解详情,请参阅spec.statefulSet.spec.template.spec.volumes。
spec.opsManagerURL类型:字符串
可选。 Operator 中URL MongoDB Ops Manager资源的 ,例如:Kubernetes
https://link.to.configured.lb.example.com。如果省略此参数,则在连接到MongoDB Ops Manager实例时, Kubernetes Operator 使用以下URL作为MongoDB Ops Manager实例的默认 URL:
<om-name>-svc.{namespace}.svc.cluster.local。 这是 无头服务的 FQDNMongoDB Ops Manager 。如果指定此参数,则可将此 URL 更改为其他 URL。
注意
spec.opsManagerURL请勿将 与您在 ConfigMap 中为特定部署指定的URL混淆,该 URL 用于配置应用程序数据库的MongoDB部署和监控代理。 Kubernetes Operator 需要具有spec.opsManagerURL才能直接连接到Ops Manager实例并配置Ops Manager和应用程序数据库部署。 Kubernetes Operator 不使用spec.opsManagerURL来管理特定的MongoDB数据库。spec.opsManagerURL在以下情况下,将 参数更改为自定义URL :当您跨多个MongoDB Ops Manager Kubernetes集群部署URL ,并且无法从MongoDB Ops Manager 托管 Pod 访问默认 时。例如,当您在部署MongoDB Ops Manager KubernetesKubernetesOperator 之外的其他 集群上部署 时,可能无法访问MongoDB Ops Manager 服务的 FQDN 。在这种情况下,您可以指定自定义 URL。
在外部域上配置对MongoDB Ops Manager实例的外部访问时,您可以指定自定义URL 。 这还要求 Kubernetes Operator 和应用程序数据库的监控代理使用此自定义 URL,而不是默认 URL。
spec.clusterDomain类型:字符串
Kubernetes为每个 Pod 分配一个 FQDN。 Kubernetes Operator 使用提供的
clusterDomain计算每个 Pod 的 FQDN。 Kubernetes不提供用于查询这些主机名的API 。
spec.clusterName类型:字符串
Kubernetes为每个 Pod 分配一个 FQDN。 Kubernetes Operator 使用提供的
clusterName计算每个 Pod 的 FQDN。 Kubernetes不提供用于查询这些主机名的API 。
spec.configuration类型:集合
Ops Manager配置属性。有关属性名称和说明,请参阅Ops Manager配置设置。每个属性采用
string类型的值。重要
如果 Ops Manager 要管理部署在其所部署到的 Kubernetes 集群外部的 MongoDB 资源,您必须将
mms.centralUrl设置添加到spec.configuration。将该值设置为 Ops Manager 在 Kubernetes 集群外部公开的 URL。
要学习;了解更多信息,请参阅管理外部MongoDB部署。
spec.configuration.mms.featureFlag.automation.verifyDownloads类型:字符串
当设置为
enabled时,MongoDB Agent需要所有由Ops Manager实例托管的MongoDB部署的签名文件。当您在启用此选项的情况下升级 MongoDB Agent时,当前版本的 MongoDB Agent需要新的 MongoDB Agent二进制文件的签名文件。
要了解更多信息,请参阅验证 MongoDB 签名。
spec.configuration.mms.featureFlag.backup.queryable类型:布尔值
设置为
false以禁用可查询备份。
spec.configuration.mms.featureFlag.backup.wt.queryable类型:布尔值
设置为
false可在使用 WiredTiger 时禁用可查询备份。
spec.configuration.mms.mongoDbUsage.defaultUsageType类型:字符串
Kubernetes 服务的默认服务器类型。
接受的值为:
PRODUCTION_SERVER、TEST_SERVER、DEV_SERVER和RAM_POOL。
spec.jvmParameters类型:字符串数组
可选。 传递给container中的Ops Manager应用程序的Java虚拟机(JVM)参数。任何给定的参数都会替换 Ops Manager 应用程序的默认Java虚拟机(JVM)参数。
此 Kubernetes Operator 参数默认为空列表。
spec: jvmParameters: ["-XX:+HeapDumpOnOutOfMemoryError","-XX:HeapDumpPath=/tmp"] 重要
更改 Java虚拟机(JVM) 内存堆值,需您自担风险
Kubernetes Operator 根据容器内存计算Ops Manager 应用程序的Java虚拟机(JVM)内存堆值。更改
-Xms和-Xmx值可能会导致Ops Manager出现问题。
spec.security.certsSecretPrefix类型:字符串
密钥 前缀的文本Kubernetes 您创建的包含 的MongoDB Ops Manager TLS 密钥和证书的密钥。
您必须将密钥命名为
<prefix>-<metadata.name>-cert。要了解如何将 Ops Manager 实例配置为通过HTTPS运行,请参阅部署 Ops Manager 资源。
spec.security.tls.caConfigMap 的名称Kubernetes ,其中包含 的自定义 CA MongoDB Ops Manager文件。
重要
如果使用自定义 CA 签署Ops Manager TLS 证书,则需要
spec.security.tls.ca。Kubernetes 操作符要求您在 ConfigMap 中为 Ops Manager 资源
mms-ca.crt的证书命名。此CA签署的证书:
客户端用于连接到 Ops Manager 应用程序,以及
应用程序数据库Pod中用于与MongoDB Ops Manager通信的代理。
警告
您必须连接自定义 CA文件和来自
downloads.mongodb.com的整个 TLS 证书链,以防止应用程序数据库重新启动时Ops Manager无法运行。
spec.security.tls.enabled重要
spec.security.tls.enabled已弃用,并将在未来发布中删除。要启用TLS,请为spec.security.certsSecretPrefix设置提供一个值。使用TLS证书对客户端和 Ops Manager 之间的通信进行加密。
spec.statefulSet.spec类型:集合
MongoDB Controllers for Kubernetes Operator 为MongoDB Ops Manager创建的 StatefulSet 规范。
要查看哪些字段可以添加到 ,请参阅Kubernetes文档中的
spec.statefulSet.specStatefulSetSpec v1 应用程序。
spec.statefulSet.spec.template类型:集合
MongoDB Controllers for Kubernetes Operator 为MongoDB Ops Manager创建的 StatefulSet 中Kubernetes Pod 的模板。
注意
Kubernetes Operator 不会验证您在
spec.statefulSet.spec.template中提供的字段。
spec.statefulSet.spec.template.metadata类型:集合
MongoDB Controllers for Kubernetes Operator 为MongoDB Ops Manager创建的 StatefulSet 中Kubernetes Pod 的元数据。
要查看哪些字段可以添加到
spec.statefulSet.spec.template.metadata,请参阅Kubernetes文档。
spec.statefulSet.spec.template.spec类型:集合
Kubernetes Operator 的MongoDB控制器为MongoDB Ops Manager创建的StatefulSet中Kubernetes Pod 的规范。
要查看可添加到
spec.statefulSet.spec.template.spec的字段的完整列表,请参阅Kubernetes文档。以下示例
spec.statefulSet.spec.template.spec定义了MongoDB Controllers for Kubernetes Operator 部署的一个MongoDB Ops Manager容器的最小和最大 CPU 和内存容量:提示
有关运行 Ops Manager 组件的主机的硬件、软件和网络要求的更多信息,请参阅 Ops Manager 系统要求 在 Ops Manager 文档中。
statefulSet: spec: template: spec: containers: - name: mongodb-ops-manager resources: requests: cpu: "4" memory: "16Gi" limits: cpu: "8" memory: "32Gi"
spec.statefulSet.spec.template.spec.containers类型:集合
MongoDB Controllers for Kubernetes Operator 为 MongoDB Ops Manager 创建的 StatefulSet 中 Kubernetes Pod 的容器列表。
要修改 Ops Manager container的规范,您必须使用
name字段提供container的确切名称,如以下示例所示:backup: statefulSet: spec: template: spec: containers: - name: mongodb-ops-manager 注意
当您将container添加到
spec.statefulSet.spec.template.spec.containers时,Kubernetes 操作符会将它们添加到 Kubernetes pod 中。这些容器附加到 Pod 中的 Ops Manager 容器。
spec.statefulSet.spec.template.spec.containers.resources.requests.cpu类型:字符串
Kubernetes节点上托管MongoDB Ops Manager必须提供的最小 CPU容量。
请求的值必须小于或等于
spec.statefulSet.spec.template.spec.containers.resources.limits.cpu。
spec.statefulSet.spec.template.spec.containers.resources.limits.cpu类型:字符串
为托管Ops Manager而创建的节点的最大 CPU容量。如果省略,则该值设立为
spec.statefulSet.spec.template.spec.containers.resources.requests.cpu。
spec.statefulSet.spec.template.spec.containers.resources.requests.memory类型:字符串
节点 上必须可用的最小内存容量KubernetesMongoDB Ops Manager Kubernetes在 上托管 。该值以整数表示,后跟采用JEDEC表示法的内存单位。
例子
如果 Kubernetes 上的 Ops Manager 需要 6 GB 内存,请将此值设置为
6Gi。注意
MongoDB 建议将此值至少设置为
5Gi。请求的值必须小于或等于
spec.statefulSet.spec.template.spec.containers.resources.limits.memory。
spec.statefulSet.spec.template.spec.containers.resources.limits.memory类型:字符串
为托管Ops Manager而创建的节点的最大内存容量。如果省略,则该值设立为
spec.statefulSet.spec.template.spec.containers.resources.requests.memory。Kubernetes Operator 根据容器内存计算并设置 Java 堆大小的参数。
警告
将此值限制为小于 32 GB
将此值设置为大于 32 GB (
32Gi) 的值可能会导致备份服务出现问题。 过多的堆可能会在 Ops Manager 中导致不可预知的结果。
spec.statefulSet.spec.template.spec.volumes类型:集合
容器可以在StatefulSet MongoDB Controllers for Kubernetes 操作符 为Ops Manager创建的中挂载的卷的列表。
如果您使用Ops Manager仪表盘请求部署的日志,并且临时文件的大小非常大,请考虑为Ops Manager StatefulSet 中的
dataKubernetes 卷使用持久卷。默认下,
dataKubernetes 卷使用emptyDir类型。要覆盖它并使用持久卷,请将以下配置添加到您的MongoDBOpsManager资源中:statefulSet: spec: template: spec: volumes: - name: data persistentVolumeClaim: claimName: <my-pvc> 将
<my-pvc>替换为您的 Kubernetes PersistentVolumeClaim。 名称。
外部连接设置
本节介绍与MongoDB Ops Manager中的外部连接相关的可选设置。 有关多集群MongoDB Ops Manager部署的特定可选外部连接设置,请参阅多集群设置。
spec.externalConnectivity类型:集合
启用与MongoDB Ops Manager 的外部连接的配置对象。 如果提供, Kubernetes Operator 将创建一个Kubernetes 服务,允许来自Kubernetes集群外部的流量到达MongoDB Ops Manager应用程序。
如果未提供,Kubernetes Operator 不会创建 Kubernetes 服务。 您必须手动创建一个解决方案,或使用第三方解决方案,使您能够将外部流量路由到 Kubernetes 集群中的 Ops Manager 应用程序。
spec.externalConnectivity.type类型:字符串
在Kubernetes之外公开MongoDB Ops Manager 的Kubernetes服务 ServiceType。
如果存在
spec.externalConnectivity.type,则为必填项。接受的值为:
LoadBalancer和NodePort。 如果您的云提供商支持,则建议使用LoadBalancer。 使用NodePort进行本地部署。
spec.externalConnectivity.port类型:整型
指示 Kubernetes 服务公开 Ops Manager 应用程序的端口应用于外部流量的值。
如果
spec.externalConnectivity.type为NodePort:Kubernetes 服务通过此端口向外部流量公开 Ops Manager 应用程序。
如果您不提供 值, Kubernetes服务将从以下默认范围中随机选择的可用端口将流量路由到Ops Manager
spec.externalConnectivity.port应用程序:30000-32767。注意
您必须将网络的防火墙配置为允许通过此端口的流量。
如果
spec.externalConnectivity.type为LoadBalancer:云提供商创建的负载均衡器资源通过此端口公开 Ops Manager 应用程序。
如果您不提供 值, Kubernetes服务将通过默认HTTP
spec.externalConnectivity.port()8080 或 HTTPS8443 () 端口向外部流量公开Ops Manager 应用程序。
spec.externalConnectivity.loadBalancerIP类型:字符串
Kubernetes Operator 创建
LoadBalancerKubernetes 服务时使用的 IP 地址。仅当您的云提供商支持且
spec.externalConnectivity.type为LoadBalancer时,才能使用此设置。要学习;了解有关类型 LoadBalancer 的更多信息,请参阅Kubernetes文档。
spec.externalConnectivity.externalTrafficPolicy类型:字符串
将外部流量路由到 Ops Manager Kubernetes 服务的策略。该服务根据此设置的值将外部流量路由到节点本地或集群范围的端点。
接受的值为:
Cluster和Local。 要了解哪些值可以满足您的要求,请参阅 Kubernetes 中的源 IP 在 Kubernetes 文档中。注意
如果您选择
Cluster,则客户端的Source-IP在 Kubernetes 网络边界发生的网络跳跃期间会丢失。
spec.externalConnectivity.annotations类型:集合
键值对,允许您提供特定于云提供商的配置设置。
要了解有关 注解 的更多信息Amazon Web Services 上的 TLS 支持 ,请参阅Kubernetes 文档。
备份设置
本节介绍与MongoDB Ops Manager中的备份相关的可选设置。 有关特定于多集群MongoDB Ops Manager部署的可选备份设置,请参阅多集群设置。
spec.backup.assignmentLabels类型:字符串数组
备份守护程序服务进程的分配标签列表。 使用分配标签来标识与特定项目相关联的特定备份守护进程。 如果使用Kubernetes Operator 设置分配标签,则在Kubernetes配置文件中为分配标签设置的值将覆盖MongoDB Ops Manager用户界面中定义的值。 未使用Kubernetes Operator 设置的分配标签将继续使用MongoDB Ops Manager用户界面中设置的值。
spec.backup.encryption.kmip类型:对象
包含 KMIP 备份加密配置设置的对象。要了解更多信息,请参阅为 Ops Manager 配置 KMIP 备份加密。
注意
如果设立此参数,则与 值关联的API密钥必须具有
spec.credentialsGlobal Owner角色。
spec.backup.encryption.kmip.server.url类型:字符串
使用
hostname.port格式(示例192.168.1.3:5696或my-kmip-server.mycorp.com:5696)的 KMIP服务器的URL 。
spec.backup.headDB类型:集合
头部数据库的配置设置。Kubernetes Operator 创建具有指定配置的持久卷声明。
标量数据类型说明labelSelector字符串
用于将已安装卷绑定到目录的标签。
storage字符串
应安装的持久卷的最小大小。此值以整数表示,后跟采用 JEDEC 表示法的存储单位。
默认值为
30Gi。要学习;了解更多信息,请参阅备份守护程序硬件要求。
示例,如果头部数据库需要60 GB 的存储空间,设立将该值设置为
60Gi。storageClass字符串
持久卷声明中指定的存储类型。您可以将此存储类型创建为 StorageClass 对象,然后再在此对象规范中使用。
确保将 StorageClass 设立为
reclaimPolicyRetain。这可确保在删除持久卷声明时保留数据。
spec.backup.jvmParameters类型:字符串数组
可选。 传递给容器中 Ops Manager 备份服务的JVM参数。
此 Kubernetes Operator 参数默认为空列表。
spec: backup: jvmParameters: ["-XX:+UseStringCache"] 警告
更改 Java虚拟机(JVM) 内存堆值,需您自担风险
Kubernetes Operator 根据容器内存计算备份服务的Java虚拟机(JVM)内存堆值。更改
-Xms和-Xmx值可能会导致Ops Manager出现问题。
spec.backup.members类型:整型
可选。要在Kubernetes中部署的备份守护进程服务的数量。如果未指定,则默认为
1。为了确保备份服务的高可用性,请在Ops Manager中部署多个备份守护程序。
spec.backup.opLogStores类型:集合
如果启用备份,则为必填项。 用于备份的oplog存储数组。 大量中的每个项目都引用Kubernetes Operator 在Kubernetes集群中部署的MongoDB 数据库资源。
spec.backup.opLogStores.assignmentLabels类型:字符串数组
oplog 存储的分配标签列表。 使用分配标签来标识特定 oplog 存储与特定项目相关联。 如果使用Kubernetes Operator 设置分配标签,则在Kubernetes配置文件中为分配标签设置的值将覆盖MongoDB Ops Manager用户界面中定义的值。 未使用Kubernetes Operator 设置的分配标签将继续使用MongoDB Ops Manager用户界面中设置的值。
spec.backup.opLogStores.mongodbResourceRef.name类型:字符串
如果启用备份,则为必填项。 您创建的用于存储oplog切片的
MongoDB资源或MongoDBMultiCluster资源的名称。 您必须将此资源部署在与MongoDB Ops Manager资源相同的命名空间中。Oplog 数据库仅支持
SCRAM身份验证机制。 您无法启用其他身份验证机制。如果在 oplog 数据库上启用
SCRAM身份验证,则必须:创建 MongoDB 资源以将 Ops Manager 连接到 oplog 数据库。
name在Ops Manager资源定义中指定用户的 。
如果不存在具有此名称的 MongoDB database 资源,则
backup资源将进入Pending状态。Kubernetes 操作符每 10 秒重试一次,直到创建具有此名称的 MongoDB database 资源。注意
当您对此设置中引用的数据库资源进行安全更改时,Kubernetes 操作符开始自动协调 Ops Manager 资源。Kubernetes 操作符根据您的更改更新 Ops Manager 配置中的
mongoUri和ssl标志。
spec.backup.opLogStores.mongodbUserRef.name类型:字符串
SCRAM如果在 上启用了Oplog Store Database 身份验证,则为必填项。MongoDB用于连接 的Oplog Store Database 用户资源的名称。将此用户资源部署在与MongoDB Ops Manager资源相同的命名空间中,并具有以下所有角色:
spec.backup.blockStores类型:集合
如果启用使用块存储的备份,则为必填项。 用于备份的块存储数组。 数组中的每个项目都引用MongoDB database KubernetesKubernetesOperator 在 集群中部署的 资源。
spec.backup.blockStores.assignmentLabels类型:字符串数组
块存储的分配标签列表。 使用分配标签来标识特定的块存储与特定项目相关联。 如果使用Kubernetes Operator 设置分配标签,则在Kubernetes配置文件中为分配标签设置的值将覆盖MongoDB Ops Manager用户界面中定义的值。 未使用Kubernetes Operator 设置的分配标签将继续使用MongoDB Ops Manager用户界面中设置的值。
spec.backup.blockStores.name类型:字符串
如果使用块存储启用备份,则为必填项。 块存储的名称。
重要
指定后,请勿编辑块存储的名称。
spec.backup.blockStores.mongodbResourceRef.name类型:字符串
如果使用块存储启用备份,则为必填项。 您为块存储创建的MongoDB database资源的名称。 您必须将此数据库资源部署在与MongoDB Ops Manager资源相同的命名空间中。
块存储数据库仅支持
SCRAM身份验证机制。 您无法启用其他身份验证机制。如果在块存储数据库上启用
SCRAM身份验证,则必须:创建 MongoDB 用户资源以将 Ops Manager 连接到块存储数据库。
name在Ops Manager资源定义中指定用户的 。
如果不存在具有此名称的 MongoDB database 资源,则
backup资源将进入Pending状态。Kubernetes 操作符每 10 秒重试一次,直到创建具有此名称的 MongoDB database 资源。注意
当您对此设置中引用的数据库资源进行安全更改时,Kubernetes 操作符开始自动协调 Ops Manager 资源。Kubernetes 操作符根据您的更改更新 Ops Manager 配置中的
mongoUri和ssl标志。
spec.backup.blockStores.mongodbUserRef.name类型:字符串
如果在块存储数据库上启用了 SCRAM 身份验证,则为必填项。 用于连接块存储数据库的 MongoDB 用户资源的名称。 将此用户资源部署在与MongoDB Ops Manager资源相同的命名空间中,并具有以下所有角色:
spec.backup.queryableBackupSecretRef.name类型:字符串
包含来自 的 Queryable.pem MongoDB Ops Manager文件的密钥名称,您将使用该文件根据部署的 TLS 要求访问和查询备份。PEM 文件包含公钥证书及其关联的私钥,访问和查询所需的在 中对备份快照运行查询。MongoDB Ops Manager要查询备份,请指定此参数的值。 如果未设置,备份不受影响,但无法查询。
spec.backup.statefulSet.spec类型:集合
MongoDB Controllers for Kubernetes Operator 为 备份守护进程服务 创建的 StatefulSet 规范。
要查看哪些字段可以添加到 ,请参阅Kubernetes文档中的
spec.backup.statefulSet.specStatefulSetSpec v1 应用程序。
spec.backup.statefulSet.spec.template类型:集合
MongoDB Controllers for Kubernetes Operator 为备份守护进程服务创建的 StatefulSet 中Kubernetes Pod 的模板。
注意
Kubernetes Operator 不会验证您在
spec.backup.statefulSet.spec.template中提供的字段。
spec.backup.statefulSet.spec.template.metadata类型:集合
Kubernetes Operator 的MongoDB控制器为备份守护进程服务创建的 StatefulSet 中Kubernetes Pod 的元数据。
要查看哪些字段可以添加到
spec.backup.statefulSet.spec.template.metadata,请参阅Kubernetes文档。
spec.backup.statefulSet.spec.template.spec类型:集合
Kubernetes Operator 的MongoDB控制器为备份守护进程服务创建的 StatefulSet 中Kubernetes Pod 的规范。
要查看可添加到
spec.backup.statefulSet.spec.template.spec的字段的完整列表,请参阅Kubernetes文档。以下示例
spec.backup.statefulSet.spec.template.spec定义了 MongoDB Controllers for Kubernetes Operator 部署的一个 备份守护进程服务 容器的最小和最大 CPU 和内存容量:提示
有关运行 Ops Manager 组件的主机的硬件、软件和网络要求的更多信息,请参阅 Ops Manager 系统要求 在 Ops Manager 文档中。
statefulSet: spec: template: spec: containers: - name: mongodb-backup-daemon resources: requests: cpu: "4" memory: "8Gi" limits: cpu: "8" memory: "16Gi"
spec.backup.statefulSet.spec.template.spec.containers类型:集合
属于MongoDB Controllers for Kubernetes Operator 为备份守护进程服务创建的 StatefulSet 中Kubernetes Pod 的容器列表。
要修改备份守护进程服务容器的规范,必须使用
name字段提供容器的确切名称,如以下示例所示:backup: statefulSet: spec: template: spec: containers: - name: mongodb-backup-daemon 注意
当您将容器添加到
spec.backup.statefulSet.spec.template.spec.containers时,Kubernetes Operator 会将它们添加到 Kubernetes Pod 中。 这些容器附加到 Pod 中的备份守护程序服务容器。
spec.backup.statefulSet.spec.template.spec.containers.resources.requests.cpu类型:字符串
Kubernetes节点上托管备份守护进程服务必须提供的最小 CPU容量。
请求的值必须小于或等于
spec.backup.statefulSet.spec.template.spec.containers.resources.limits.cpu。
spec.backup.statefulSet.spec.template.spec.containers.resources.limits.cpu类型:字符串
为托管备份守护进程服务而创建的节点的最大 CPU容量。如果省略,则该值设立为
spec.backup.statefulSet.spec.template.spec.containers.resources.requests.cpu。
spec.backup.statefulSet.spec.template.spec.containers.resources.requests.memory类型:字符串
Kubernetes 节点 上必须可用的最小内存容量 在Kubernetes上托管 备份守护进程服务 。该值以整数表示,后跟采用JEDEC表示法的内存单位。
注意
将此值至少设置为
4.5Gi。 小于4.5Gi的值可能会导致错误。请求的值必须小于或等于
spec.backup.statefulSet.spec.template.spec.containers.resources.limits.memory。
spec.backup.statefulSet.spec.template.spec.containers.resources.limits.memory类型:字符串
为托管备份守护进程服务而创建的节点的最大内存容量。如果省略,则该值设立为
spec.backup.statefulSet.spec.template.spec.containers.resources.requests.memory。Kubernetes Operator 根据容器内存计算并设置 Java 堆大小的参数。
警告
将此值限制为小于 32 GB
将此值设置为大于 32 GB (
32Gi) 的值可能会导致备份服务出现问题。 过多的堆可能会在 Ops Manager 中导致不可预知的结果。
S3 设置
您可以将Ops Manager配置为使用 S3 存储 oplog 和备份快照,并使用自定义 CA 颁发的密钥通过 TLS 保护与 S3 的连接。
要配置自定义 CA 密钥,请使用您为应用程序数据库配置 TLS 的 ConfigMap,如部署Ops Manager资源的 TLS-Encrypted Connection (HTTPS)标签页中所述。将 spec.applicationDatabase.security.tls.ca 设置为此 ConfigMap。
您可以将 TLS 同时用于 S3 和应用程序数据库,或仅用于 S3。
要将 TLS 用于这两个目的,请从 ConfigMap 引用的同一
ca-pem获取用于这两个目的的证书。要仅将 TLS 用于 S3,请不要在 ConfigMap 中定义
spec.security.applicationDatabase.certsSecretPrefix。
spec.backup.s3OpLogStores.assignmentLabels类型:字符串数组
S3 oplog存储的分配标签列表。使用分配标签来标识特定的 S3 oplog存储与特定项目相关联。如果使用Kubernetes Operator设立分配标签,则在Kubernetes配置文件中为分配标签设立的值将覆盖Ops Manager用户界面中定义的值。未使用Kubernetes Operator设立的分配标签将继续使用Ops Manager 用户界面中设立的值。
spec.backup.s3OpLogStores.customCertificate类型:布尔值
已弃用。请改用
spec.backup.s3OpLogStores.customCertificateSecretRefs。指示是否使用 AppDB 证书 (
appdb-ca) 作为 S3 oplog存储的自定义 TLS 证书的标志。默认值为False。
spec.backup.s3OpLogStores.customCertificateSecretRefs类型:对象数组
使用Kubernetes密钥的 S3 oplog存储的自定义证书列表。 base64 编码的 x.509 证书必须已存在于带有密钥的Kubernetes密钥中,并且必须可由Java CertifcateFactory 进行解析。您不能在一个密钥中指定链中的多个证书。如果您在一个密钥中指定链中的多个证书, Kubernetes Operator 仅使用链中的第一个证书。如果您还提供了
customCertificate设置, Kubernetes Operator 将使用spec.applicationDatabase.security.tls.ca作为备份的自定义证书。列表中的每个条目指定 和 。如果您指定多个密钥, Kubernetes Operator
namekey将使用指定密钥中的所有证书。如果您不提供此设置,Ops Manager 将使用 Ops Manager 使用的JVM默认信任存储。
spec.configuration.mms.mongoDbUsage.defaultUsageType类型:字符串
Kubernetes 服务的默认服务器类型。
spec.backup.s3OpLogStores.customCertificateSecretRefs.key类型:字符串
需要为 S3 oplog存储使用自定义证书。表示包含 base64-encoded x.509 证书的密钥中密钥的文件。如果不指定此设置, Kubernetes Operator 无法将自定义证书用于 S3 oplog存储备份。
spec.backup.s3OpLogStores.irsaEnabled类型:布尔值
启用在 AWS EKS 中使用服务帐户的 AWS IAM 角色来配置 S3 oplog存储的标志。默认值为
False。如果您不使用 AWS EKS,则此标志无效。当设立为False时,将禁用使用 EKS 中服务帐户的 AWS IAM 角色配置 S3 oplog存储。要学习;了解更多信息,请参阅 EKS 中服务账户的 IAM 角色。
spec.backup.s3OpLogStores.mongodbResourceRef.name类型:字符串
您创建的用于存储S3 oplog存储的元数据的 MongoDB 数据库资源的名称。您必须将此数据库资源部署在与Ops Manager资源相同的命名空间中。
注意
省略此设置可使用应用程序数据库存储S3 oplog存储的元数据。
如果省略此设置,则还必须省略 设置。 Kubernetes Operator
spec.backup.s3OpLogStores.mongodbUserRef.name在内部处理SCRAM用户身份验证。如果您对此数据库启用
SCRAM身份验证,则必须:创建 MongoDB 用户资源以将 Ops Manager 连接到数据库。
name在Ops Manager资源定义中指定用户的 。
spec.backup.s3OpLogStores.mongodbUserRef.name类型:字符串
如果您创建了MongoDB 数据库资源来存储S3 oplog元数据并且在此数据库上启用了SCRAM,则为必填项。用于连接到 S3 oplog存储的元数据数据库的MongoDB用户资源的名称。将此用户资源部署在与Ops Manager资源相同的命名空间中,并具有以下所有角色:
重要
指定后,请勿编辑 S3元数据oplog存储用户名名 的名称。
spec.backup.s3OpLogStores.s3SecretRef.name类型:字符串
如果
spec.backup.s3OpLogStores.irsaEnabled未设立为true,则需要使用 S3存储来存储oplog 。包含
accessKey和secretKey字段的密钥名称。备份守护进程服务使用这些字段的值作为凭证来访问权限AWS S3 或 S3 兼容存储桶。要配置 S3 oplog存储,您必须在密钥中指定两个密钥。如果将
spec.backup.s3OpLogStores.irsaEnabled设立为true,则无需设立s3SecretRef,因为Amazon Web Services S3凭证将作为 Pod 环境变量安装。
spec.backup.s3OpLogStores.pathStyleAccessEnabled类型:布尔值
指示存储桶端点 URL 的样式。
值说明例子true路径样式 URL
s3.amazonaws.com/<bucket>false虚拟主机样式 URL
<bucket>.s3.amazonaws.com要学习;了解有关 AWS 上的注释和 TLS支持的更多信息,请参阅Kubernetes文档。
默认值为
true。
spec.backup.s3OpLogStores.s3BucketEndpoint类型:字符串
使用 S3存储来存储oplog是必需的。托管oplog存储的 AWS S3 存储桶或 S3 兼容存储桶的URL 。
注意
如果您的端点在其URL中未包含地区,请指定
s3RegionOverride字段。
spec.backup.s3OpLogStores.s3RegionOverride类型:字符串
S3 兼容存储桶所在的区域。仅当 S3 oplog存储的
s3BucketEndpoint不支持地区作用域时才使用此字段。地区范围是指您的端点在其URL中不包含地区。请勿将此字段与 AWS S3 存储桶一起使用。有关更多信息,请参阅 S3 块存储配置。
spec.backup.s3Stores.assignmentLabels类型:字符串数组
存储数据库备份快照的 S3 或 S3 兼容存储桶的分配标签列表。使用分配标签来标识特定的 S3 存储与特定项目相关联。如果使用Kubernetes Operator设立分配标签,则在Kubernetes配置文件中为分配标签设立的值将覆盖Ops Manager用户界面中定义的值。未使用Kubernetes Operator设立的分配标签将继续使用Ops Manager 用户界面中设立的值。
spec.backup.s3Stores.customCertificate类型:布尔值
已弃用。请改用
spec.backup.s3Stores.customCertificateSecretRefs。指示是否使用应用程序数据库的证书 (
appdb-ca) 作为 S3 备份的自定义 TLS 证书的标志。默认值为False。
spec.backup.s3Stores.customCertificateSecretRefs类型:对象数组
使用Kubernetes密钥的 S3快照存储的自定义证书列表。 base64 编码的 x.509 证书必须已存在于带有密钥的Kubernetes密钥中,并且必须可由Java CertifcateFactory 进行解析。您不能在一个密钥中指定链中的多个证书。如果您在一个密钥中指定链中的多个证书, Kubernetes Operator 仅使用链中的第一个证书。如果您还提供了
spec.backup.s3Stores.customCertificate设置, Kubernetes Operator 将使用spec.applicationDatabase.security.tls.ca作为备份的自定义证书。列表中的每个条目指定 和 。如果指定多个密钥, Kubernetes Operator
namekey将使用所有指定的密钥。如果您不提供此设置,Kubernetes 操作符将使用 Ops Manager 使用的Java虚拟机(JVM)默认信任存储进行备份。
spec.backup.s3Stores.customCertificateSecretRefs.key类型:字符串
需要为 S3 oplog存储使用自定义证书。表示包含 base64-encoded x.509 证书的密钥中密钥的文件。如果不指定此设置, Kubernetes Operator 无法将自定义证书用于 S3快照存储,而默认为Ops Manager使用的默认信任存储。
spec.backup.s3Stores.irsaEnabled类型:布尔值
启用在 AWS EKS 中使用服务帐户的 AWS IAM 角色来配置 S3快照存储的标志。默认值为
False。如果您不使用 AWS EKS,则此标志无效。当设立为False时,将禁用使用 EKS 中服务帐户的 AWS IAM 角色配置 S3快照存储。要学习;了解更多信息,请参阅 EKS 中服务账户的 IAM 角色。
spec.backup.s3Stores.name类型:字符串
使用 S3存储来存储oplog是必需的。 S3快照存储的名称。
重要
指定后,请勿编辑 S3快照存储的名称。如果备份使用旧名称,此更改可能会失败。成功变革的后果是不可预测的。
spec.backup.s3Stores.mongodbResourceRef.name类型:字符串
您创建的用于存储S3快照存储存储元数据的
MongoDB资源或MongoDBMultiCluster资源的名称。您必须将此数据库资源部署在与Ops Manager资源相同的命名空间中。注意
省略此设置可使用应用程序数据库存储S3快照存储的元数据。
如果省略此设置,则还必须省略 设置。 Kubernetes Operator
spec.backup.s3Stores.mongodbUserRef.name在内部处理SCRAM用户身份验证。如果您对此数据库启用
SCRAM身份验证,则必须:创建 MongoDB 用户资源以将 Ops Manager 连接到数据库。
name在Ops Manager资源定义中指定用户的 。
重要
指定后,请勿编辑 S3快照存储的名称。如果备份使用旧名称,此更改可能会失败。成功变革的后果是不可预测的。
如果不存在具有此名称的 MongoDB database 资源,则
backup资源将进入Pending状态。Kubernetes 操作符每 10 秒重试一次,直到创建具有此名称的 MongoDB database 资源。注意
当您对此设置中引用的数据库资源进行安全更改时,Kubernetes 操作符开始自动协调 Ops Manager 资源。Kubernetes 操作符根据您的更改更新 Ops Manager 配置中的
mongoUri和ssl标志。
spec.backup.s3Stores.mongodbUserRef.name类型:字符串
如果您创建了MongoDB 数据库资源来存储|s3|,则为必填项快照元数据和SCRAM在此数据库上启用。用于连接到 S3快照存储的元数据数据库的MongoDB用户资源的名称。将此用户资源部署在与Ops Manager资源相同的命名空间中,并具有以下所有角色:
重要
指定后,请勿编辑 S3元数据快照存储用户名名 的名称。
spec.backup.s3Stores.s3SecretRef.name类型:字符串
如果使用 S3存储启用备份并且未将
spec.backup.s3Stores.irsaEnabled设立为true,则为必填项。包含
accessKey和secretKey字段的密钥名称。备份守护进程服务使用这些字段的值作为凭证来访问权限AWS S3 或 S3 兼容存储桶。如果密钥缺少任一密钥,则无法配置 S3快照存储。如果将
spec.backup.s3Stores.irsaEnabled设立为true,则无需设立s3SecretRef,因为Amazon Web Services S3凭证将作为 Pod 环境变量安装。
spec.backup.s3Stores.objectLockEnabled类型:布尔值
指定支持此快照存储的AWS S3 或 S3 兼容存储桶是否启用了对象锁。将此字段设置为
true以启用存储的不可变备份。仅Ops Manager8.0.19 或更高版本支持此字段。有关在Ops Manager中配置不可变备份的信息,请参阅设置不可变备份。
默认值为
false。
spec.backup.s3Stores.pathStyleAccessEnabled类型:布尔值
指示存储桶端点 URL 的样式。
值说明例子true路径样式 URL
s3.amazonaws.com/<bucket>false虚拟主机样式 URL
<bucket>.s3.amazonaws.com默认值为
true。
spec.backup.s3Stores.s3BucketEndpoint类型:字符串
如果使用 S3存储启用备份,则为必填项。托管快照存储的 AWS S3 存储桶或 S3 兼容存储桶的URL 。
注意
如果您的端点在其URL中未包含地区,请指定
s3RegionOverride字段。
spec.backup.s3Stores.s3RegionOverride类型:字符串
S3 兼容存储桶所在的区域。仅当 S3 存储的
s3BucketEndpoint不支持地区范围时才使用此字段。地区范围是指您的端点在其URL中不包含地区。请勿将此字段与 AWS S3 存储桶一起使用。有关更多信息,请参阅 S3 块存储配置。
应用程序数据库所需设置
本节介绍除了所需的MongoDB Ops Manager设置之外,为配置Ops Manager Application Database而必须使用的设置。
spec.applicationDatabase.version类型:字符串
必需。 Ops Manager 应用程序数据库上安装的MongoDB版本。您必须根据容器注册表中的标签指定兼容的企业MongoDB版本。示例,
8.0.0-ubi8。从Kubernetes Operator1 版本.20 开始,标签不再以-ent结尾。重要
请务必选择兼容的 MongoDB Server 版本。
兼容版本因 MongoDB 数据库资源使用的基础图片而异。
注意
如果您将此值更新为应用程序数据库的更高版本的MongoDB ,则特征兼容性版本将保留为您要升级的MongoDB版本,以便您可以在必要时选择降级。如果您希望特征兼容性版本与新的MongoDB版本匹配,则必须手动设立 下的
featureCompatibilityVersionspec.applicationDatabase参数。
应用程序数据库可选设置
本节介绍与Ops Manager Application Database相关的可选设置。 有关特定于多集群MongoDB Ops Manager部署的可选应用程序数据库设置,请参阅多集群设置。
spec.applicationDatabase.agent.logLevel类型:字符串
默认值:INFO
配置 Pod 内自动化代理日志记录的级别。接受的值包括:
DEBUGINFOWARNERRORFATAL
spec.applicationDatabase.agent.<component>.logRotate类型:对象
将组件替换为以下值之一:
mongodmonitoringAgent
用于轮换进程的MongoDB日志的MongoDB配置对象。要使用
agent.<component>.logRotate设置,必须将systemLog.destination设立为 ,因为如果将日志写入主机的系统系统日志系统,则无法使用fileagent.<component>.logRotate设置。注意
如果Ops Manager仪表盘生成的文件大小大于
emptyDir卷中的可用存储空间,请考虑使用持久卷覆盖emptyDir卷,以防止 Pod 崩溃。要学习;了解详情,请参阅spec.statefulSet.spec.template.spec.volumes。
spec.applicationDatabase.agent.mongod.logRotate.numTotal类型:整型
默认值:
0Ops Manager保留的日志文件总数。如果不更改默认, Ops Manager会根据其他
agent.<compenet>.logRotate设置进行轮换。
spec.applicationDatabase.agent.mongod.logRotate.numUncompressed类型:整型
默认值:
5保持未压缩状态的日志文件总数的最大数量,包括当前日志文件。
spec.applicationDatabase.agent.mongod.logRotate.percentOfDiskspace类型:数字
默认值:
0.02MongoDB Ops Manager可用于存储日志文件的总磁盘空间的最大百分比,以十进制表示。 如果超过此限制, MongoDB Ops Manager将删除压缩日志文件,直到达到此限制为止。 MongoDB Ops Manager首先删除最早的日志文件。
spec.applicationDatabase.agent.<component>.logRotate.sizeThresholdMB类型:数字
将组件替换为以下值之一:
mongodmonitoringAgent
轮换日志时必需。 Ops Manager轮换单个日志文件之前,该文件的最大大小(以 MB 为单位)。如果达到此
sizeThresholdMB或logRotate.timeThresholdHrs限制中给出的值,Ops Manager会立即轮换日志文件。
spec.applicationDatabase.agent.<component>.logRotate.timeThresholdHrs类型:整型
将组件替换为以下值之一:
mongodmonitoringAgent
轮换日志时必需。下次轮换之前单个日志文件的最大持续时间(以小时为单位)。自上次轮换以来的时间。如果Ops Manager达到
timeThresholdHrs或logRotate.sizeThresholdM限制中给出的值,则立即轮换日志文件。
spec.applicationDatabase.agent.mongod.auditlogRotate.numTotal类型:整型
默认值:
0Ops Manager保留的Atlas 审核日志文件总数。如果不更改默认值, Ops Manager将根据其他
agent.mongod.auditlogRotate设置进行轮换。
spec.applicationDatabase.agent.mongod.auditlogRotate.numUncompressed类型:整型
默认值:
5保持未压缩状态的Atlas 审核日志文件总数的最大数量,包括当前Atlas 审核日志文件。
spec.applicationDatabase.agent.mongod.auditlogRotate.percentOfDiskspace类型:数字
默认值:
0.02MongoDB Ops Manager可用于存储Atlas 审核日志文件的总磁盘空间的最大百分比,以十进制表示。 如果超过此限制, MongoDB Ops Manager将删除压缩的Atlas 审核日志文件,直到达到此限制为止。 MongoDB Ops Manager首先删除最早的Atlas 审核日志文件。
spec.applicationDatabase.agent.mongod.auditlogRotate.sizeThresholdMB类型:数字
轮换Atlas 审核日志时必需。 Ops Manager轮换单个Atlas 审核日志文件之前,该文件的最大大小(以 MB 为单位)。如果达到
sizeThresholdMB或 限制中的值,auditlogRotate.timeThresholdHrsOps Manager会立即轮换Atlas 审核日志文件。
spec.applicationDatabase.agent.mongod.auditlogRotate.timeThresholdHrs类型:整型
轮换Atlas 审核日志时必需。下一次轮换之前单个Atlas 审核日志文件的最大持续时间(以小时为单位)。自上次轮换以来的时间。如果达到
timeThresholdHrs或 限制中的值,auditlogRotate.sizeThresholdMOps Manager会立即轮换Atlas 审核日志文件。
spec.applicationDatabase.agent.startupOptions类型:对象
用于启动选项的 MongoDB 配置对象。 有关可用字段,请参阅MongoDB Agent设置。
spec.applicationDatabase.agent.systemLog.path类型:字符串
默认:
/var/log/mongodb-mms-automation/mongodb.logmongodmongos或 应将所有诊断日志信息发送到的日志文件的路径,而不是标准输出或主机的系统日志。 MongoDB在指定路径创建日志文件。Linux 包初始化脚本不希望
systemLog.path更改默认值。 如果使用 Linux 包并更改systemLog.path,则必须使用自己的初始化脚本并禁用内置脚本。
spec.applicationDatabase.agent.systemLog.logAppend类型:布尔值
默认:
false当
truemongos或mongodmongosmongod实例重新启动时, 或mongod将新条目附加到现有日志文件的末尾。如果没有此选项, 将备份现有日志并创建新文件。
spec.applicationDatabase.agent.systemLog.destination类型:字符串
MongoDB发送所有日志输出的目标。指定
file或syslog。如果指定file,则还必须指定systemLog.path。如果不指定 ,
systemLog.pathMongoDB会将所有日志输出发送到标准输出。警告
系统日志守护进程在记录消息时生成时间戳,而不是在 MongoDB 发布消息时生成时间戳。这种行为可能会导致日志条目的时间戳具有误导性,尤其是当系统负载较重时。 我们建议对生产系统使用
file选项,以确保时间戳的准确性。
spec.applicationDatabase.externalAccess类型:集合
适用于外部连接的集群公开规范。要了解如何从 Kubernetes 集群外部连接到您的 MongoDB 资源,请参阅从 Kubernetes 外部连接到 MongoDB 数据库资源。
如果您添加
spec.externalAccess,则 Kubernetes Operator 为副本集中的每个 Pod 创建一个外部服务。外部服务为集群中的每个 MongoDB 数据库 Pod 提供外部入口点。每个外部服务具有选择器,它将外部服务与特定 Pod 相匹配。如果添加此设置时不带任何值,Kubernetes Operator 会创建具有以下默认值的外部服务:
字段值说明Name<pod-name>-svc-external外部服务的名称。您无法更改此值。
TypeLoadBalancer创建外部 LoadBalancer 服务。
Port<Port Number>mongod的端口。publishNotReadyAddresstrue指定即使 Pod 尚未准备就绪,也会创建 DNS 记录。对于任何数据库Pod,请勿设立为
false。
spec.externalAccess.externalService类型:集合
当您设置
spec.externalAccess设置时,Kubernetes Operator 会使用默认值自动创建一个外部负载均衡器服务。您可以根据需要覆盖某些值或添加新值。例如,如果您打算创建 NodePort 服务,并且不需要负载均衡器,则必须在 Kubernetes 规范中配置覆盖项:externalAccess: externalService: annotations: # cloud-specific annotations for the service spec: type: NodePort # default is LoadBalancer # you can specify other spec overrides if necessary 有关 Kubernetes 规范的更多信息,请参阅 Kubernetes 文档中的 ServiceSpec。
spec.externalAccess.externalService.annotations类型:集合
键值对,可让您将特定云提供商的配置设置添加到部署中的所有集群。要学习;了解更多信息,请参阅Kubernetes云提供商的注释和文档。
您可以使用注解为Kubernetes Operator 部署使用的外部服务指定占位符值。Kubernetes Operator 会自动将这些值替换为正确的值,如下表所述。使用占位符,您可以在每个服务中为特定 Pod 提供特定注释。
值说明{resourceName}{namespace}{podIndex}StatefulSet 分配且当前外部服务所针对的 Pod 的索引。
{podName}等于
{resourceName}-{podIndex}。{statefulSetName}StatefulSet。等于
{resourceName}。{externalServiceName}根据指定的占位符值生成的外部服务名称。 等于
{resourceName}-{podIndex}-svc-external。{mongodProcessDomain}托管mongod进程的服务器的域名。等于
spec.externalAccess.externalDomain(如果已指定)。否则,等于用于mongod进程FQDN 的域。例如,对于进程主机名
mdb-rs-1.example.com,example.com是域名。{mongodProcessFQDN}进程主机名取决于您的部署配置。 如果已将部署配置为使用
external domains,则进程主机名将使用以下格式:{resourceName}-{podIndex}.{mongodProcessDomain}例如:
mdb-rs-1.example.com如果您的部署不使用外部域,则进程主机名将使用以下格式:
{resourceName}-{podIndex}.{resourceName}-{podIndex}-svc.{namespace}.svc.cluster.local例如:
mdb-rs-1.mdb-rs-1-svc.ns.svc.cluster.local注意
您必须仅使用表中指定的已知占位符值,并确保占位符不使用空值或 null 值。 此外,您不能将特定于多 Kubernetes 集群部署的占位符用于单个MongoDB资源部署。
否则,Kubernetes Operator 将返回错误。 例如,您可能会遇到以下错误消息:
error replacing placeholders in map with key=external-dns.alpha.kubernetes.io/hostname, value={resourceName}-{podIndex}-{unknownPlaceholder}.{clusterName}-{clusterIndex}.example.com: missing values for the following placeholders: {clusterName}, {clusterIndex}, {unknownPlaceholder}`` 例子
以下示例指定了
{resourceName}、{podIndex}和{namespace}占位符:apiVersion: mongodb.com/v1 kind: MongoDB metadata: name: mdb-rs namespace: ns spec: replicas: 3 externalAccess: externalService: annotations: external-dns.alpha.kubernetes.io/hostname: {resourceName}-{podIndex}-{namespace}.example.com Kubernetes Operator 会根据每个占位符的正确值自动填充外部服务的注释。 例如:
mdb-rs-0-svc-external: annotations: external-dns.alpha.kubernetes.io/hostname: mdb-rs-0-ns.example.com mdb-rs-1-svc-external: annotations: external-dns.alpha.kubernetes.io/hostname: mdb-rs-1-ns.example.com mdb-rs-2-svc-external: annotations: external-dns.alpha.kubernetes.io/hostname: mdb-rs-2-ns.example.com
spec.externalAccess.externalService.spec类型:集合
ServiceSpec 的配置。要学习;了解详情,请参阅
spec.externalAccess.externalService。
spec.applicationDatabase.memberConfig类型:对象数组
MongoDB Ops Manager部署中每个应用程序数据库副本集成员的规范。
重要
如果将
spec.topology设立为MultiCluster,请使用spec.applicationDatabase.clusterSpecList.memberConfig而不是 。在多集群Ops Manager部署中, Kubernetes Operatorspec.applicationDatabase.memberConfig会忽略spec.applicationDatabase.memberConfig下的所有参数。memberConfig列表中的元素数量必须等于spec.applicationDatabase.members。memberConfig列表中元素的顺序必须反映副本集成员的顺序。 示例,大量的第一个元素会影响索引0的 Pod,第二个元素会影响索引1的 Pod,依此类推。例子
请考虑以下应用程序数据库的三成员副本集的示例规范:
spec: applicationDatabase: memberConfig: - votes: 1 priority: "0.5" tags: tag1: "value1" environment: "prod" - votes: 1 priority: "1.5" tags: tag2: "value2" environment: "prod" - votes: 0 priority: "0" tags: tag2: "value2" environment: "prod"
spec.applicationDatabase.memberConfig.priority类型:字符串
表示应用程序数据库副本集成员成为主节点 (primary node in the replica set)节点的相对可能性的数字。
要增加副本集节点成为主节点的相对可能性,请指定较高的
priority值。要降低副本集节点成为主节点的相对可能性,请指定较低的
priority值。
例如,
memberConfig.priority为1.5的成员比memberConfig.priority为0.5的成员更有可能成为主节点。memberConfig.priority为0的节点没有资格成为主节点。要了解更多信息,请参阅节点优先级。
spec.applicationDatabase.memberConfig.tags类型:地图
副本集标记映射,用于将读取和写入操作定向到应用程序数据库副本集的特定成员。
spec.applicationDatabase.passwordSecretKeyRef.name类型:字符串
包含 Ops Manager 数据库用户
mongodb-ops-manager密码的密钥名称。 Ops Manager 使用此密码对应用程序数据库进行身份验证。
spec.applicationDatabase.passwordSecretKeyRef.key类型:字符串
密钥中包含 Ops Manager 数据库用户
mongodb-ops-manager密码的字段名称。 Ops Manager 使用此密码对应用程序数据库进行身份验证。默认值为
password。
spec.applicationDatabase.security.certsSecretPrefix类型:字符串
您创建的Kubernetes密钥的前缀文本,其中包含应用程序数据库的 TLS 密钥和证书。
您必须将密钥命名为
<prefix>-<metadata.name>-db-cert。要了解如何将 Ops Manager 实例配置为通过HTTPS运行,请参阅部署 Ops Manager 资源。
spec.applicationDatabase.security.tls.ca类型:字符串
包含应用程序数据库的 CA文件的Kubernetes ConfigMap 的名称。
重要
如果使用自定义 CA 签署应用程序数据库的 TLS 证书,则需要
spec.applicationDatabase.security.tls.ca。Kubernetes Operator 要求您在 ConfigMap 中将应用程序数据库的证书命名为
ca-pem。当
spec.backup.s3OpLogStores.customCertificate或spec.backup.s3Stores.customCertificate设立为true时,本节中指定的 CA 还用于为 S3存储配置自定义 TLS 证书。此CA签署的证书:
应用程序数据库副本集成员用于相互通信,以及
MongoDB Ops Manager用于与应用程序数据库副本集进行通信。
警告
您必须连接自定义 CA文件和来自
downloads.mongodb.com的整个 TLS 证书链,以防止应用程序数据库重新启动时Ops Manager无法运行。
spec.applicationDatabase.security.tls.enabled重要
spec.security.applicationDatabase.tls.enabled已弃用,并将在未来发布中删除。要启用TLS,请为spec.security.applicationDatabase.certsSecretPrefix设置提供一个值。使用TLS证书对MongoDB Ops Manager和应用程序数据库之间的通信进行加密。
Prometheus 设置
将 Prometheus 与应用程序数据库结合使用时,以下设置应用:
spec.applicationDatabase.prometheus.metricsPath类型:字符串
默认值:
"/metrics"可选。人类可读的字符串,指示指标终结点的路径。如果不指定此设置,则使用默认设置。
spec.applicationDatabase.prometheus.passwordSecretRef类型:对象
包含基本HTTP身份验证密钥详细信息的条件对象。如果要将 Prometheus 与应用程序数据库一起使用,则必须指定此设置。
spec.applicationDatabase.prometheus.passwordSecretRef.name类型:字符串
可选的
人类可读标签,用于标识包含基本HTTP身份验证密码的密钥。如果要将 Prometheus 与应用程序数据库一起使用,则必须指定此设置。
多集群设置
MongoDB Ops Manager所需设置
除了所需的 MongoDB Ops Manager 设置之外,本部分还介绍了多集群MongoDB Ops Manager部署必须使用的MongoDB Ops Manager 。
spec.clusterSpecList.members类型:整型
有条件。多 Kubernetes集群MongoDB 部署中Ops Manager集群中Ops Manager成员的数量。将
spec.topology设立为MultiCluster时,必须指定此参数的值。对于单集群部署,请省略此参数。如果将此参数设立为零,则会从Ops Manager实例的多 Kubernetes集群的成员集群列表中删除Ops Manager成员集群。
spec.topology类型:字符串
KubernetesMongoDB Ops Manager资源的 部署类型。
值为
SingleCluster或MultiCluster。 如果省略,则默认值为SingleCluster。如果指定
MultiCluster:将
MongoDBMultiCluster资源添加到监视的资源列表中。 这向 Kubernetes Operator 表明它应该在多 Kubernetes 集群模式下工作,并执行处理多 Kubernetes 资源所需的配置动作。使用 及其嵌套的
spec.clusterSpecListspec.clusterSpecList.clusterName和 参数,指定至少一个要部署Opsspec.clusterSpecList.membersManager 的成员集群。如果您指定
MultiCluster, Kubernetes Operator 将忽略您为spec.members设立的任何值。 请参阅资源规范的示例。
MongoDB Ops Manager可选设置
MongoDB Ops Manager资源还可以使用以下特定于多集群MongoDB Ops Manager部署的设置:
spec.clusterSpecList类型:集合
有条件。 Kubernetes打算在其中部署Kubernetes MongoDB Ops Manager或备份守护程序实例的多 集群中所选 成员集群的详细信息。另请参阅资源规范的示例。
将 设立为
spec.topologyMultiCluster时,必须指定spec.clusterSpecList.members的值。spec.clusterSpecList下的所有其他参数都是可选的。当您将
spec.topology设立为SingleCluster时, Kubernetes Operator 会忽略spec.clusterSpecList下的所有参数。
spec.clusterSpecList.clusterName类型:字符串
可选。多 Kubernetes集群MongoDB 部署中成员Kubernetes集群的名称,在该部署中, Kubernetes Operator 的MongoDB控制器为MongoDB Ops Manager或备份守护程序进程调度StatefulSet。
spec.clusterSpecList.clusterDomain类型:字符串
可选。特定Ops Manager成员集群的
spec.clusterDomain覆盖。如果省略此值,则默认为spec.clusterDomain中设立的值。 Kubernetes为每个 Pod 分配一个 FQDN。 Kubernetes Operator 使用提供的clusterDomain值计算每个 Pod 的 FQDN。 Kubernetes不提供用于查询这些主机名的API 。
spec.clusterSpecList.configuration类型:集合
可选。 Ops Manager配置属性,覆盖您在
spec.configuration中为特定集群设立的属性。有关属性名称和描述,请参阅Ops Manager配置设置。每个属性采用string类型的值。示例,通过设置这些属性,您可以更改必须传递给特定成员集群中Ops Manager和备份守护程序的环境变量。如果省略指定值,则默认为
spec.configuration中设立的值。
spec.clusterSpecList.jvmParameters类型:字符串数组
可选。 传递给该成员集群的 和备份守护程序实例的 JVM 参数。MongoDB Ops Manager
如果指定此参数,其值将覆盖
spec.jvmParameters中指定的值。有关示例值,请参阅资源规范的示例。如果省略此参数,则 中的值将用于此成员集群中的Ops
spec.jvmParametersManager和备份守护程序实例。
spec.clusterSpecList.externalConnectivity类型:集合
可选。为特定集群启用与Ops Manager 的外部连接的配置对象。这是对特定集群的
spec.externalConnectivity的覆盖。指定此参数的值以更改MongoDB Ops Manager应用程序在不同集群中向外部公开的方式。 示例,如果您在不同云提供商的 节点上部署MongoDB Ops Manager Kubernetes,则可能需要为此参数指定特定于云提供商的值。
如果设置此参数:
Kubernetes Operator 不会为此成员Ops Manager集群使用
spec.externalConnectivity值。
如果省略此参数, Kubernetes Operator 会为此成员集群使用
spec.externalConnectivity中的值。
spec.clusterSpecList.statefulSet.spec类型:集合
可选。 Kubernetes Operator 的MongoDB控制器为多 Kubernetes集群Ops Manager部署中的特定成员集群创建的 StatefulSet
spec.statefulSet.spec规范。此参数将覆盖 。如果省略, Kubernetes Operator 将使用 中的值。示例,您可以使用此参数为多 Kubernetes集群MongoDB 部署中的每个Opsspec.statefulSet.specManager集群指定不同的存储值。要查看哪些字段可以添加到 ,请参阅Kubernetes文档中的
spec.clusterSpecList.statefulSet.specStatefulSetSpec v1 应用程序。
spec.clusterSpecList[*].backup可选。 覆盖在
spec.backup下为该特定成员集群指定的值的备份设置。只有当
spec.backup.enabled设立为true时,才能设立这些值。如果您省略为此参数设置任何值,则它们默认为
spec.backup下的设置中指定的值。此覆盖并不支持所有备份设置。 您无法覆盖以下备份设置,因为它们会全局应用于所有成员集群(如果在
spec.backup下指定):externalServiceEnabledheadDBopLogStoresblockStoress3StoresfileSystemStoresqueryableBackupSecretRefencryption
spec.clusterSpecList[*].backup.members类型:整型
可选。覆盖
spec.backup.members。要在此集群中部署的备份守护程序实例的数量。如果省略此值或提供0值,则Kubernetes Operator 不会在特定成员集群中部署备份守护程序实例。
spec.clusterSpecList[*].backup.assignmentLabels类型:字符串数组
可选。覆盖
spec.backup.assignmentLabels。如果指定, Kubernetes Operator 会将您在此覆盖中指定的值用于特定成员集群中的所有备份守护程序实例。如果省略此参数的值,则默认值是在spec.backup.assignmentLabels中为成员集群中的所有备份守护程序程序实例指定的值。
spec.clusterSpecList[*].backup.jvmParameters类型:字符串数组
可选。覆盖
spec.backup.jvmParameters。允许您为特定成员集群中的备份守护程序实例自定义Java虚拟机(JVM)值。
spec.clusterSpecList[*].backup.statefulSet类型:字符串
可选。覆盖
spec.backup.statefulSet.spec。允许自定义特定成员集群中备份守护程序的值。要查看哪些字段可以添加到 ,请参阅Kubernetes文档中的spec.clusterSpecList[*].backup.statefulSetStatefulSetSpec v1 应用。
应用程序数据库所需设置
本部分介绍必须用于应用程序数据库的多集群MongoDB Ops Manager部署的特定设置。
spec.applicationDatabase.clusterSpecList类型:集合
多 Kubernetes集群MongoDB 部署中选定的Kubernetes成员集群的详细信息,这些集群提供服务托管应用程序数据库的节点。
spec.applicationDatabase.clusterSpecList.clusterName类型:字符串
多 Kubernetes集群MongoDB 部署中成员Kubernetes集群的名称,其中MongoDB Controllers for Kubernetes Operator 为应用程序数据库调度 StatefulSet。
重要
您无法通过修改 CRD 中的
clusterSpecList和topology设置将单个集群Ops Manager实例转换为多 Kubernetes集群MongoDB 部署实例。
spec.applicationDatabase.clusterSpecList.members类型:数字
给定成员集群中的 StatefulSet 节点数。 成员集群是多 Kubernetes 集群 MongoDB 部署中托管应用程序数据库的成员集群之一。
spec.applicationDatabase.topology类型:字符串
应用程序数据库的 Kubernetes 部署类型。
值为
SingleCluster或MultiCluster。 如果省略,则默认值为SingleCluster。如果指定
MultiCluster,则必须至少指定一名成员要使用
clusterSpecList、clusterName、members参数部署应用程序数据库的集群。如果您指定
MultiCluster, Kubernetes Operator 将忽略您为spec.applicationDatabase.members字段设立的值。
要了解更多信息,请参阅多集群资源规范示例。
应用程序数据库可选设置
本部分介绍可用于应用程序数据库的多集群MongoDB Ops Manager部署的特定设置。
spec.applicationDatabase.clusterSpecList.externalAccess类型:字符串
用于向外部公开您的副本集部署的外部域。
默认下,每个副本集成员使用Kubernetes Pod 的 FQDN (
*.svc.cluster.local) 作为默认主机名。但是,如果将外部域添加到此设置,副本集将使用作为指定域的子域的主机名。此主机名使用以下格式:<replica-set-name>-<cluster-idx>-<pod-idx>.<externalDomain>例如:
multi-replica-set-0-1.cluster-0.example.com重要
仅当在没有服务网格的情况下部署应用程序数据库时,才使用此设置。请参阅不使用服务网格的多集群MongoDB Ops Manager。
spec.applicationDatabase.clusterSpecList.memberConfig类型:字符串数组
多集群MongoDB Ops Manager部署中每个应用程序数据库副本集节点的规范。
重要
如果将
spec.topology设立为SingleCluster,请使用spec.applicationDatabase.memberConfig而不是spec.applicationDatabase.clusterSpecList.memberConfig。memberConfig列表中的元素数量必须等于spec.applicationDatabase.clusterSpecList.members。memberConfig列表中元素的顺序必须反映副本集成员的顺序。 示例,大量的第一个元素会影响索引0的 Pod,第二个元素会影响索引1的 Pod,依此类推。例子
请考虑以下应用程序数据库的三成员副本集的示例规范:
spec: replicas: 3 version: 8.0.0 backup: enabled: true storage: resources: requests: storage: 10Gi storageClassName: standard applicationDatabase: clusterSpecList: - name: appdb members: 3 memberConfig: - votes: 1 priority: "0.5" tags: tag1: "value1" environment: "prod" - votes: 1 priority: "1.5" tags: tag2: "value2" environment: "prod" - votes: 0 priority: "0" tags: tag2: "value2" environment: "prod"
spec.applicationDatabase.clusterSpecList.memberConfig.priority类型:字符串
表示应用程序数据库副本集成员成为主节点 (primary node in the replica set)节点的相对可能性的数字。
要增加副本集节点成为主节点的相对可能性,请指定较高的
priority值。要降低副本集节点成为主节点的相对可能性,请指定较低的
priority值。
例如,
memberConfig.priority为1.5的成员比memberConfig.priority为0.5的成员更有可能成为主节点。memberConfig.priority为0的节点没有资格成为主节点。要了解更多信息,请参阅节点优先级。
spec.applicationDatabase.clusterSpecList.memberConfig.tags类型:地图
副本集标记映射,用于将读取和写入操作定向到应用程序数据库副本集的特定成员。