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

配置 Ops Manager 资源以使用远程模式

在此页面上

在默认配置中, MongoDB Agent MongoDB , MongoDB

您可以将MongoDB Ops Manager配置为在远程模式下运行,以便备份守护程序和托管MongoDB资源仅从MongoDB Ops Manager下载安装存档,MongoDB Ops Manager 将下载请求代理到本地 Web服务器或 S3 兼容存储上的HTTP端点部署到Kubernetes集群。

部署MongoDB Ops Manager资源。

以下过程将 Nginx HTTP服务器部署到Kubernetes集群,以托管MongoDB安装存档。

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

本教程中的 ConfigMap 将 Nginx 配置为:

  • 运行名为localhost的 HTTP 服务器,侦听 Kubernetes 集群中节点上的端口80 ,然后

  • 将对特定资源的 HTTP 请求路由到提供 MongoDB Server 和 MongoDB Database Tools 安装存档的位置。

  1. 将以下示例 Nginx ConfigMap 粘贴到文本编辑器中:

    1---
    2apiVersion: v1
    3kind: ConfigMap
    4metadata:
    5 name: nginx-conf
    6data:
    7 nginx.conf: |
    8 events {}
    9 http {
    10 server {
    11 server_name localhost;
    12 listen 80;
    13 location /linux/ {
    14 alias /mongodb-ops-manager/mongodb-releases/linux/;
    15 }
    16 location /tools/ {
    17 alias /tools/;
    18 }
    19 }
    20 }
    21...
  2. .yaml 文件扩展名保存此文件。

  3. 通过对您创建的 ConfigMap 文件调用以下kubectl命令来创建 Nginx ConfigMap:

    kubectl apply -f <nginix-configmap>.yaml
3

