使用kubectl mongodb插件可以:
kubectl mongodb插件具有以下子命令:
setup 子命令
kubectl mongodb multicluster setup子命令设置初始多 Kubernetes 集群 MongoDB 部署。 它执行以下操作:
创建一个名为
mongodb-kubernetes-operator-member-list的默认ConfigMap,其中包含多 Kubernetes集群MongoDB 部署的所有成员集群。 此名称是硬编码的,无法更改。 请参阅已知问题。为服务帐户应用正确的权限。
使用前面的设置创建多 Kubernetes 集群 MongoDB 部署。
setup 子命令选项
kubectl mongodb插件的setup子命令具有以下选项:
选项 | 数据类型 | 说明 |
|---|---|---|
| 字符串 | 必填。Kubernetes 操作符 将部署在其中的中央集群,例如: |
| 字符串 | 必需。 Kubernetes 操作符将部署到的命名空间,例如: |
| 布尔 | 可选。 指示是否删除以前创建的除命名空间之外的所有资源的标志。 默认值为 |
| 布尔 | 可选。指示是否为节点集群创建 集群Role 和 集群RoleBindings 的标志。默认值为 |
| 布尔 | 可选。指示是否为Kubernetes API 服务器中的服务帐户创建密钥的标志。默认值为 |
| 布尔 | 可选。指示是否安装在节点集群上运行 MongoDB 工作负载所需的服务帐户和角色的标志。默认值为 |
| 布尔 | 可选。 标志,表示 |
| 字符串 | 必需。 以逗号分隔的列表,包含成员集群,例如: |
| 字符串 | 可选。Kubernetes 操作符用于访问节点集群的Kubernetes API 服务器的 PEM 编码 CA 捆绑包的路径,格式为 |
| 字符串 | 必需。 成员集群资源将部署到的命名空间,例如: |
| 字符串 | 可选。 Kubernetes 操作符用于与成员集群通信的服务帐户名称。默认值为 |
有关kubectl mongodb插件setup子命令用法的完整示例,请参阅多Kubernetes集群快速入门。
restore 子命令
在某些情况下, kubectl mongodb multicluster子命令可以自动恢复出现故障的集群拓扑。 在其他情况下,您必须手动从故障中恢复。 要了解更多信息,请参阅灾难恢复。
restore 子命令选项
kubectl mongodb插件的recover子命令具有以下选项:
选项 | 数据类型 | 说明 |
|---|---|---|
| 字符串 | 必填。Kubernetes 操作符 将部署在其中的中央集群,例如: |
| 字符串 | 必需。 Kubernetes 操作符将部署到的命名空间,例如: |
| 布尔 | 可选。 指示是否删除以前创建的除命名空间之外的所有资源的标志。 默认值为 |
| 布尔 | 可选。指示是否为节点集群创建 集群Role 和 集群RoleBindings 的标志。默认值为 |
| 字符串 | 可选。Kubernetes 操作符用于访问节点集群的Kubernetes API 服务器的 PEM 编码 CA 捆绑包的路径,格式为 |
有关kubectl mongodb插件recover子命令用法的完整示例,请参阅手动灾难恢复过程。
用于节点集群的自定义 CA 包
默认下,kubectl mongodb 插件从每个成员集群的服务帐户令牌密钥中读取该集群的 CA,并将其写入生成的 mongodb-enterprise-operator-multi-cluster-kubeconfig 密钥中。在某些情况下,您可能需要提供自定义 CA 捆绑包,示例:当从Kubernetes Operator 到成员集群的Kubernetes API服务器的网络路径在其他地方终止 TLS 时,例如在提供自己证书的代理或负载负载均衡器处。使用 member-cluster-ca 选项提供自定义 CA 捆绑包。
以下命令为三个节点集群中的两个提供了 CA 捆绑包:
kubectl mongodb multicluster setup \ --central-cluster="operator-cluster" \ --member-clusters="cluster-1,cluster-2,cluster-3" \ --member-cluster-namespace=mongodb \ --central-cluster-namespace=mongodb \ --member-cluster-ca cluster-1=/path/to/cluster-1-ca.pem \ --member-cluster-ca cluster-2=/path/to/cluster-2-ca.pem
在上述示例中,cluster-3 保留来自其服务账户令牌秘密的 CA。
CA 证书包要求
kubectl mongodb 插件会将文件内容原封不动地复制到 KubeConfig secret 中,因此请仅传递证书。每个文件必须满足以下要求:
包含至少一个 PEM 编码的证书。
不包含私钥。TLS 终结符导出的包可能会将服务器密钥放在其证书旁边。该插件会拒绝这类包,并报告错误
found a private key (<block type> block), pass certificates only。
插件还会返回错误,如果您传递了格式错误的 <member-cluster-name>=<path-to-pem-file> 对、命名了 member-clusters 未列出的节点集群,或多次命名同一节点集群。
重复运行
setup 和 recover 子命令都会重新生成整个 KubeConfig 密钥。如果您在后续运行中从 member-cluster-ca 中省略了节点集群,则该集群将恢复为使用其服务帐户令牌密钥中的 CA。为了保留自定义 CA,每次运行任一子命令时,请确保为每个需要自定义 CA 的节点集群重新传递 member-cluster-ca 选项。
当子命令替换与节点集群的服务账户令牌秘密不匹配的 CA 时,插件会打印一条类似于以下内容的警告:
Warning: replacing the CA for member cluster cluster-1, which does not match its ServiceAccount token secret. Pass --member-cluster-ca cluster-1=<path-to-pem-file> to keep a custom CA.
该警告是建议性的。子命令仍然完成并写入新的 KubeConfig 秘密。