Implementando o MongoDB Enterprise Kubernetes Operator no Google Cloud
Avaliar este tutorial
Este artigo faz parte de uma série de três partes sobre a implantação do MongoDB em vários clusters Kubernetes usando os operadores.
- Implementando o MongoDB Enterprise Kubernetes Operator no Google Cloud
Implementar e gerenciar o MongoDB no Kubernetes pode ser uma tarefa difícil. Isso requer a criação e a configuração de vários recursos do Kubernetes, como volumes persistentes, serviços e implantações, o que pode consumir tempo e exigir uma compreensão profunda dos produtos Kubernetes e MongoDB. Além disso, tarefas como escalabilidade, backups e atualizações devem ser realizadas manualmente, o que pode ser complexo e propenso a erros. Isso pode afetar a confiabilidade e a disponibilidade da implantação do MongoDB e pode exigir intervenção manual frequente para mantê-la funcionando sem problemas. Além disso, pode ser difícil garantir que sua implementação do MongoDB esteja sendo executada no estado desejado e seja capaz de se recuperar automaticamente de falhas.
Felizmente, o MongoDB oferece operadores, que são extensões de software da API do Kubernetes que usam recursos personalizados para gerenciar aplicativos e seus componentes. O MongoDB Operator traduz o conhecimento humano de criar uma instância MongoDB em um método dimensionável, repetível e padronizado, e aproveita os recursos do Kubernetes para operar o MongoDB para você. Isso facilita a implementação e o gerenciamento do MongoDB no Kubernetes, fornecendo recursos e funcionalidades avançadas para executar o MongoDB em ambientes nativos da cloud.
Há três operadores principais do Kubernetes disponíveis para implantar e gerenciar o MongoDB de forma tranquila e eficiente em ambientes do Kubernetes:
- Operador de Kubernetes do MongoDB Community é um operador de código aberto que está disponível gratuitamente e pode ser usado para implantar e gerenciar o conjunto de réplicas do MongoDB em qualquer cluster Kubernetes. Ele fornece funcionalidade básica para implantar e gerenciar MongoDB , mas não inclui alguns dos recursos mais avançados disponíveis nos operadores Enterprise e Atlas .
- O MongoDB Enterprise Kubernetes Operator é um operador comercial do Kubernetes incluído na assinatura do MongoDB Enterprise . Ele permite que você implemente e gerencie facilmente qualquer tipo de implementação do MongoDB (autônomo, conjunto de réplicas, cluster fragmentado) no Kubernetes, fornecendo recursos e funcionalidades avançadas para implementar e gerenciar o MongoDB em ambientes nativos da nuvem.
- Operador do MongoDB Atlas Kubernetes é um operador disponível como parte do serviço Atlas . Ele permite implementar e gerenciar rapidamente o MongoDB na plataforma de nuvem do Atlas , fornecendo recursos como provisionamento e dimensionamento automáticos de clusters do MongoDB , integração com recursos e serviços do Atlas e backups e restaurações automáticos. Você pode saber mais sobre esse operador em nossa publicação no blog em sistema de aplicação no Kubernetes.
Este artigo se concentrará no Operador Empresarial. O MongoDB Enterprise Kubernetes Operator integra-se perfeitamente com outras funcionalidades e serviços do MongoDB Enterprise , como o MongoDB Ops Manager (que também pode ser executado no Kubernetes) e o MongoDB Cloud Manager. Isso permite que você monitore, faça backup, atualize e gerencie facilmente suas implementações do MongoDB a partir de um único local centralizado e fornece acesso a uma variedade de ferramentas e serviços para gerenciar, proteger e otimizar sua implementação.
O MongoDB Enterprise Kubernetes Operator automatiza o processo de criação e gerenciamento de instâncias do MongoDB de maneira escalável, repetível e padronizada. Ele usa a API e as ferramentas do Kubernetes para lidar com os eventos do ciclo de vida de um cluster MongoDB , incluindo o provisionamento de recursos de armazenamento e computação, configuração de conexões de rede, configuração de usuários e alterações nessas configurações conforme necessário. Isso ajuda a facilitar o trabalho de configurar e gerenciar manualmente aplicativos com estado, como bancos de dados, no ambiente Kubernetes.
Kubernetes CRDs (Definições de recursos personalizados) é um recurso do Kubernetes que permite aos usuários criar e gerenciar recursos personalizados em seus clusters do Kubernetes. Recursos personalizados são extensões da API do Kubernetes que permitem aos usuários definir seus próprios tipos de objeto e comportamentos associados. Com os CRDs, você pode criar recursos personalizados que se comportam como recursos integrados do Kubernetes, como StatefulSets, Implantações, Pods e Serviços, e gerenciá-los usando as mesmas ferramentas e interfaces. Isso permite que você estenda a funcionalidade do Kubernetes e adapte-a às suas necessidades e requisitos específicos.
O MongoDB Enterprise Operator fornece atualmente os seguintes recursos personalizados para implantar o MongoDB no Kubernetes:
- Autônomo
- ReplicaSet
- Cluster fragmentado

