在多Kubernetes集群中部署副本集
使用此过程在成员中创建一个新的副本集Kubernetes集群在一个多Kubernetes集群MongoDB部署中.
此过程允许您为副本集资源设置不同的设置,例如对statefulSet配置的覆盖。作为使用此过程的替代方法,您可以使用多Kubernetes集群快速入门,该入门创建一个具有默认设置的多Kubernetes集群MongoDB部署中。
开始之前
了解有关 多Kubernetes集群部署 的信息。
查看 多Kubernetes集群服务和工具 的列表。
在Kubernetes操作器中安装多Kubernetes集群MongoDB部署中。请参阅 多Kubernetes集群快速入门。
完成 先决条件。
部署一个MongoDBMultiCluster
资源
您可以在本TLS加密连接 标签页中使用以下过程
部署一个
MongoDBMultiCluster
资源为
MongoDBMultiCluster
资源续订TLS证书
这些过程在副本集中的MongoDB主机之间以及客户端应用程序和MongoDB部署之间建立了TLS加密连接。
开始之前,您必须拥有有效的TLS加密证书。
部署一个 MongoDBMultiCluster
资源
为您的 MongoDBMultiCluster
资源创建 TLS 证书的密钥.
运行 kubectl
命令创建一个新的密钥,用于存储 MongoDBMultiCluster
资源的证书证书
kubectl --context $MDB_CENTRAL_CLUSTER_FULL_NAME \ --namespace=<metadata.namespace> \ create secret tls <prefix>-<metadata.name>-cert \ --cert=<resource-tls-cert> \ --key=<resource-tls-key>
注意
您必须使用 <prefix>-<metadata.name>
作为您密钥的前缀。
例如,如果您将部署命名为 my-deployment
,并将前缀设置为 mdb
,则客户端 TLS 通信的 TLS 密钥必须命名为 mdb-my-deployment-cert
。此外,内部集群身份验证的 TLS 密钥(如果已启用)必须命名为 mdb-my-deployment-clusterfile
。
创建 ConfigMap 以将您的 CA 与您的 MongoDBMultiCluster
资源关联.
运行 kubectl
命令将您的 CA 与您的 MongoDBMultiCluster
资源关联。指定 CA 证书文件,您必须始终将 ca-pem
命名用于 MongoDBMultiCluster
资源:
kubectl --context $MDB_CENTRAL_CLUSTER_FULL_NAME \ --namespace=<metadata.namespace> \ create configmap custom-ca -from-file=ca-pem=<your-custom-ca-file>
复制并粘贴示例资源。
复制示例副本集 YAML 文件,并将其粘贴到新的文本文件中。
更改文件的设置以匹配您所需的副本集配置。
1 # This example provides statefulSet overrides per cluster. 2 3 apiVersion: mongodb.com/v1 4 kind: MongoDBMultiCluster 5 metadata: 6 name: multi-replica-set 7 spec: 8 version: 6.0.0-ent 9 type: ReplicaSet 10 duplicateServiceObjects: false 11 credentials: my-credentials 12 opsManager: 13 configMapRef: 14 name: my-project 15 clusterSpecList: 16 - clusterName: cluster1.example.com 17 members: 2 18 statefulSet: 19 spec: 20 template: 21 spec: 22 containers: 23 # Example of custom sidecar containers. Remove it before using the file in production. 24 - name: sidecar1 25 image: busybox 26 command: [ "sleep" ] 27 args: [ "infinity" ] 28 # Use the following settings to override the default storage size of the "data" Persistent Volume. 29 volumeClaimTemplates: 30 - metadata: 31 name: data 32 spec: 33 resources: 34 requests: 35 storage: 1Gi 36 - clusterName: cluster2.example.com 37 members: 1 38 statefulSet: 39 spec: 40 template: 41 spec: 42 containers: 43 # Example of custom sidecar containers. Remove it before using the file in production. 44 - name: sidecar2 45 image: busybox 46 command: [ "sleep" ] 47 args: [ "infinity" ] 48 volumeClaimTemplates: 49 - metadata: 50 name: data 51 spec: 52 resources: 53 requests: 54 storage: 1Gi 55 - clusterName: cluster3.example.com 56 members: 1 57 statefulSet: 58 spec: 59 template: 60 spec: 61 containers: 62 # Example of custom sidecar containers. Remove it before using the file in production. 63 - name: sidecar3 64 image: busybox 65 command: [ "sleep" ] 66 args: [ "infinity" ] 67 volumeClaimTemplates: 68 - metadata: 69 name: data 70 spec: 71 resources: 72 requests: 73 storage: 1Gi 74 75 ...
更改设置为您首选的值。
键 | 类型 | 描述 | 示例 |
---|---|---|---|
字符串 |
| ||
字符串 | 运行此 格式应为社区版的 重要:请确保您选择一个与 兼容的 MongoDB 服务器版本。兼容的版本取决于 MongoDB 数据库资源使用的底层数据库。 有关 MongoDB 版本信息的更多信息,请参阅 MongoDB 手册中的 MongoDB 版本。 |
| |
字符串 | 与 Ops Manager 相关的 ConfigMap 的名称。Ops Manager连接配置。设置 此值必须在您要创建的资源所在的 相同 命名空间中存在。 重要:该Kubernetes操作器跟踪 ConfigMap 的任何更改并协调 MongoDB 资源的状态. |
| |
spec .clusterSpecList .clusterName | 字符串 | 在 |
|
spec .clusterSpecList .members | 整数 | 此集群中的成员数量。 |
|
spec .clusterSpecList .statefulSet .spec | collection | 可选。 为每个集群的 StatefulSet 提供配置,在 StatefulSet 中进行覆盖。多Kubernetes集群MongoDB部署中。如果指定在 | 请参阅示例。 |
spec .clusterSpecList .statefulSet .spec volumeClaimTemplates .spec | collection | 可选。 如果指定,则提供对默认存储大小的集群覆盖,该存储大小用于存储数据的持久卷volumeClaimtemplates。 | 请参阅示例。 |
字符串 | 您创建的密钥的名称,作为创建 Ops Manager API 认证凭证用于与Kubernetes操作器通信Ops Manager. Ops ManagerKubernetes 密钥 对象必须存在于您想要创建的资源相同的命名空间上。 重要:该Kubernetes操作器跟踪密钥的任何更改并协调MongoDB资源的状态. |
| |
字符串 | 要创建的MongoDB资源的类型。此字段的唯一支持值为 |
|
为MongoDBMultiCluster资源添加任何其他接受的设置部署。
还可以将任何可选设置添加到对象规范中。请参阅多Kubernetes集群资源规范。
使用.yaml
扩展名保存此副本集配置文件。
跟踪您的多Kubernetes集群MongoDB部署中.
要检查您的 MongoDBMultiCluster
资源的状态,请在中央集群上使用以下命令
kubectl get mdbmc <resource-name> -o yaml -w
使用 -w
(watch)标志时,当配置更改时,输出会立即刷新,直到状态阶段达到 Running
状态。有关资源部署状态的更多信息,请参阅 Kubernetes Operator 故障排除。
为 MongoDBMultiCluster
资源更新 TLS 证书
定期使用以下程序更新您的 TLS 证书。
更新 secret 以更新 MongoDBMultiCluster
资源.
运行此 kubectl
命令以更新存储 MongoDBMultiCluster
资源证书的现有 secret:
kubectl --context $MDB_CENTRAL_CLUSTER_FULL_NAME \ --namespace=<metadata.namespace> \ create secret tls <prefix>-<metadata.name>-cert \ --cert=<resource-tls-cert> \ --key=<resource-tls-key> \ --dry-run=client \ -o yaml | kubectl apply -f -
此过程不会加密副本集内MongoDB主机之间的连接,以及客户端应用程序与MongoDB部署之间的连接。
部署 MongoDBMultiCluster
资源
复制并粘贴示例资源。
复制示例副本集 YAML 文件,并将其粘贴到新的文本文件中。
更改文件的设置以匹配您所需的副本集配置。
1 # This example provides statefulSet overrides per cluster. 2 3 apiVersion: mongodb.com/v1 4 kind: MongoDBMultiCluster 5 metadata: 6 name: multi-replica-set 7 spec: 8 version: 6.0.0-ent 9 type: ReplicaSet 10 duplicateServiceObjects: false 11 credentials: my-credentials 12 opsManager: 13 configMapRef: 14 name: my-project 15 clusterSpecList: 16 - clusterName: cluster1.example.com 17 members: 2 18 statefulSet: 19 spec: 20 template: 21 spec: 22 containers: 23 # Example of custom sidecar containers. Remove it before using the file in production. 24 - name: sidecar1 25 image: busybox 26 command: [ "sleep" ] 27 args: [ "infinity" ] 28 # Use the following settings to override the default storage size of the "data" Persistent Volume. 29 volumeClaimTemplates: 30 - metadata: 31 name: data 32 spec: 33 resources: 34 requests: 35 storage: 1Gi 36 - clusterName: cluster2.example.com 37 members: 1 38 statefulSet: 39 spec: 40 template: 41 spec: 42 containers: 43 # Example of custom sidecar containers. Remove it before using the file in production. 44 - name: sidecar2 45 image: busybox 46 command: [ "sleep" ] 47 args: [ "infinity" ] 48 volumeClaimTemplates: 49 - metadata: 50 name: data 51 spec: 52 resources: 53 requests: 54 storage: 1Gi 55 - clusterName: cluster3.example.com 56 members: 1 57 statefulSet: 58 spec: 59 template: 60 spec: 61 containers: 62 # Example of custom sidecar containers. Remove it before using the file in production. 63 - name: sidecar3 64 image: busybox 65 command: [ "sleep" ] 66 args: [ "infinity" ] 67 volumeClaimTemplates: 68 - metadata: 69 name: data 70 spec: 71 resources: 72 requests: 73 storage: 1Gi 74 75 ...
将设置更改为您喜欢的值。
键 | 类型 | 描述 | 示例 |
---|---|---|---|
字符串 |
| ||
字符串 | 运行此 格式应为社区版的 重要:请确保您选择一个与 兼容的 MongoDB 服务器版本。兼容的版本取决于 MongoDB 数据库资源使用的底层数据库。 有关 MongoDB 版本信息的更多信息,请参阅 MongoDB 手册中的 MongoDB 版本。 |
| |
字符串 | 与 Ops Manager 相关的 ConfigMap 的名称。Ops Manager连接配置。设置 此值必须在您要创建的资源所在的 相同 命名空间中存在。 重要:该Kubernetes操作器跟踪 ConfigMap 的任何更改并协调 MongoDB 资源的状态. |
| |
spec .clusterSpecList .clusterName | 字符串 | 在 |
|
spec .clusterSpecList .members | 整数 | 此集群中的成员数量。 |
|
spec .clusterSpecList .statefulSet .spec | collection | 可选。 为每个集群的 StatefulSet 提供配置,在 StatefulSet 中进行覆盖。多Kubernetes集群MongoDB部署中。如果指定在 | 请参阅示例。 |
spec .clusterSpecList .statefulSet .spec volumeClaimTemplates .spec | collection | 可选。 如果指定,则提供对默认存储大小的集群覆盖,该存储大小用于存储数据的持久卷volumeClaimtemplates。 | 请参阅示例。 |
字符串 | 您创建的密钥的名称,作为创建 Ops Manager API 认证凭证用于与Kubernetes操作器通信Ops Manager. Ops ManagerKubernetes 密钥 对象必须存在于您想要创建的资源相同的命名空间上。 重要:该Kubernetes操作器跟踪密钥的任何更改并协调MongoDB资源的状态. |
| |
字符串 | 要创建的MongoDB资源的类型。此字段的唯一支持值为 |
|
为MongoDBMultiCluster资源添加任何其他接受的设置部署.
还可以将任何可选设置添加到对象规范中。请参阅多Kubernetes集群资源规范。
将此副本集配置文件保存为.yaml
扩展名。
跟踪您的多Kubernetes集群MongoDB部署中.
要检查您的 MongoDBMultiCluster
资源的状态,请在中央集群上使用以下命令
kubectl get mdbmc <resource-name> -o yaml -w
使用 -w
(watch)标志时,当配置更改时,输出会立即刷新,直到状态阶段达到 Running
状态。有关资源部署状态的更多信息,请参阅 Kubernetes Operator 故障排除。