Em uma configuração padrão, os MongoDB Agent e Backup Daemons acessam os arquivos de instalação do MongoDB pela Internet a partir da MongoDB, Inc.
Você pode configurar o MongoDB Ops Manager para ser executado no Modo Remoto para que os Daemons de Backup e os recursos gerenciados do MongoDB os arquivos de instalação somente do MongoDB Ops Manager, que envia solicitações de download para um ponto de extremidade HTTP em um servidor web local ou armazenamento compatível com S3implantado no cluster Kubernetes .
Pré-requisitos e considerações
Procedimento
O procedimento a seguir implementa um servidor HTTP Nginx em seu cluster Kubernetes para hospedar os arquivos de instalação do MongoDB .
Configure kubectl como padrão para seu namespace.
Caso ainda não tenha feito isso, execute o seguinte comando para executar todos os comandos kubectl no namespace que você criou.
Observação
Se você estiver implantando um recurso MongoDB Ops Manager em um sistema do MongoDB de vários clusters Kubernetes:
- Defina - contextcomo o nome do cluster de operadores, como:- kubectl config set context "$MDB_CENTRAL_CLUSTER_FULL_NAME".
- Defina - --namespacepara o mesmo escopo usado para sua implantação do MongoDB de vários clusters Kubernetes, como:- kubectl config --namespace "mongodb".
kubectl config set-context $(kubectl config current-context) --namespace=<metadata.namespace> 
Crie um ConfigMap para Nginx.
O ConfigMap neste tutorial configura o Nginx para:
- Execute um servidor HTTP chamado - localhostescutando na porta- 80em um nó no cluster do Kubernetes e
- Direcione solicitações HTTP para recursos específicos para locais que atendem aos arquivos de instalação do MongoDB Server e das Database Tools do MongoDB database. 
- Cole o seguinte exemplo Nginx ConfigMap em um editor de texto: - 1 - 2 - apiVersion: v1 - 3 - kind: ConfigMap - 4 - metadata: - 5 - name: nginx-conf - 6 - data: - 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 - ... 
- Salve este arquivo com uma extensão de arquivo - .yaml.
- Crie o Nginx ConfigMap invocando o seguinte comando - kubectlno arquivo ConfigMap que você criou:- kubectl apply -f <nginix-configmap>.yaml 
Implemente o Nginx em seu cluster Kubernetes.
A configuração do recurso Nginx neste tutorial:
- Implementa uma réplica Nginx, 
- Cria montagens de volume para armazenar arquivos de instalação do MongoDB Server e das MongoDB database Tools, e 
- Define contêineres de inicialização que usam comandos - curlpara baixar os arquivos de instalação que o Nginx fornece aos recursos do banco de dados MongoDB que você implanta no cluster Kubernetes.
- Cole o seguinte exemplo de configuração de recurso Nginx em um editor de texto: - 1 - 2 - apiVersion: apps/v1 - 3 - kind: Deployment - 4 - metadata: - 5 - name: nginx-deployment - 6 - spec: - 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 - ... 
- Modifique as linhas destacadas no exemplo para especificar as versões do MongoDB Server que você deseja instalar. - Por exemplo, para substituir a versão - 4.0.2do MongoDB por uma versão de reconhecimento de data center diferente, atualize o seguinte bloco:- - 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 - Atualize este bloco para modificar a versão do 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 
- Para carregar várias versões, anexe comandos curl
- para o initContailer apropriado para cada versão que você deseja que o Nginx atenda. - Por exemplo, para configurar o Nginx para atender ao 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 
 