Para este tutorial, precisaremos das seguintes ferramentas:
Para começar, vamos criar um cluster Kubernetes em um novo projeto, projeto. Estaremos usando GKE Kubernetes. Uso este script para criar o cluster. O cluster terá quatro nós de trabalho e atuará como Ops Manager e MongoDB Enterprise Operators Kubernetes Cluster.
1 CLUSTER_NAME=master-operator 2 ZONE=us-south1-a 3 K8S_VERSION=1.23 4 MACHINE=n2-standard-2 5 gcloud container clusters create "${CLUSTER_NAME}" \ 6 --zone "${ZONE}" \ 7 --machine-type "${MACHINE}" --cluster-version="${K8S_VERSION}" \ 8 --disk-type=pd-standard --num-nodes 4
Agora que o cluster foi criado, precisamos obter as credenciais.
1 gcloud container clusters get-credentials "${CLUSTER_NAME}" \ 2 --zone "${ZONE}"
Exiba o cluster recém-criado.
1 gcloud container clusters list 2 3 NAME LOCATION MASTER_VERSION NUM_NODES STATUS 4 master-operator us-south1-a 1.23.14-gke.1800 4 RUNNING
1 kubectx
Você deverá ver seu cluster listado aqui. Certifique-se de que seu contexto esteja definido como cluster mestre.
1 kubectx $(kubectx | grep "master-operator" | awk '{print $1}')
Podemos iniciar a instalação do MongoDB Kubernetes Operator em nosso cluster Kubernetes recém-criado!
Podemos instalar o MongoDB Enterprise Operator com um comando Helm de linha única. O primeiro passo é adicionar o Charts do MongoDB Helm para Kubernetes repositório para o Helm.
1 helm repo add mongodb https://mongodb.github.io/helm-charts
Pretendo criar o operador em um namespace Kubernetes separado e dedicado (o operador usa
default
namespace por padrão). Isso me permitirá isolar o operador e quaisquer recursos que ele criar de outros recursos em meu cluster. O comando a seguir instalará os CRDs e o Operador Empresarial no mongodb-operator
namespace. O operador assistirá apenas ao mongodb-operator
namespace. Você pode ler mais sobre configurando o operador para observar mais namespaces na documentação oficial do MongoDB .Comece criando o
mongodb-operator
namespace.1 NAMESPACE=mongodb-operator 2 kubectl create ns "${NAMESPACE}"
Instale o MongoDB Kubernetes Operator e configure-o para observar apenas o
mongodb-operator
namespace.1 HELM_CHART_VERSION=1.16.3 2 helm install enterprise-operator mongodb/enterprise-operator \ 3 --namespace "${NAMESPACE}" \ 4 --version="${HELM_CHART_VERSION}" \ 5 --set operator.watchNamespace="${NAMESPACE}"
O namespace foi criado e o operador está em execução! Você pode ver isso listando os pods no namespace recém-criado.
1 kubectl get ns 2 3 NAME STATUS AGE 4 default Active 4m9s 5 kube-node-lease Active 4m11s 6 kube-public Active 4m12s 7 kube-system Active 4m12s 8 mongodb-operator Active 75s
1 kubectl get po -n "${NAMESPACE}" 2 3 NAME READY STATUS RESTARTS AGE 4 mongodb-enterprise-operator-649bbdddf5 1/1 Running 0 7m9s
Você pode ver que o gráfico do leme está sendo executado com esse comando.
1 helm list --namespace "${NAMESPACE}" 2 3 NAME NAMESPACE REVISION VERSION 4 enterprise-operator mongodb-operator 1 deployed enterprise-operator-1.17.2
Você pode verificar se a instalação foi bem-sucedida e está em execução com o seguinte comando.
1 helm get manifest enterprise-operator --namespace "${NAMESPACE}"
Vamos exibir as definições de recursos personalizados instaladas na etapa acima no namespace observado.
1 kubectl -n "${NAMESPACE}" get crd | grep -E '^(mongo|ops)' 2 3 mongodb.mongodb.com 2022-12-30T16:17:07Z 4 mongodbmulti.mongodb.com 2022-12-30T16:17:08Z 5 mongodbusers.mongodb.com 2022-12-30T16:17:09Z 6 opsmanagers.mongodb.com 2022-12-30T16:17:09Z
Todas as contas de serviço necessárias foram criadas no namespace monitorado.
1 kubectl -n "${NAMESPACE}" get sa | grep -E '^(mongo)' 2 3 mongodb-enterprise-appdb 1 36s 4 mongodb-enterprise-database-pods 1 36s 5 mongodb-enterprise-operator 1 36s 6 mongodb-enterprise-ops-manager 1 36s
Valide se o Operador Kubernetes foi instalado corretamente executando o seguinte comando e verifique a saída.
1 kubectl describe deployments mongodb-enterprise-operator -n \ 2 "${NAMESPACE}"
Finalmente, verifique novamente os namespaces assistidos.
1 kubectl describe deploy mongodb-enterprise-operator -n "${NAMESPACE}" | grep WATCH 2 3 WATCH_NAMESPACE: mongodb-operator
O MongoDB Enterprise Operator agora está em execução no seu cluster GKE.
vale a pena mencionar outro operador aqui --- um novo serviço que integra os recursos do Atlas com o seu cluster Kubernetes. O Atlas pode ser implantado em ambientes com várias nuvens, incluindo o GCP. O Atlas Kubernetes Operator permite que você implemente e gerencie aplicativos nativos da nuvem que exigem serviços de dados em um único plano de controle com integração segura de plataformas corporativas.
Esse operador é responsável por gerenciar recursos no Atlas usando recursos personalizados do Kubernetes, garantindo que as configurações de projetos, implementações de banco de dados e usuários de banco de dados no Atlas sejam consistentes entre si. O Atlas Kubernetes Operator utiliza o
AtlasProject
, AtlasDeployment
, e AtlasDatabaseUser
Recursos Personalizados que você cria no seu agrupamento do Kubernetes para gerenciar recursos no Atlas.Esses recursos personalizados permitem definir e configurar o estado desejado de seus projetos, sistemas de banco de dados e usuários de banco de dados no Atlas. Para saber mais, acesse nosso blog post em sistema de aplicação no Kubernetes com o MongoDB Atlas Operator.
Após a instalação bem-sucedida do Kubernetes Operator, podemos usar os recursos do MongoDB Enterprise Kubernetes Operator para executar objetos do MongoDB em nosso cluster Kubernetes. O Operador permite a fácil implementação dos seguintes aplicativos em clusters Kubernetes:
- MongoDB — conjuntos de réplicas, clusters fragmentados e standalone — com autenticação, TLS e muitas outras opções.
- Ops Manager — plataforma de gerenciamento empresarial, monitoramento e backup para o MongoDB. O Operador pode instalar e gerenciar o Ops Manager no Kubernetes para você. O Ops Manager pode gerenciar instâncias do MongoDB dentro e fora do Kubernetes. A instalação do Ops Manager é abordada no segundo artigo da série.
- MongoMulti — As implantações de vários clusters Kubernetes permitem adicionar instâncias do MongoDB em clusters globais que abrangem várias regiões geográficas para maior disponibilidade e distribuição global de dados. Isso é abordado na parte final desta série.
Quer ver o MongoDB Enterprise Kubernetes Operator em ação e descobrir todos os benefícios que ele pode trazer para sua implementação do Kubernetes? Continue lendo o próximo blog desta série e mostraremos como usar melhor o Operator para suas necessidades
Parte de uma série