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
/ /
/ / /

Configurar 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á implementando un recurso de Ops Manager en una implementación de MongoDB de un clúster de Kubernetes múltiple:

  • 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

  • Enruta solicitudes HTTP para recursos específicos a ubicaciones que sirven a los archivos de instalación de MongoDB Server y MongoDB Database Tools.

  1. Pegue el siguiente ejemplo de Nginx ConfigMap 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. Pegue el siguiente ejemplo de configuración de recursos 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

    Actualice 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. Pegue el siguiente ejemplo de configuración de recursos 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

    Actualice 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, agregue los 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 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. Pegue el siguiente servicio de ejemplo 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 para habilitar el modo spec.configuration remoto.

  • automation.versions.download.baseUrl en para proporcionar la URL base de los recursos HTTP que sirven a los archivos de instalación de spec.configuration 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

Abra su editor de texto preferido y pegue la especificación del objeto en la ubicación adecuada en su 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.

Una vez que el recurso Ops Manager completa la fase Pending, el comando devuelve un resultado similar al 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. Utilice este valor cuando cree un ConfigMap más adelante en el procedimiento.

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

  2. Implemente un recurso de base de datos MongoDB en el mismo espacio de nombres donde implementó Ops Manager. Asegúrese de lo siguiente:

    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.