- Para carregar várias versões, anexe comandos 
- Salve este arquivo com uma extensão de arquivo - .yaml.
- Implemente o Nginx invocando o seguinte comando - kubectlno arquivo de recurso do Nginx que você criou:- kubectl apply -f <nginix>.yaml 
- Cole o seguinte exemplo de configuração de recurso Nginx em um editor de texto: - 1 - 2 - apiVersion: apps/v1 - 3 - kind: Deployment - 4 - metadata: - 5 - name: nginx-deployment - 6 - spec: - 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 - ... 
- Modifique as linhas destacadas no exemplo para especificar as versões do MongoDB Server que você deseja instalar. - Por exemplo, para substituir a versão - 4.0.2do MongoDB por uma versão de reconhecimento de data center diferente, atualize o seguinte bloco:- - 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 - Atualize este bloco para modificar a versão do 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 
- Para carregar várias versões, acrescente comandos - curlao initContainer apropriado para cada versão que você deseja que o Nginx forneça.- Por exemplo, para configurar o Nginx para atender ao 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 
- Salve este arquivo com uma extensão de arquivo - .yaml.
- Implemente o Nginx invocando o seguinte comando - ocno arquivo de recurso do Nginx que você criou:- oc apply -f <nginix>.yaml 
Crie um serviço Kubernetes para tornar o Nginx acessível a partir de outros pods no seu cluster.
O serviço neste tutorial expõe o Nginx ao tráfego de outros nós em seu cluster Kubernetes pela porta 80. Isso permite que os pods de recursos do MongoDB database que você implementa usando o Kubernetes Operator baixem os arquivos de instalação do Nginx.
Execute o seguinte comando para criar um serviço para sua implantação do Nginx:
- Cole o seguinte serviço de exemplo em um editor de texto: - 1 - 2 - apiVersion: v1 - 3 - kind: Service - 4 - metadata: - 5 - name: nginx-svc - 6 - labels: - 7 - app: nginx - 8 - spec: - 9 - ports: - 10 - - port: 80 - 11 - protocol: TCP - 12 - selector: - 13 - app: nginx - 14 - ... 
- Salve este arquivo com uma extensão de arquivo - .yaml.
- Crie o serviço invocando o seguinte comando - kubectlno arquivo de serviço que você criou:- kubectl apply -f <nginix-service>.yaml 
Copie e atualize os campos destacados deste recurso do Ops Manager.
A seção destacada usa as seguintes definições de configuração do Ops Manager:
- automation.versions.source: remoteem- spec.configurationpara habilitar o modo remoto.
- automation.versions.download.baseUrlem- spec.configurationpara fornecer a URL base dos recursos HTTP que atendem aos arquivos de instalação do MongoDB.- Atualize esta linha para substituir - <namespace>pelo namespace para o qual você distribui recursos com o Operador Kubernetes.
- automation.versions.download.baseUrl.allowOnlyAvailableBuilds: "false"em- spec.configurationpara ajudar a garantir que as compilações corporativas não tenham problemas.
1 2 apiVersion: mongodb.com/v1 3 kind: MongoDBOpsManager 4 metadata: 5  name: ops-manager-localmode 6 spec: 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 ... 
Cole a seção de exemplo copiada em seu recurso existente do Ops Manager.
Abra o editor de texto de sua preferência e cole a especificação do objeto no local apropriado do arquivo de recurso.
Monitore o status da sua instância do Ops Manager.
Para verificar o status do recurso do Ops Manager, invoque o seguinte comando:
kubectl get om -o yaml -w 
Consulte Solucionar problemas do operador Kubernetes para obter informações sobre os status de distribuição de recursos.
Após o recurso do Ops Manager concluir a fase Pending , o comando retorna uma saída semelhante ao seguinte:
1 status: 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" 
Copie o valor do campo status.opsManager.url, que declara oURL de conexão do recurso. Você usa esse valor ao criar um ConfigMap mais tarde no procedimento.
Implemente um Recurso de Banco de MongoDB database .
- Se você ainda não tiver feito isso, conclua os seguintes pré-requisitos: 
- Implante um MongoDB database no mesmo namespace para o qual você distribuiu o Ops Manager. Certifique-se de que você: - Combine o - spec.opsManager.configMapRef.namedo recurso ao- metadata.namedo seu ConfigMap.
- Combine o - spec.credentialsdo recurso com o nome do segredo que você criou que contém um par de chaves de API programática do Ops Manager.
 
MongoDB Agent MongoDB Os contêineres de recursos de banco de dados de dados que você cria com o Kubernetes Operator os arquivos de instalação do MongoDB Ops Manager via Nginx em vez da Internet.