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

部署 Ops Manager 资源

您可以使用 Kubernetes 操作符将 Ops Manager 作为资源部署在 Kubernetes container中。

以下注意事项适用:

配置Ops Manager部署时,必须选择是通过 HTTPS 还是HTTP运行连接。

以下 HTTPS 过程:

  • 建立与 Ops Manager 应用程序之间的TLS加密连接。

  • 在应用程序数据库的副本集成员之间建立 TLS -加密连接。

  • TLS 加密需要有效证书。

以下HTTP过程:

  • 不对与 Ops Manager 应用程序之间的连接进行加密。

  • 不加密应用程序数据库副本集成员之间的连接。

  • 设置要求较少。

通过 HTTPS运行时, Ops Manager默认在端口 8443 上运行。

根据您是否要使用 TLS 加密Ops Manager和应用程序数据库连接,选择相应的标签页。

  • 为应用程序数据库的副本集创建一个 TLS 证书。

    此 TLS 证书需要以下属性:

    DNS 名称

    确保为托管应用程序数据库副本集成员的每个 Pod 添加 SAN 或主题名称。每个 Pod 的 SAN 必须使用以下格式:

    <opsmgr-metadata.name>-db-<index>.<opsmgr-metadata.name>-db-svc.<namespace>.svc.cluster.local

    密钥用法

    确保 TLS 证书包含以下密钥用法 (5280):

    • "服务器 auth"

    • "client auth"

重要

Kubernetes Operator 使用 kubernetes.io/tls secrets 来存储Ops Manager和MongoDB资源的 TLS 证书和私钥。从Kubernetes Operator 版本 1.17.0 开始, Kubernetes Operator 不支持存储为不透明密钥的连接 PEM 文件。

此过程适用于在单个Kubernetes集群中部署Ops Manager实例,以及在多集群部署中的中央集群上部署Ops Manager 。如果要在多个Kubernetes集群上部署Ops Manager的多个实例,请参阅在多个Kubernetes集群上部署Ops Manager资源。

请按照以下步骤部署Ops Manager资源以通过 HTTPS运行,并使用 TLS 保护应用程序数据库。

1

如果您尚未执行,请运行以下命令,执行所创建命名空间的所有 kubectl 命令。

注意

MongoDB Ops Manager如果要在多 Kubernetes 集群 部署中部署MongoDB 资源:

  • 将 context 设置为中央集群的名称,例如:kubectl config set context "$MDB_CENTRAL_CLUSTER_FULL_NAME"。

  • 将--namespace设置为您用于多 Kubernetes 集群 MongoDB 部署的相同范围,例如: kubectl config --namespace "mongodb" 。

kubectl config set-context $(kubectl config current-context) --namespace=<metadata.namespace>
2

如果您使用 HashiCorp Vault 作为密钥存储工具,则可以改为创建保管库密钥。

要了解有关 Secret 存储的选项,请参阅配置 Secret 存储。

  1. 获得 TLS 证书和私钥后,运行以下命令以创建 MongoDB Ops Manager密钥 存储 的 TLS 证书:

    kubectl create secret tls <prefix>-<metadata.name>-cert \
    --cert=<om-tls-cert> \
    --key=<om-tls-key>
  2. 运行以下命令,创建用于存储应用程序程序数据库的 TLS 证书的新密钥:

    kubectl create secret tls <prefix>-<metadata.name>-db-cert \
    --cert=<appdb-tls-cert> \
    --key=<appdb-tls-key>
3

如果您的Ops Manager TLS 证书由自定义 CA 签名,则该 CA 证书还必须包含允许Ops Manager备份守护程序从互联网下载MongoDB二进制文件的其他证书。要创建 TLS 证书,请创建 ConfigMap 来保存 CA 证书:

重要

