Docs 菜单
Docs 主页
/
MongoDB Enterprise Kubernetes Operator
/

部署 Ops Manager 资源

在此页面上

  • Considerations
  • 步骤

您可以使用 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用于存储 和 资源的 TLS 证书和私钥的密钥。MongoDB Ops ManagerMongoDB从Kubernetes Operator 版本1 开始。17 。0 , Kubernetes Operator 不支持将连接的 PEM 文件存储为 不透明密钥。

在部署MongoDB Ops Manager资源之前,请确保对MongoDB Ops Manager Ops Manager资源进行规划:

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

请按照以下步骤部署MongoDB 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 存储工具,则可以创建 Vault Secret

要了解有关 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

如果您的MongoDB Ops Manager TLS证书由自定义CA签名,则该CA证书还必须包含允许MongoDB 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 cert2.crt cert3.crt cert4.crt >> mms-ca.crt
  3. 创建 ConfigMap 对于MongoDB Ops Manager :

    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: "6.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...
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: MultiCluster
27 clusterSpecList:
28 - clusterName: cluster1.example.com
29 members: 4
30 - clusterName: cluster2.example.com
31 members: 3
32 - clusterName: cluster3.example.com
33 members: 2
34 version: "6.0.0-ubi8"
35 security:
36 certsSecretPrefix: <prefix> # Required. Text to prefix to the
37 # name of the secret that contains the Application
38 # Database's TLS certificate. Name the secret
39 # <prefix>-<metadata.name>-db-cert.
40 tls:
41 ca: "appdb-ca" # Optional, unless enabling TLS for |mms|.
42 # Name of the ConfigMap file
43 # containing the certicate authority that
44 # signs the certificates used by the
45 # application database.
46
47...
5
6
类型
说明
例子

字符串

此KubernetesMongoDB Ops Manager 对象 的名称 。

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

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

om

数字

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

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

1

字符串

要安装的 Ops Manager 版本。

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

6.0.0

字符串

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

om-admin-secret

spec
.security

字符串

必需

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

om-prod

spec
.security
.tls

字符串

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

om-http-cert-ca

spec
.externalConnectivity

字符串

Kubernetes服务 ServiceType MongoDB Ops ManagerKubernetes在 之外公开 。spec.externalConnectivity如果您不希望Kubernetes KubernetesOperator 创建 服务以将外部流量路由到MongoDB Ops Manager 应用程序,请排除 设置及其子设置。

LoadBalancer

spec
.applicationDatabase

整型

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

3

spec
.applicationDatabase

字符串

必需

MongoDBOps Manager Application Database应运行的 版本。

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

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

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

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

spec
.applicationDatabase

字符串

可选

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

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

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

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

MultiCluster

spec
.applicationDatabase
.security

字符串

必需

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

appdb-prod

spec
.applicationDatabase
.security
.tls

字符串

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

ca

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

7

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

  • 选择配置S 3快照存储块存储存储。 如果同时部署S3快照存储块存储存储, MongoDB Ops Manager会随机选择一个用于备份。

  • 选择配置oplog存储或S 3 oplog存储。 如果同时部署oplog存储和S3 oplog存储, MongoDB Ops Manager会随机选择其中之一用于oplog备份。

类型
说明
例子
spec
.backup

布尔

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

true

spec
.backup
.headDB

集合

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

spec
.backup
.opLogStores

字符串

oplog 存储的名称。

oplog1

spec
.backup
.s3OpLogStores

字符串

S3 oplog 存储的名称。

my-s3-oplog-store

spec
.backup
.opLogStores
.mongodbResourceRef

字符串

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

my-oplog-db

spec
.backup
.s3OpLogStores
.mongodbResourceRef

字符串

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

my-s3-oplog-db

您还必须配置S 3快照存储块存储存储。

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

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

类型
说明
例子
spec
.backup
.s3Stores

字符串

S3快照存储的名称。

s3store1

spec
.backup
.s3Stores
.s3SecretRef

字符串

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

my-s3-credentials

spec
.backup
.s3Stores

字符串

存储 数据库备份快照的 S3S 兼容存储桶的3 URL 。

s3.us-east-1.amazonaws.com

spec
.backup
.s3Stores

字符串

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

my-bucket

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

类型
说明
例子
spec
.backup
.blockStores

字符串