本教程中的 Nginx 资源配置:

  • 部署一个 Nginx 副本,

  • 创建卷挂载以存储 MongoDB Server 和 MongoDB database Tools 安装存档,以及

  • 定义 初始化容器 curl使用 命令将 Nginx 提供的安装存档下载到您在Kubernetes集群中部署的MongoDB数据库资源。

  1. 将以下示例 Nginx 资源配置粘贴到文本编辑器中:

    1---
    2apiVersion: apps/v1
    3kind: Deployment
    4metadata:
    5 name: nginx-deployment
    6spec:
    7 replicas: 1
    8 selector:
    9 matchLabels:
    10 app: nginx
    11 template:
    12 metadata:
    13 labels:
    14 app: nginx
    15 spec:
    16 containers:
    17 - image: nginx:1.14.2
    18 imagePullPolicy: IfNotPresent
    19 name: nginx
    20 ports:
    21 - containerPort: 80
    22 volumeMounts:
    23 - mountPath: /mongodb-ops-manager/mongodb-releases/linux
    24 name: mongodb-versions
    25 - mountPath: /tools/db/
    26 name: mongodb-tools
    27 - name: nginx-conf
    28 mountPath: /etc/nginx/nginx.conf
    29 subPath: nginx.conf
    30 initContainers:
    31 - name: setting-up-rhel-mongodb
    32 image: curlimages/curl:latest
    33 command:
    34 - curl
    35 - -L
    36 - https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel80-6.0.1.tgz
    37 - -o
    38 - /mongodb-ops-manager/mongodb-releases/linux/mongodb-linux-x86_64-rhel80-6.0.1.tgz
    39 volumeMounts:
    40 - name: mongodb-versions
    41 mountPath: /mongodb-ops-manager/mongodb-releases/linux
    42 - name: setting-up-rhel-mongodb-tools
    43 image: curlimages/curl:latest
    44 command:
    45 - curl
    46 - -L
    47 - https://fastdl.mongodb.org/tools/db/mongodb-database-tools-rhel80-x86_64-100.6.0.tgz
    48 - -o
    49 - /tools/db/mongodb-database-tools-rhel80-x86_64-100.6.0.tgz
    50 volumeMounts:
    51 - name: mongodb-tools
    52 mountPath: /tools/db/
    53 restartPolicy: Always
    54 terminationGracePeriodSeconds: 30
    55 volumes:
    56 - name: mongodb-versions
    57 emptyDir: {}
    58 - name: mongodb-tools
    59 emptyDir: {}
    60 - configMap:
    61 name: nginx-conf
    62 name: nginx-conf
    63...
  2. 修改示例中突出显示的行以指定要安装的 MongoDB Server 版本。

    例如,要将 MongoDB 版本4.0.2替换为不同的数据库版本,请更新以下区块:

    - name: setting-up-rhel-mongodb
    image: curlimages/curl:latest
    command:
    - curl
    - -L
    - https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel80-6.0.1.tgz
    - -o
    - /mongodb-ops-manager/mongodb-releases/linux/mongodb-linux-x86_64-rhel80-6.0.1.tgz

    更新此区块以修改 MongoDB database Tools 版本:

    - name: setting-up-rhel-mongodb-tools
    image: curlimages/curl:latest
    command:
    - curl
    - -L
    - https://fastdl.mongodb.org/tools/db/mongodb-database-tools-rhel80-x86_64-100.6.0.tgz
    - -o
    - /tools/db/mongodb-database-tools-rhel80-x86_64-100.6.0.tgz
  3. 要加载多个版本,请附加curl命令

    到您希望 Nginx 提供服务的每个版本的相应 initContainer。

    例如,要配置 Nginx 来提供 MongoDB 6.0.1

    - name: setting-up-rhel-mongodb
    image: curlimages/curl:latest
    command:
    - curl
    - -L
    - https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel80-6.0.1.tgz
    - -o
    - /mongodb-ops-manager/mongodb-releases/linux/mongodb-linux-x86_64-rhel80-6.0.1.tgz
  4. .yaml 文件扩展名保存此文件。

  5. 通过对您创建的 Nginx 资源文件调用以下kubectl命令来部署 Nginx:

    kubectl apply -f <nginix>.yaml
  1. 将以下示例 Nginx 资源配置粘贴到文本编辑器中:

    1---
    2apiVersion: apps/v1
    3kind: Deployment
    4metadata:
    5 name: nginx-deployment
    6spec:
    7 replicas: 1
    8 selector:
    9 matchLabels:
    10 app: nginx
    11 template:
    12 metadata:
    13 labels:
    14 app: nginx
    15 spec:
    16 containers:
    17 - image: nginx:1.14.2
    18 imagePullPolicy: IfNotPresent
    19 name: nginx
    20 ports:
    21 - containerPort: 80
    22 volumeMounts:
    23 - mountPath: /mongodb-ops-manager/mongodb-releases/linux
    24 name: mongodb-versions
    25 - mountPath: /tools/db/
    26 name: mongodb-tools
    27 - name: nginx-conf
    28 mountPath: /etc/nginx/nginx.conf
    29 subPath: nginx.conf
    30 initContainers:
    31 - name: setting-up-rhel-mongodb
    32 image: curlimages/curl:latest
    33 command:
    34 - curl
    35 - -L
    36 - https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel<version>-4.2.0.tgz
    37 - -o
    38 - /mongodb-ops-manager/mongodb-releases/linux/mongodb-linux-x86_64-rhel<version>-4.2.0.tgz
    39 volumeMounts:
    40 - name: mongodb-versions
    41 mountPath: /mongodb-ops-manager/mongodb-releases/linux
    42 - name: setting-up-rhel-mongodb-tools
    43 image: curlimages/curl:latest
    44 command:
    45 - curl
    46 - -L
    47 - https://fastdl.mongodb.org/tools/db/mongodb-database-tools-rhel<version>-x86_64-100.1.0.tgz
    48 - -o
    49 - /tools/db/mongodb-database-tools-rhel<version>-x86_64-100.1.0.tgz
    50 volumeMounts:
    51 - name: mongodb-tools
    52 mountPath: /tools/db/
    53 restartPolicy: Always
    54 terminationGracePeriodSeconds: 30
    55 volumes:
    56 - name: mongodb-versions
    57 emptyDir: {}
    58 - name: mongodb-tools
    59 emptyDir: {}
    60 - configMap:
    61 name: nginx-conf
    62 name: nginx-conf
    63...
  2. 修改示例中突出显示的行以指定要安装的 MongoDB Server 版本。

    例如,要将 MongoDB 版本4.0.2替换为不同的数据库版本,请更新以下区块:

    - name: setting-up-rhel-mongodb
    image: curlimages/curl:latest
    command:
    - curl
    - -L
    - https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel<version>-4.2.0.tgz
    - -o
    - /mongodb-ops-manager/mongodb-releases/linux/mongodb-linux-x86_64-rhel<version>-4.2.0.tgz

    更新此区块以修改 MongoDB database Tools 版本:

    - name: setting-up-rhel-mongodb-tools
    image: curlimages/curl:latest
    command:
    - curl
    - -L
    - https://fastdl.mongodb.org/tools/db/mongodb-database-tools-rhel<version>-x86_64-100.1.0.tgz
    - -o
    - /tools/db/mongodb-database-tools-rhel<version>-x86_64-100.1.0.tgz
  3. 要加载多个版本,请将curl命令附加到您希望 Nginx 提供提供服务的每个版本的相应 initContainer 中。

    例如,要配置 Nginx 来提供 MongoDB 6.0.1

    - name: setting-up-rhel-mongodb
    image: curlimages/curl:latest
    command:
    - curl
    - -L
    - https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel80-6.0.1.tgz
    - -o
    - /mongodb-ops-manager/mongodb-releases/linux/mongodb-linux-x86_64-rhel80-6.0.1.tgz
  4. .yaml 文件扩展名保存此文件。

  5. 通过对您创建的 Nginx 资源文件调用以下oc命令来部署 Nginx:

    oc apply -f <nginix>.yaml