Kubernetes 操作符要求 Ops Manager 证书在 ConfigMap 中命名为mms-ca.crt 。

  1. 从 downloads.mongodb.com 获取Ops Manager的整个 TLS 证书链。以下 openssl 命令将链中的证书以 .crt 格式输出到当前工作目录:

    openssl s_client -showcerts -verify 2 \
    -connect downloads.mongodb.com:443 -servername downloads.mongodb.com < /dev/null \
    | awk '/BEGIN/,/END/{ if(/BEGIN/){a++}; out="cert"a".crt"; print >out}'
  2. 将Ops Manager的 CA 证书文件与您在上一步中获得的来自 downloads.mongodb.com 的整个 TLS 证书链连接:

    cat <custom_ca_cert.pem> cert2.crt cert3.crt cert4.crt >> mms-ca.crt

    注意

    • 将占位符 <custom_ca_cert.pem> 替换为您的自定义 CA 证书 PEM文件。

    • 请勿包含 cert1.crt文件,因为不应包含来自MongoDB的服务器证书。

  3. 为Ops Manager创建 ConfigMap:

    kubectl create configmap om-http-cert-ca --from-file="mms-ca.crt"
4

更改设置以匹配您的 Ops Manager 和应用程序数据库配置。

1---
2apiVersion: mongodb.com/v1
3kind: MongoDBOpsManager
4metadata:
5 name: <myopsmanager>
6spec:
7 replicas: 1
8 version: <opsmanagerversion>
9 adminCredentials: <adminusercredentials> # Should match metadata.name
10 # in the Kubernetes secret
11 # for the admin user
12
13 externalConnectivity:
14 type: LoadBalancer
15 security:
16 certsSecretPrefix: <prefix> # Required. Text to prefix
17 # the name of the secret that contains
18 # Ops Manager's TLS certificate.
19 tls:
20 ca: "om-http-cert-ca" # Optional. Name of the ConfigMap file
21 # containing the certificate authority that
22 # signs the certificates used by the Ops
23 # Manager custom resource.
24
25 applicationDatabase:
26 topology: SingleCluster
27 members: 3
28 version: "8.0.0-ubi8"
29 security:
30 certsSecretPrefix: <prefix> # Required. Text to prefix to the
31 # name of the secret that contains the Application
32 # Database's TLS certificate. Name the secret
33 # <prefix>-<metadata.name>-db-cert.
34 tls:
35 ca: "appdb-ca" # Optional, unless enabling TLS for |mms|.
36 # Name of the ConfigMap file
37 # containing the certicate authority that
38 # signs the certificates used by the
39 # application database.
40
41...
5
6
键
类型
说明
例子

字符串

此Kubernetes MongoDB Ops Manager对象的名称。

资源名称必须少于或等于 44 个字符。

另请参阅有关名称的 metadata.name 和Kubernetes文档。

om

数字

要并行运行的 Ops Manager 实例的数量。

最小有效值为1 。 如果您在spec.topology设置中指定MultiCluster ,则此字段将被忽略。

1

字符串

要安装的 Ops Manager 版本。

格式应为 XYZ 。要查看可用的MongoDB Ops Manager版本,请查看容器注册表。

8.0.0

字符串

您为Ops Manager管理员用户创建的密钥名称。配置密钥以使用与Ops Manager资源相同的命名空间。

om-admin-secret

spec
.security
.certsSecretPrefix

字符串

必需。

包含 Ops Manager TLS 证书的密钥名称前缀的文本。

om-prod

spec
.security
.tls
.ca

字符串

您创建的用于验证使用自定义 CA 签名的Ops Manager TLS 证书的 ConfigMap 的名称。如果您使用自定义 CA 签署Ops Manager TLS 证书,则需要此字段。

om-http-cert-ca

spec
.externalConnectivity
.type

字符串

LoadBalancer

spec
.applicationDatabase
.members

整型

Ops Manager Application Database副本集的成员数。

3

spec
.applicationDatabase
.version

字符串

必需。

Ops Manager 应用程序程序数据库应运行的MongoDB版本。

对于 Enterprise 版,格式应为 X.Y.Z-ubi8;对于 Community 版,格式应为 X.Y.Z。请勿将 -ubi8标签后缀添加到社区版映像,因为Kubernetes Operator 会自动添加标签后缀。

重要提示:确保选择兼容的MongoDB Server版本。 兼容版本因MongoDB 数据库资源使用的基础映像而异。

