Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
/ / /

Configure un recurso de Ops Manager para usar el modo remoto

En una configuración predeterminada, el agente de MongoDB y los daemons de copias de seguridad acceden a los ficheros de instalación de MongoDB a través de Internet desde MongoDB, Inc.

Puedes configurar Ops Manager para ejecutar en Modo remoto para que los daemon de copias de seguridad y los recursos gestionados de MongoDB descarguen los ficheros de instalación solo desde Ops Manager, que actúa como proxy para las solicitudes de descarga a un endpoint HTTP en un servidor web local o en un almacén compatible con S3implementada en tu clúster de Kubernetes.

Implementa un recurso de Ops Manager.

El siguiente procedimiento implementa un servidor Nginx HTTP en su clúster de Kubernetes para alojar los archivos de instalación de MongoDB.

1

Si aún no lo ha hecho, ejecute el siguiente comando para ejecutar todos los comandos de kubectl en el namespace que creó.

Nota

Si estás implementando un recurso de Ops Manager en una implementación de MongoDB multidispositivo en clústeres de Kubernetes:

  • Defina context como el nombre del clúster operador, por ejemplo: kubectl config set context "$MDB_CENTRAL_CLUSTER_FULL_NAME".

  • Establece el --namespace en el mismo ámbito que utilizaste para tu implementación de MongoDB de clústeres multi-Kubernetes, como por ejemplo: kubectl config --namespace "mongodb".

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

El ConfigMap en este tutorial configura Nginx para:

  • Ejecuta un servidor HTTP llamado localhost escuchando en el puerto 80 en un nodo de tu clúster de Kubernetes, y

  • Redirige solicitudes HTTP para recursos específicos a ubicaciones que sirvan los ficheros de instalación de MongoDB Server y de Database Tools.

  1. Pega el siguiente ConfigMap de ejemplo de Nginx en un editor de texto:

    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. Guarde este archivo con la extensión de archivo .yaml.

  3. Cree el ConfigMap de Nginx ejecutando el siguiente comando kubectl sobre el archivo ConfigMap que creó:

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

La configuración de recursos de Nginx en este tutorial:

  • Despliega una réplica de Nginx,

  • Crea puntos de montaje de volúmenes para almacenar los ficheros de instalación de MongoDB Server y MongoDB Database Tools, y

  • Define contenedores init que utilizan comandos curl para descargar los ficheros de instalación que Nginx sirve a los recursos de base de datos de MongoDB que implementas en tu clúster de Kubernetes.

  1. Pega la siguiente configuración de recursos de ejemplo de Nginx en un editor de texto:

    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-8.0.0.tgz
    37 - -o
    38 - /mongodb-ops-manager/mongodb-releases/linux/mongodb-linux-x86_64-rhel80-8.0.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-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. Modifica las líneas resaltadas en el ejemplo para especificar las versiones del MongoDB Server que deseas instalar.

    Por ejemplo, para reemplazar la version de MongoDB 8.0.0 con una diferente version de base de datos, actualiza el siguiente bloque:

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

    Actualiza este bloque para modificar la versión de 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. Para cargar varias versiones, agrega comandos curl

    al initContainer apropiado para cada versión que desee que Nginx sirva.

    Por ejemplo, para configurar Nginx para servir MongoDB 8.0.0:

    - name: setting-up-rhel-mongodb
    image: curlimages/curl:latest
    command:
    - curl
    - -L
    - https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel80-8.0.0.tgz
    - -o
    - /mongodb-ops-manager/mongodb-releases/linux/mongodb-linux-x86_64-rhel80-8.0.0.tgz
  4. Guarde este archivo con la extensión de archivo .yaml.

  5. Impleméntalo en Nginx invocando el siguiente comando kubectl en el archivo de recursos de Nginx que creaste:

    kubectl apply -f <nginix>.yaml
  1. Pega la siguiente configuración de recursos de ejemplo de Nginx en un editor de texto:

    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>-8.0.0.tgz
    37 - -o
    38 - /mongodb-ops-manager/mongodb-releases/linux/mongodb-linux-x86_64-rhel<version>-8.0.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. Modifica las líneas resaltadas en el ejemplo para especificar las versiones del MongoDB Server que deseas instalar.

    Por ejemplo, para reemplazar la version de MongoDB 8.0.0 con una diferente version de base de datos, actualiza el siguiente bloque:

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

    Actualiza este bloque para modificar la versión de 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. Para cargar varias versiones, añade los comandos curl al initContainer correspondiente para cada versión que quieras que Nginx sirva.

    Por ejemplo, para configurar Nginx para servir MongoDB 8.0.0:

    - name: setting-up-rhel-mongodb
    image: curlimages/curl:latest
    command:
    - curl
    - -L
    - https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel80-8.0.0.tgz
    - -o
    - /mongodb-ops-manager/mongodb-releases/linux/mongodb-linux-x86_64-rhel80-8.0.0.tgz
  4. Guarde este archivo con la extensión de archivo .yaml.

  5. Impleméntalo en Nginx invocando el siguiente comando oc en el archivo de recursos de Nginx que creaste:

    oc apply -f <nginix>.yaml