4

本教程中的服务通过端口80将 Nginx 暴露给来自 Kubernetes 集群中其他节点的流量。 这允许您使用 Kubernetes 操作符部署的 MongoDB database 资源 pods 从 Nginx 下载安装存档。

运行以下命令,为 Nginx 部署创建服务:

  1. 将以下示例服务粘贴到文本编辑器中:

    1---
    2apiVersion: v1
    3kind: Service
    4metadata:
    5 name: nginx-svc
    6 labels:
    7 app: nginx
    8spec:
    9 ports:
    10 - port: 80
    11 protocol: TCP
    12 selector:
    13 app: nginx
    14...
  2. .yaml 文件扩展名保存此文件。

  3. 通过对创建的服务文件调用以下kubectl命令来创建服务:

    kubectl apply -f <nginix-service>.yaml
5

突出显示的部分使用以下 Ops Manager 配置设置:

  • automation.versions.source: remotespec.configuration远程模式。

  • automation.versions.download.baseUrlspec.configuration中提供为 MongoDB 安装存档提供服务的 HTTP 资源的基本 URL。

    更新此行,将<namespace>替换为您使用 Kubernetes 操作符将资源部署到的命名空间。

  • automation.versions.download.baseUrl.allowOnlyAvailableBuilds: "false" spec.configuration中,以帮助确保企业版构建没有问题。

1---
2apiVersion: mongodb.com/v1
3kind: MongoDBOpsManager
4metadata:
5 name: ops-manager-localmode
6spec:
7 replicas: 1
8 version: "6.0.0"
9 adminCredentials: ops-manager-admin-secret
10 configuration:
11 # this enables remote mode in Ops Manager
12 automation.versions.source: remote
13 automation.versions.download.baseUrl: "http://nginx-svc.<namespace>.svc.cluster.local:8080"
14
15 backup:
16 enabled: false
17
18 applicationDatabase:
19 members: 3
20...
6

打开您首选的文本编辑器并粘贴 对象 规范到资源文件中的相应位置。

7
8

对 Ops Manager 资源定义的文件名调用以下kubectl命令:

kubectl apply -f <opsmgr-resource>.yaml
9

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

kubectl get om -o yaml -w

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

Ops Manager 资源完成Pending阶段后,该命令将返回类似于以下内容的输出:

1status:
2 applicationDatabase:
3 lastTransition: "2020-05-15T16:20:22Z"
4 members: 3
5 phase: Running
6 type: ReplicaSet
7 version: "4.4.5-ubi8"
8 backup:
9 phase: ""
10 opsManager:
11 lastTransition: "2020-05-15T16:20:26Z"
12 phase: Running
13 replicas: 1
14 url: http://ops-manager-localmode-svc.mongodb.svc.cluster.local:8080
15 version: "6.0.0"

复制status.opsManager.url字段的值,该字段说明资源的连接 URL 。 您可以在创建 ConfigMap 时使用此值 在此过程的稍后部分中。

10
  1. 如果尚未完成,请完成以下先决条件:

  2. 在部署 Ops Manager 的同一命名空间中部署MongoDB database 资源。确保您:

    1. 将资源的spec.opsManager.configMapRef.name与 ConfigMap 的metadata.name进行匹配。

    2. 将资源的spec.credentials与您创建的包含 Ops Manager 编程 API 密钥对的密钥名称进行匹配。

在使用MongoDB Agent Operator 创建的MongoDB数据库资源容器中运行的 MongoDB Kubernetes通过 Nginx 从MongoDB Ops Manager下载安装存档,而不是从互联网下载。