要了解有关 MongoDB 版本控制的更多信息,请参阅 MongoDB 手册中的 MongoDB 版本控制。

为获得最佳结果,请使用与Ops Manager版本兼容的最新可用企业MongoDB版本。

spec
.applicationDatabase
.topology

字符串

可选。

应用程序数据库的 Kubernetes 部署类型。 如果省略,则默认值为SingleCluster 。

如果指定 MultiCluster, Kubernetes Operator 将忽略您为 spec.applicationDatabase.members字段设立的值(如果已指定)。相反,您必须指定clusterSpecList,并在其中包含要部署应用程序数据库的每个选定Kubernetes成员集群的clusterName,以及每个Kubernetes集群中members( MongoDB节点)的数量。

您无法通过修改 CRD 中的clusterSpecList 和 topology设置将单集群MongoDB Ops Manager 实例转换为多 Kubernetes集群 部署实例。MongoDB

另请参阅资源规范的示例。

MultiCluster

spec
.applicationDatabase
.security
.certsSecretPrefix

字符串

必需。

包含应用程序数据库的TLS证书的密钥名称前缀的文本。

appdb-prod

spec
.applicationDatabase
.security
.tls
.ca

字符串

您创建的用于验证使用自定义 CA 签名的应用程序数据库TLS 证书的 ConfigMap 的名称。如果您使用自定义 CA 签署应用程序数据库TLS 证书,则此字段为必填项。

ca

Kubernetes Operator 会将您使用 spec.applicationDatabase.security.tls.ca 设置添加的 CA 挂载到Ops Manager和应用程序数据库 Pod。

7

要配置备份,必须启用备份,然后:

键
类型
说明
例子

spec
.backup
.enabled

布尔

指示备份已启用的标志。 您必须指定spec.backup.enabled: true才能配置头部数据库、oplog 存储和快照存储的设置。

true

spec
.backup
.headDB

集合

头部数据库配置设置的集合。有关集合中各个设置的说明,请参阅 spec.backup.headDB。

spec
.backup
.opLogStores
.name

字符串

oplog 存储的名称。

oplog1

spec
.backup
.s3OpLogStores
.name

字符串

S3 oplog存储的名称。

my-s3-oplog-store

spec
.backup
.opLogStores
.mongodbResourceRef
.name

字符串

oplog 存储的MongoDB资源或MongoDBMultiCluster资源的名称。 资源的metadata.name必须与此名称匹配。

如果未显式设立mongodbResourceRef字段, Ops Manager默认使用应用程序数据库,但可可扩展性有限,可能不适合较大的环境。

不建议在生产或大规模部署中使用此默认配置,因为它可能导致性能严重下降、应用程序数据库不稳定以及备份失败。在生产环境中,请始终使用 mongodbResourceRef 为每个备份和oplog存储的元数据配置单独的MongoDB实例。

部署后,您无法更改所选配置,也无法将备份迁移到其他位置。唯一的替代方案是完全停止备份并重新启动,这会导致以前的所有备份都不可用。

my-oplog-db

spec
.backup
.s3OpLogStores
.mongodbResourceRef
.name

字符串

S3 oplog存储的 MongoDB资源或 MongoDBMultiCluster资源的名称。资源的 metadata.name 必须与此名称匹配。

my-s3-oplog-db

您还必须配置 S3快照存储或块存储。

如果同时部署S3快照存储和块存储, Ops Manager会随机选择一个用于备份。

要配置快照存储,请配置以下设置:

键
类型
说明
例子

spec
.backup
.s3Stores
.name

字符串

S3快照存储的名称。

s3store1

spec
.backup
.s3Stores
.s3SecretRef
.name

字符串

包含 accessKey 和 secretKey 字段的密钥名称。备份守护程序服务使用这些字段的值作为凭证来访问权限S3 或 S3 兼容存储桶。

my-s3-credentials

spec
.backup
.s3Stores
.s3BucketEndpoint

字符串

存储数据库备份快照的 S3 或 S3 兼容存储桶的URL 。

s3.us-east-1.amazonaws.com

spec
.backup
.s3Stores
.s3BucketName

字符串

存储数据库备份快照的 S3 或 S3 兼容存储桶的名称。