4

El servicio en este tutorial expone Nginx al tráfico de otros nodos de tu clúster de Kubernetes a través del puerto 80. Esto permite que los pods de recursos de la base de datos de MongoDB que implementas usando el operador de Kubernetes descarguen los ficheros de instalación desde Nginx.

Ejecute el siguiente comando para crear un servicio para su implementación de Nginx:

  1. Pega el siguiente ejemplo de servicio en un editor de texto:

    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. Guarde este archivo con la extensión de archivo .yaml.

  3. Cree el servicio invocando el siguiente comando kubectl en el archivo de servicio que creó:

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

La sección resaltada utiliza la siguiente configuración de Ops Manager:

  • automation.versions.source: remote en spec.configuration para habilitar el Modo Remoto.

  • automation.versions.download.baseUrl en spec.configuration para proporcionar la URL base de los recursos HTTP que sirven los ficheros de instalación de MongoDB.

    Actualiza esta línea para reemplazar <namespace> con el namespace en el que implementas recursos con el Operador Kubernetes.

  • automation.versions.download.baseUrl.allowOnlyAvailableBuilds: "false" en spec.configuration para ayudar a garantizar que las versiones empresariales no tengan problemas.

1---
2apiVersion: mongodb.com/v1
3kind: MongoDBOpsManager
4metadata:
5 name: ops-manager-localmode
6spec:
7 replicas: 1
8 version: "8.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

Abre el editor de texto de tu preferencia y pega la especificación objeto en la ubicación correspondiente de tu archivo de recursos.

7
8

Invoque el siguiente comando kubectl en el nombre del archivo de la definición de recurso de Ops Manager:

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

Para comprobar el estado de tu recurso Ops Manager, ejecuta el siguiente comando:

kubectl get om -o yaml -w

Consulte Solucionar problemas del operador de Kubernetes para obtener información sobre los estados de implementación de recursos.

Después de que el recurso Ops Manager complete la fase Pending, el comando devuelve una salida similar a la siguiente:

1status:
2 applicationDatabase:
3 lastTransition: "2020-05-15T16:20:22Z"
4 members: 3
5 phase: Running
6 type: ReplicaSet
7 version: "8.0.0-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: "8.0.0"

Copia el valor del campo status.opsManager.url, que indica la conexión del recurso URL. Usa este valor cuando cree un ConfigMap más adelante en el procedimiento.

10
  1. Si aún no lo has hecho, completa los siguientes requisitos previos:

  2. Implemente un recurso de base de datos de MongoDB en el mismo namespace en el que implementó Ops Manager. Asegúrate de:

    1. Haz coincidir el spec.opsManager.configMapRef.name del recurso con el metadata.name de tu ConfigMap.

    2. Haga coincidir el spec.credentials del recurso con el nombre del secreto que creó que contiene un par de claves API programáticas de Ops Manager.

Los agentes de MongoDB que se ejecutan en contenedores de recursos de bases de datos de MongoDB que crea con el Operador Kubernetes descargan los ficheros de instalación desde Ops Manager a través de Nginx en lugar de desde Internet.