Docs Menu
Docs Home
/ /
/ / /

Configurar un recurso de Ops Manager para usar el modo remoto

En una configuración predeterminada, los daemons de respaldo y del agente MongoDB acceden a los archivos 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 HTTP Nginx 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 kubectl comandos en el espacio de nombres 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:

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

  • Establezca --namespace en el mismo ámbito que utilizó para su implementación de MongoDB en un clúster de Kubernetes múltiple, como porkubectl config --namespace "mongodb" ejemplo:.

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

El ConfigMap en este tutorial configura Nginx para:

  • Ejecute un servidor HTTP llamado localhost que escuche en el puerto 80 en un nodo de su 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 una extensión de archivo .yaml.

  3. Cree el Nginx ConfigMap invocando el siguiente comando kubectl en el archivo ConfigMap que creó:

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

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

  • Implementa una réplica de Nginx,

  • Crea montajes de volumen para almacenar archivos de instalación de MongoDB Server y MongoDB Database Tools, y

  • Define contenedores de inicio que usan curl comandos para descargar los archivos de instalación que Nginx sirve a los recursos de base de datos MongoDB que implementa en su 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. Modifique las líneas resaltadas en el ejemplo para especificar las versiones de MongoDB Server que desea instalar.

    Por ejemplo, para reemplazar la versión 8.0.0 de MongoDB con una versión de base de datos diferente, actualice 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, agregue el comando curl

    al initContainer apropiado para cada versión que desea 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 una extensión de archivo .yaml.

  5. Implemente Nginx invocando el siguiente comando kubectl en el archivo de recursos Nginx que creó:

    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. Modifique las líneas resaltadas en el ejemplo para especificar las versiones de MongoDB Server que desea instalar.

    Por ejemplo, para reemplazar la versión 8.0.0 de MongoDB con una versión de base de datos diferente, actualice 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 una extensión de archivo .yaml.

  5. Implemente Nginx invocando el siguiente comando oc en el archivo de recursos Nginx que creó:

    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 en 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 una 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 las siguientes configuraciones 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 para ayudar a garantizar que las compilaciones empresariales no tengan spec.configuration 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 de archivo de la definición de recurso de Ops Manager:

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

Para comprobar el estado de su recurso Ops Manager, invoque 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. Haga coincidir el spec.opsManager.configMapRef.name del recurso con el metadata.name de su ConfigMap.

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

Los agentes de MongoDB que se ejecutan en contenedores de recursos de base de datos de MongoDB que usted crea con el operador de Kubernetes descargan los archivos de instalación desde Ops Manager a través de Nginx en lugar de hacerlo desde Internet.