my-bucket

要配置块存储,请配置以下设置:

键
类型
说明
例子

spec
.backup
.blockStores
.name

字符串

块存储的名称。

blockStore1

spec
.backup
.blockStores
.mongodbResourceRef
.name

字符串

您为块存储创建的MongoDB资源的名称。 您必须将此数据库资源部署在与 Ops Manager 资源相同的命名空间中。

如果未显式设立mongodbResourceRef字段, Ops Manager默认使用应用程序数据库,但可可扩展性有限,可能不适合较大的环境。

不建议在生产或大规模部署中使用此默认配置,因为它可能导致性能严重下降、应用程序数据库不稳定以及备份失败。在生产环境中,请始终使用 mongodbResourceRef 为每个备份和oplog存储的元数据配置单独的MongoDB实例。

部署后,您无法更改所选配置,也无法将备份迁移到其他位置。唯一的替代方案是完全停止备份并重新启动,这会导致以前的所有备份都不可用。

my-mongodb-blockstore

8

将要应用部署的任何可选备份设置添加到对象规范文件中。示例,对于每种类型的备份存储和Ops Manager备份守护进程进程,您可以分配标签,将特定备份存储或备份守护进程进程与特定项目关联起来。使用 OpsManager 资源的 spec.backup.[*].assignmentLabels 元素。

9

将要应用部署的任何可选设置添加到对象规范文件中。

10
11

在 Ops Manager 资源定义的文件名上运行以下kubectl命令:

kubectl apply -f <opsmgr-resource>.yaml

注意

MongoDB Ops Manager如果要在多 Kubernetes集群 部署上部署MongoDB 资源,请运行:

kubectl apply \
--context "$MDB_CENTRAL_CLUSTER_FULL_NAME" \
--namespace "mongodb"
-f https://raw.githubusercontent.com/mongodb/mongodb-kubernetes/1.1.0/public/samples/ops-manager/ops-manager-external.yaml
12

要检查 Ops Manager 资源的状态,请调用以下命令:

kubectl get om -o yaml -w

部署资源时,该命令会在status字段下返回类似于以下内容的输出:

status:
applicationDatabase:
lastTransition: "2022-04-01T09:49:22Z"
message: AppDB Statefulset is not ready yet
phase: Pending
type: ""
version: ""
backup:
phase: ""
opsManager:
phase: ""

Kubernetes Operator 按以下顺序协调资源:

  1. 应用程序数据库。

  2. Ops Manager。

  3. 备份。

在前一个资源进入Running阶段之前,Kubernetes 操作符 不会协调某一资源。

在 Ops Manager 经理完成Pending阶段后,如果启用了备份,该命令会在status字段下返回类似于以下内容的输出:

status:
applicationDatabase:
lastTransition: "2022-04-01T09:50:20Z"
members: 3
phase: Running
type: ReplicaSet
version: "8.0.0-ubi8"
backup:
lastTransition: "2022-04-01T09:57:42Z"
message: The MongoDB object <namespace>/<oplogresourcename>
doesn't exist
phase: Pending
opsManager:
lastTransition: "2023-04-01T09:57:40Z"
phase: Running
replicas: 1
url: https://om-svc.cloudqa.svc.cluster.local:8443
version: "8.0.0"

在配置备份数据库之前,备份将保持Pending状态。

提示

status.opsManager.url字段说明资源的连接URL。使用此URL ,您可以从Kubernetes集群内部访问Ops Manager或使用 ConfigMap 创建项目。

资源完成Pending阶段后,该命令会在status字段下返回类似于以下内容的输出:

status:
applicationDatabase:
lastTransition: "2022-12-06T18:23:22Z"
members: 3
phase: Running
type: ReplicaSet
version: "8.0.0-ubi8"
opsManager:
lastTransition: "2022-12-06T18:23:26Z"
message: The MongoDB object namespace/oplogdbname doesn't exist
phase: Pending
url: https://om-svc.dev.svc.cluster.local:8443
version: ""

在配置备份数据库之前,备份将保持Pending状态。

提示