块存储的名称。

blockStore1

spec
.backup
.blockStores
.mongodbResourceRef

字符串

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

my-mongodb-blockstore

8

将要应用部署的备份的任何 可选设置 添加到 对象 规范文件。示例,对于每种类型的备份存储和MongoDB 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-enterprise-kubernetes/master/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: "6.0.5-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: "6.0.17"

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

提示

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

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

status:
applicationDatabase:
lastTransition: "2022-12-06T18:23:22Z"
members: 3
phase: Running
type: ReplicaSet
version: "6.0.5-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 ,您可以从MongoDB Ops Manager Kubernetes集群内部访问 或 使用 ConfigMap 创建项目。

13

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

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

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

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

  1. 将防火墙规则设置为允许从互联网访问权限运行Kubernetes集群的托管上的spec.externalConnectivity. port

  2. 打开浏览器窗口,使用MongoDB Ops Manager FQDN 和 导航到spec.externalConnectivity.port 应用程序。

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

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

14

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

15

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

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

  • 将 ConfigMap 中的 data.baseUrl 设置为MongoDB 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: "6.0.5-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 的名称 包含用于签署MongoDB Ops Manager 主机证书的根 CA 证书。Kubernetes Operator 要求您在 ConfigMap 中将此MongoDB Ops Manager资源的证书命名为 mms-ca.crt

16

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

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

    注意

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

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

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

    注意

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

    将资源的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: "6.0.5-ubi8"
opsManager:
lastTransition: "2022-12-06T17:46:32Z"
phase: Running
replicas: 1
url: https://om-backup-svc.dev.svc.cluster.local:8443
version: "6.0.17"

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

请按照以下步骤部署MongoDB Ops Manager资源以通过HTTP运行:

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

更改设置以匹配您的MongoDB 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 secret
11 # for the admin user
12 externalConnectivity:
13 type: LoadBalancer
14
15 applicationDatabase:
16 topology: SingleCluster
17 members: 3
18 version: <mongodbversion>
19...
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
16 applicationDatabase:
17 topology: MultiCluster
18 clusterSpecList:
19 - clusterName: cluster1.example.com
20 members: 4
21 - clusterName: cluster2.example.com
22 members: 3
23 - clusterName: cluster3.example.com
24 members: 2
25 version: "6.0.5-ubi8"
26
27...
3
4
类型
说明
例子

字符串

此KubernetesMongoDB Ops Manager 对象 的名称 。

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

要学习;了解更多信息,请参阅 和有关metadata.name 名称的 Kubernetes文档。

om

数字

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

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

1

字符串

要安装的 Ops Manager 版本。

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

6.0.0

字符串

您为 管理员用户 创建 的密钥的名称。MongoDB Ops Manager

配置密钥以使用相同的 命名空间 作为MongoDB Ops Manager 资源。

om-admin-secret

spec
.externalConnectivity

字符串

可选

Kubernetes服务 ServiceType MongoDB Ops ManagerKubernetes在 之外公开 。

如果不希望 Kubernetes Operator 创建 Kubernetes 服务以将外部流量路由到 Ops Manager 应用程序,请排除spec. externalConnectivity设置及其子设置。

LoadBalancer

spec
.applicationDatabase

整型

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

3

spec
.applicationDatabase

字符串

必需

MongoDBOps Manager Application Database应运行的 版本。

对于 MongoDB Community Edition,格式应为X.Y.Z ;对于Enterprise Edition,格式应为X.Y.Z-ubi8

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

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

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

spec
.applicationDatabase

字符串

可选

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

如果您指定MultiCluster ,Kubernetes Operator 将忽略您为spec.applicationDatabase.members字段设置的值(如果已指定)。

相反,您必须指定clusterSpecList ,并在其中包含要部署应用程序数据库的每个选定Kubernetes成员集群的clusterName ,以及每个Kubernetes集群中members ( MongoDB节点)的数量。

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

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

MultiCluster

5

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

  • 选择配置S 3快照存储块存储存储。 如果同时部署S3快照存储块存储存储, MongoDB Ops Manager会随机选择一个用于备份。

  • 选择配置oplog存储或S 3 oplog存储。 如果同时部署oplog存储和S3 oplog存储, MongoDB Ops Manager会随机选择其中之一用于oplog备份。

类型
说明
例子
spec
.backup

