MongoDB Enterprise Kubernetes Operator 已弃用。新的 MongoDB Controllers for Kubernetes Operator 取代了MongoDB Enterprise Kubernetes Operator。第一个版本的 Controllers for Kubernetes Operator 在功能上等同于 v1.33 的Enterprise Kubernetes Operator。有关此更改的更多信息以及迁移到新 Operator 的指导,请参阅第一个新版本的发布说明。 MongoDB Enterprise Kubernetes Operator 的未来版本将不会再发布。根据现有的一年 支持政策,每个版本都将结束生命周期。请迁移到Kubernetes Operator 的控制器以获得持续支持。
本指南将指导您如何配置:
X. 509多 Kubernetes集群MongoDB部署中每个集群的MongoDB节点之间的内部身份验证。
从客户端到 MongoDB 实例的 X.509 身份验证。
先决条件
在使用 TLS加密保护多 Kubernetes 集群 MongoDB 部署之前,请完成以下任务:
为 Kubernetes 操作符创建档案。
在项目级别启用 X.509 身份验证会将所有代理配置为在与 MongoDB 部署通信时使用 X.509 客户端身份验证。
X.509 客户端身份验证需要满足以下条件之一:
为 MongoDBMultiCluster 资源配置 X.509 内部身份验证
1
2
为成员集群的内部 X.509 证书创建密钥。
运行kubectl
命令以创建用于存储内部集群成员的 X.509 证书的新密钥。 成员集群在MongoDBMultiCluster
资源中定义。
kubectl --context $MDB_CENTRAL_CLUSTER_FULL_NAME \ --namespace=<metadata.namespace> \ create secret tls <prefix>-<metadata.name>-clusterfile \ --cert=<resource-clusterfile-tls-cert> \ --key=<resource-clusterfile-tls-key>
3
更新MongoDBMultiCluster
资源以启用X509 身份验证。
使用 Kubernetes Operator MongoDBMultiCluster 资源规范 中的安全设置 更新 MongoDBMultiCluster 自定义资源 。在spec.authentication
下添加internalCluster
设置,并将其设置为"X509"
。 生成的配置可能类似于以下示例:
apiVersion: mongodb.com/v1 kind: MongoDBMultiCluster metadata: name: multi-replica-set spec: version: 6.0.0-ent type: ReplicaSet persistent: false duplicateServiceObjects: true credentials: my-credentials opsManager: configMapRef: name: my-project security: tls: a: custom-ca certsSecretPrefix: <prefix> authentication: enabled: true modes: ["X509"] agents: mode: "X509" internalCluster: "X509" clusterSpecList: - clusterName: ${MDB_CLUSTER_1_FULL_NAME} members: 3 - clusterName: ${MDB_CLUSTER_2_FULL_NAME} members: 2 - clusterName: ${MDB_CLUSTER_3_FULL_NAME} members: 3 The |k8s-op-short| copies the ConfigMap with the |certauth| created in the central cluster to each member cluster, generates a concatenated |pem| secret, and distributes it to the member clusters.
4
验证MongoDBMultiCluster
资源是否运行。
对于成员集群,运行以下命令验证 MongoDB Pod 是否处于运行状态:
kubectl get pods \ --context=$MDB_CLUSTER_1_FULL_NAME \ --namespace mongodb kubectl get pods \ --context=$MDB_CLUSTER_2_FULL_NAME \ --namespace mongodb kubectl get pods \ --context=$MDB_CLUSTER_3_FULL_NAME \ --namespace mongodb 在中央集群中,运行以下命令以验证
MongoDBMultiCluster
资源是否处于运行状态:kubectl --context=$MDB_CENTRAL_CLUSTER_FULL_NAME \ --namespace mongodb \ get mdbmc multi-replica-set -o yaml -w
为 MongoDBMultiCluster 资源续订内部身份验证 X.509 证书
如果您已创建证书,请使用以下过程定期续订证书。
1
为 资源更新密钥 。MongoDBMultiCluster
运行此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> \ --dry-run=client \ -o yaml | kubectl apply -f -
2
为代理的 X.509 证书续订密钥。
运行kubectl
命令以更新存储MongoDBMultiCluster
资源代理证书的现有密钥:
kubectl --context $MDB_CENTRAL_CLUSTER_FULL_NAME \ --namespace=<metadata.namespace> \ create secret tls <prefix>-<metadata.name>-agent-certs \ --cert=<agent-tls-cert> \ --key=<agent-tls-key> \ --dry-run=client \ -o yaml | kubectl apply -f -
3
509为MongoDBMultiCluster
资源的内部成员的 X. 证书续订密钥。
运行kubectl
命令以更新现有密钥,该密钥为MongoDBMultiCluster
资源的内部成员存储 X.509 证书:
kubectl --context $MDB_CENTRAL_CLUSTER_FULL_NAME \ --namespace=<metadata.namespace> \ create secret tls <prefix>-<metadata.name>-clusterfile \ --cert=<resource-clusterfile-tls-cert> \ --key=<resource-clusterfile-tls-key> \ --dry-run=client \ -o yaml | kubectl apply -f -