status.opsManager.url字段说明资源的连接URL。使用此URL ,您可以从Kubernetes集群内部访问Ops Manager或使用 ConfigMap 创建项目。

13

根据您在 Kubernetes 中将流量路由到 Ops Manager 应用程序的方式,您采取的步骤会有所不同。如果已配置 Kubernetes 操作符 来为您创建 Kubernetes 服务,或者您手动创建了 Kubernetes 服务,请使用以下方法之一访问 Ops Manager 应用程序:

  1. 查询您的云提供商以获取负载均衡器服务的FQDN 。 有关详细信息,请参阅云提供商的文档。

  2. 打开浏览器窗口,使用负载负载均衡器服务的 FQDN 和端口号导航到Ops Manager应用程序。

    https://ops.example.com:8443
  3. 使用管理员用户凭证登录 Ops Manager。

要了解如何使用第三方服务访问 Ops Manager 应用程序,请参阅您的解决方案的文档。

14

要配置凭证,您必须创建MongoDB Ops Manager组织、生成编程API密钥并创建密钥。这些活动遵循“为Kubernetes Operator 创建凭证”页面上的先决条件和过程。

15

要创建项目,请遵循使用 ConfigMap 为每个MongoDB部署创建一个项目页面上的前提条件和步骤。

在项目 ConfigMap 中设置以下字段:

  • 将 ConfigMap 中的data.baseUrl设置为 Ops Manager 应用程序的URL 。 要查找此URL ,请调用以下命令:

    kubectl get om -o yaml -w

    该命令在status.opsManager.url字段中返回 Ops Manager 应用程序的 URL,与以下示例类似:

    status:
    applicationDatabase:
    lastTransition: "2022-12-06T18:23:22Z"
    members: 3
    phase: Running
    type: ReplicaSet
    version: "8.0.0-ubi8"
    opsManager:
    lastTransition: "2022-12-06T18:23:26Z"
    message: The MongoDB object namespace/oplogdbname doesn't exist
    phase: Pending
    url: https://om-svc.dev.svc.cluster.local:8443
    version: ""

    重要

    如果将 Ops Manager 与 Kubernetes Operator 一起部署,且 Ops Manager 将管理部署在 Kubernetes 集群外部的 MongoDB 数据库资源,则必须将 data.baseUrl 设置为与 Ops Manager 资源规范中的 spec.configuration.mms.centralUrl 设置相同的值。

    要学习;了解更多信息,请参阅管理外部MongoDB部署。

  • 将 data.sslMMSCAConfigMap 设置为 ConfigMap 的名称,其中包含用于签署Ops Manager主机证书的根 CA 证书。 Kubernetes Operator 要求您在 ConfigMap 中将此Ops Manager资源的证书命名为 mms-ca.crt。

16

默认下, Ops Manager会启用备份。为oplog和快照存储创建MongoDB 数据库资源以完成配置。

  1. 在与 Ops Manager 资源相同的命名空间中为 oplog 存储部署MongoDB database资源。

    注意

    创建此数据库作为三成员副本集。

    将资源的metadata.name与您在 Ops Manager 资源定义中指定的spec.backup.opLogStores.mongodbResourceRef.name进行匹配。

  2. 在与Ops Manager资源相同的命名空间中为 S3快照存储部署MongoDB 数据库资源。

    注意

    创建 S3快照存储作为副本集。

    将资源的metadata.name与您在 Ops Manager 资源定义中指定的spec.backup.s3Stores.mongodbResourceRef.name进行匹配。

17

要检查 Ops Manager 资源的状态,请调用以下命令:

kubectl get om -o yaml -w

当 Ops Manager 运行时,该命令会在status字段下返回类似于以下内容的输出:

status:
applicationDatabase:
lastTransition: "2022-12-06T17:46:15Z"
members: 3
phase: Running
type: ReplicaSet
version: "8.0.0-ubi8"
opsManager:
lastTransition: "2022-12-06T17:46:32Z"
phase: Running
replicas: 1
url: https://om-backup-svc.dev.svc.cluster.local:8443
version: "8.0.0"

有关资源部署状态的信息,请参阅排除 Kubernetes 操作符故障。

给本页内容打分

在此页面上