布尔

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

true

spec
.backup
.headDB

集合

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

spec
.backup
.opLogStores

字符串

oplog 存储的名称。

oplog1

spec
.backup
.s3OpLogStores

字符串

S3 oplog 存储的名称。

my-s3-oplog-store

spec
.backup
.opLogStores
.mongodbResourceRef

字符串

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

my-oplog-db

spec
.backup
.s3OpLogStores
.mongodbResourceRef

字符串

S 3 oplog存储的MongoDB 数据库资源的名称。

my-s3-oplog-db

您还必须配置S 3快照存储块存储存储。 如果同时部署S3快照存储块存储存储, MongoDB Ops Manager会随机选择一个用于备份。

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

类型
说明
例子
spec
.backup
.s3Stores

字符串

S3快照存储的名称。

s3store1

spec
.backup
.s3Stores
.s3SecretRef

字符串

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

my-s3-credentials

spec
.backup
.s3Stores

字符串

存储 数据库备份快照的 S3S 兼容存储桶的3 URL 。

s3.us-east-1.amazonaws.com

spec
.backup
.s3Stores

字符串

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

my-bucket

spec
.backup
.s3Stores

字符串

S 3兼容存储桶所在的区域。 仅当S 3存储的s3BucketEndpointURL中不包含地区时,才使用此字段。 请勿将此字段与Amazon Web Services S3存储桶一起使用。

us-east-1

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

类型
说明
例子
spec
.backup
.blockStores

字符串

块存储的名称。

blockStore1

spec
.backup
.blockStores
.mongodbResourceRef

字符串

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

my-mongodb-blockstore

6

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

7

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

8
9

在 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-enterprise-kubernetes/master/samples/ops-manager/ops-manager-external.yaml
10

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

kubectl get om -o yaml -w

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

status:
applicationDatabase:
lastTransition: "2023-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 操作符 不会协调某一资源。

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

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

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

提示

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

11

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

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

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

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

  1. 将防火墙规则设置为允许从互联网访问权限运行Kubernetes集群的托管上的spec.externalConnectivity. port

  2. 打开浏览器窗口,使用MongoDB Ops Manager FQDN 和 导航到spec.externalConnectivity.port 应用程序。

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

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

12

如果启用了备份,则必须创建MongoDB Ops Manager组织,生成编程API密钥,并在secret-storage-tool中创建密钥。 这些活动遵循“为Kubernetes Operator 创建凭证”页面上的先决条件和过程。

13

如果已启用备份,请按照使用 ConfigMap 为每个MongoDB部署创建一个项目页面上的先决条件和过程创建项目。

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

kubectl get om -o yaml -w

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

status:
applicationDatabase:
lastTransition: "2022-04-01T10:00:32Z"
members: 3
phase: Running
type: ReplicaSet
version: "6.0.5-ubi8"
backup:
lastTransition: "2022-04-01T09:57:42Z"
message: The MongoDB object <namespace>/<oplogresourcename>
doesn't exist
phase: Pending
opsManager:
lastTransition: "2022-04-01T09:57:40Z"
phase: Running
replicas: 1
url: http://om-svc.cloudqa.svc.cluster.local:8080
version: "6.0.17"

重要

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

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

14

如果已启用 备份 ,请为 和快照存储创建MongoDB database oplog资源以完成配置。

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

    注意

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

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

  2. 选择以下选项之一:

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

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

    2. 配置S 3存储桶以用作S 3快照存储。

      确保您可以使用您在 3MongoDB Ops Manager资源定义中指定的详细信息访问权限 S 存储桶。

15

如果已启用备份,请通过调用以下命令检查MongoDB Ops Manager资源的状态:

kubectl get om -o yaml -w

当MongoDB Ops Manager正在运行时,该命令会在 status字段下返回以下输出:

status:
applicationDatabase:
lastTransition: "2022-04-01T10:00:32Z"
members: 3
phase: Running
type: ReplicaSet
version: "6.0.5-ubi8"
backup:
lastTransition: "2022-04-01T10:00:53Z"
phase: Running
version: "6.0.5-ubi8"
opsManager:
lastTransition: "2022-04-01T10:00:34Z"
phase: Running
replicas: 1
url: http://om-svc.cloudqa.svc.cluster.local:8080
version: "6.0.17"

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

在此页面上