对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。

配置 TLS 用于迁移到 Kubernetes

当您将启用 TLS 的副本集从虚拟机迁移到 Kubernetes 时,一个副本集就是一个信任域。从签署虚拟机证书的同一证书授权机构 (CA) 颁发 Kubernetes 节点证书。这是唯一专门针对迁移的 TLS 要求。通用的 Kubernetes 操作符 TLS 文档涵盖了所有其他关于配置 TLS 的内容。CA 不匹配会导致测试运行失败,设计如此。要了解演练运行如何发现该故障,请参阅 使用演练运行验证迁移就绪性。

重要

此页面上的字段仅用于迁移。不要在全新的 Kubernetes 操作符部署上设置它们,除非字段说明另有规定。

要了解如何颁发证书、构建 Secrets 和 ConfigMaps,以及在 MongoDB 自定义资源上配置常规 TLS 设置,请参阅:

在按照该文档进行迁移时,请从签署虚拟机证书的同一个 CA 颁发 Kubernetes 节点证书,而不是从新的 CA 颁发。名为 <resourceName>-ca 的 CA ConfigMap 必须包含一个从该同一 CA 填充的 ca-pem 密钥。

您需要满足以下条件:

  • 虚拟机部署的现有 CA 证书和密钥材料。

  • cert-manager 或相同的工具用于颁发来自同一个 CA 的 Kubernetes 节点证书。

  • 来自 迁移副本集到 Kubernetes 生成的 MongoDB 自定义资源

1

请遵循 设置 cert-manager 集成 或 生成 X.509 客户端证书 以创建名为 <certsSecretPrefix>-<resourceName>-cert 的 kubernetes.io/tls Secret,并从签署虚拟机证书的同一 CA 颁发证书。

创建命名为 <resourceName>-ca 的 CA ConfigMap ,并从该 CA 填充 ca-pem 密钥。

如果使用 X.509 代理身份验证,还要创建 <certsSecretPrefix>-<resourceName>-agent-certs Secret 并将 spec.security.authentication.agents.clientCertificateSecretRef 设置为引用它。此要求仅适用于代理身份验证,而不适用于内部集群身份验证(spec.security.authentication.internalCluster)。

2

这些字段的存在只是为了使 Kubernetes 操作符对文件路径的看法与虚拟机部署已经安排其证书和密钥文件的方式匹配。仅设置应用于源部署的选项:

  • spec.security.tls.caFilePath:CA 投影到 Pod 内部的绝对路径。默认为 /mongodb-automation/tls/ca/ca-pem。该路径必须至少包含两个路径段。应用程序数据库不支持此字段。如果您的 podTemplate 在此路径上挂载了另一个卷,则该挂载会遮蔽投影的 CA,并且 Ops Manager 代理无法读取它。

  • spec.security.authentication.agents.autoPEMKeyFilePath:数据库 Pod 中代理组合 PEM 文件的绝对路径。此字段仅配置代理身份验证。设置此字段将设置 Ops Manager tls.autoPEMKeyFilePath 值,并将 clientCertificateSecretRef 引用的 Secret 挂载到该路径。它默认为哈希派生的代理证书挂载路径,设置它需要已设置 spec.security.authentication.agents.clientCertificateSecretRef。仅当虚拟机部署使用非默认代理 PEM 路径时,才设置此字段。

  • spec.downloadBase:MongoDB Ops Manager 代理二进制文件的下载目录。默认为 /var/lib/mongodb-mms-automation。Kubernetes Operator 从此值派生密钥文件路径为 <downloadBase>/keyfile。

3

如果虚拟机部署从未配置过 TLS,请在迁移之前在现有虚拟机部署的 MongoDB Ops Manager 或 Cloud Manager 中将 net.tls.mode 设置为 disabled。请勿在 MongoDB 自定义资源上设置此字段。

如果您将源部署的 TLS 模式保持未设置状态,Kubernetes 操作符将尝试进行与源自动化配置不匹配的部署更改,因为其对 TLS 的默认观点与从未配置 TLS 的部署不同。将源部署上的字段设置为 disabled 可使 Kubernetes 操作符的视图与虚拟机部署匹配,并避免该虚假变更。

4

在仍然存在 dry-run 注释的情况下应用资源,并检查 NetworkConnectivityVerified 条件。要了解如何读取结果以及在失败时该怎么做,请参阅 通过试运行验证迁移就绪情况。

分片集群需要为每个组件提供一个证书,遵循以下模式:配置服务器使用 <resourceName>-config-*,每个分片使用 <resourceName>-<shardIndex>-*,mongos 路由器使用 <resourceName>-mongos-*。

注意

在协调之前,对比生成的资源,确认每个组件的准确 Secret 名称。要了解分片集群迁移与副本集迁移有何不同,请参阅 将分片集群迁移到 Kubernetes。