使用X.509进行安全部署
本页内容
您可以为Kubernetes操作员配置使用X.509证书来验证您的客户端应用程序在一个多Kubernetes集群MongoDB部署中.
为了使用X.509证书来保护您的多Kubernetes集群MongoDB部署中,您在中央集群上运行所有操作。中央集群Kubernetes操作员将X.509配置传播到每个成员集群,并更新每个成员集群的Kubernetes操作员配置。
先决条件
在您使用多Kubernetes集群MongoDB部署中加密之前TLS 加密,完成以下任务
请按照多集群快速入门先决条件中的步骤操作。
部署一个TLS加密的多集群。
为Kubernetes Operator创建凭据Kubernetes操作员.
在项目级别启用X.509身份验证,配置所有代理在通信MongoDB部署时使用X.509客户端身份验证。
X.509客户端身份验证需要以下之一与您的
云管理器
运营管理器版本兼容您的Kubernetes操作员版本。
为MongoDBMultiCluster资源启用X.509身份验证
1
2
更新您的 MongoDBMultiCluster
资源启用X509认证。
更新您的MongoDBMultiCluster自定义资源,使用从Kubernetes操作员 MongoDBMultiCluster资源规范中的安全设置。生成的配置可能类似于以下示例
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: ca: custom-ca certsSecretPrefix: <prefix> authentication: enabled: true modes: ["X509"] agents: mode: "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.
3
验证以下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证书
如果您已经创建了X.509证书,请按照以下程序定期更新它们。
1
为 MongoDBMultiCluster
资源更新 secret.
运行以下 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 -
2
更新代理的X.509证书的secret。
运行 kubectl
命令以更新存储 MongoDBMultiCluster
资源的现有secret代理证书
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 -