Kubernetes Operator 的MongoDB控制器可以使用 X.509 证书对MongoDB部署的客户端应用程序进行身份验证。
本指南将指导您如何配置从客户端到 MongoDB 实例的 X.509 身份验证。
注意
你无法在 Kubernetes 集群中保护 MongoDB 的独立实例。
一般先决条件
在使用TLS加密保护 MongoDB 部署之前,请完成以下操作:
在项目级别启用 X.509 身份验证会将所有代理配置为在与 MongoDB 部署通信时使用 X.509 客户端身份验证。
为副本集配置 X.509 客户端身份验证
先决条件
在使用 X.509 保护副本集之前,请部署 TLS 加密的副本集。
启用 X.509 客户端身份验证
Copy the sample replica set resource.
Change the settings of this YAML file to match your desired replica set configuration.
1 2 apiVersion: mongodb.com/v1 3 kind: MongoDB 4 metadata: 5 name: <my-replica-set> 6 spec: 7 members: 3 8 version: "8.0.0" 9 opsManager: 10 configMapRef: 11 # Must match metadata.name in ConfigMap file 12 name: <configMap.metadata.name> 13 credentials: <mycredentials> 14 type: ReplicaSet 15 persistent: true
16 security: 17 tls: 18 ca: <custom-ca> 19 certsSecretPrefix: <prefix> 20 authentication: 21 enabled: true 22 modes: ["X509"] 23 ...
Configure the general X.509 settings for your replica set resource.
要在您的部署中启用 TLS 和 X.509,请在您的 Kubernetes 对象中配置以下设置:
Save your replica set config file.
跟踪部署状态。
要检查 MongoDB 资源的状态,请使用以下命令:
kubectl get mdb <resource-name> -o yaml -w
设置 -w (观看) 标志后,当配置更改时,输出将立即刷新,直到状态阶段达到 Running 状态。要了解有关资源部署状态的详情,请参阅 Kubernetes Operator 故障排除。
为副本集续订 X.509 证书
如果您已经创建了证书,我们建议您使用以下过程定期续订证书。
注意
要自动续订 Ops Manager 部署的证书,请考虑设置证书经理集成。
将kubectl 配置为默认命名空间。
如果您尚未执行,请运行以下命令,执行所创建命名空间的所有 kubectl 命令。
注意
MongoDB Ops Manager如果要在多 Kubernetes 集群 部署中部署MongoDB 资源:
kubectl config set-context $(kubectl config current-context) --namespace=<metadata.namespace>
更新 TLS 证书的密钥。
运行此 kubectl 命令以更新存储副本集的证书的现有密钥:
kubectl create secret tls <prefix>-<metadata.name>-cert \ --cert=<replica-set-tls-cert> \ --key=<replica-set-tls-key> \ --dry-run=client \ -o yaml | kubectl apply -f -
为代理的 X.509 证书续订密钥。
运行此 kubectl 命令以更新存储代理的 X.509 证书的现有密钥:
kubectl create secret tls <prefix>-<metadata.name>-agent-certs \ --cert=<agent-tls-cert> \ --key=<agent-tls-key> \ --dry-run=client \ -o yaml | kubectl apply -f -
为分片集群配置 X.509 客户端身份验证
先决条件
在使用 X.509 保护分片集群之前,请部署 TLS 加密的分片集群。
启用 X.509 客户端身份验证
Copy the sample sharded cluster resource.
Change the settings of this YAML file to match your desired sharded cluster configuration.
1 2 apiVersion: mongodb.com/v1 3 kind: MongoDB 4 metadata: 5 name: <my-sharded-cluster> 6 spec: 7 shardCount: 2 8 mongodsPerShardCount: 3 9 mongosCount: 2 10 configServerCount: 3 11 version: "8.0.0" 12 opsManager: 13 configMapRef: 14 name: <configMap.metadata.name> 15 # Must match metadata.name in ConfigMap file 16 credentials: <mycredentials> 17 type: ShardedCluster 18 persistent: true
19 security: 20 tls: 21 ca: <custom-ca> 22 certsSecretPrefix: <prefix> 23 authentication: 24 enabled: true 25 modes: ["X509"] 26 ...
Configure the general X.509 settings for your sharded cluster resource.
要在您的部署中启用 TLS 和 X.509,请在您的 Kubernetes 对象中配置以下设置:
保存分片集群配置文件。
Update and restart your sharded cluster deployment.
In any directory, invoke the following Kubernetes command to update and restart your sharded cluster:
kubectl apply -f <sharded-cluster-conf>.yaml
跟踪部署状态。
要检查 MongoDB 资源的状态,请使用以下命令:
kubectl get mdb <resource-name> -o yaml -w
设置 -w (观看) 标志后,当配置更改时,输出将立即刷新,直到状态阶段达到 Running 状态。要了解有关资源部署状态的详情,请参阅 Kubernetes Operator 故障排除。
为分片集群续订 X.509 证书
如果您已经创建了证书,我们建议您使用以下过程定期续订证书。
注意
要自动续订 Ops Manager 部署的证书,请考虑设置证书经理集成。
将kubectl 配置为默认命名空间。
如果您尚未执行,请运行以下命令,执行所创建命名空间的所有 kubectl 命令。
注意
MongoDB Ops Manager如果要在多 Kubernetes 集群 部署中部署MongoDB 资源:
kubectl config set-context $(kubectl config current-context) --namespace=<metadata.namespace>
更新分片 TLS 证书的密钥。
运行该 kubectl 命令以更新用于存储分片集群分片证书的现有密钥:
kubectl -n mongodb create secret tls <prefix>-<metadata.name>-0-cert \ --cert=<shard-0-tls-cert> \ --key=<shard-0-tls-key> \ --dry-run=client \ -o yaml | kubectl apply -f - kubectl -n mongodb create secret tls <prefix>-<metadata.name>-1-cert \ --cert=<shard-1-tls-cert> \ --key=<shard-1-tls-key> \ --dry-run=client \ -o yaml | kubectl apply -f -
更新配置服务器 TLS 证书的密钥。
运行此 kubectl 命令,以更新存储分片集群配置服务器证书的现有密钥:
kubectl -n mongodb create secret tls <prefix>-<metadata.name>-config-cert \ --cert=<config-tls-cert> \ --key=<config-tls-key> \ --dry-run=client \ -o yaml | kubectl apply -f -
为mongos服务器的 TLS 证书续订密钥。
运行此 kubectl 命令以更新存储分片集群mongos 证书的现有密钥:
kubectl -n mongodb create secret tls <prefix>-<metadata.name>-mongos-cert \ --cert=<mongos-tls-cert> \ --key=<mongos-tls-key> \ --dry-run=client \ -o yaml | kubectl apply -f -
为代理的 X.509 证书续订密钥。
运行此 kubectl 命令以更新存储代理的 X.509 证书的现有密钥:
kubectl create secret tls <prefix>-<metadata.name>-agent-certs \ --cert=<agent-tls-cert> \ --key=<agent-tls-key> \ --dry-run=client \ -o yaml | kubectl apply -f -