Implementando o MongoDB Enterprise Kubernetes Operator no Google Cloud
Avalie esse 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:
- O MongoDB Community Kubernetes Operator é um operador de código aberto que está disponível gratuitamente e pode ser usado para implantar e gerenciar o MongoDB Replica Set 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 sistema do MongoDB (standalone, conjunto de réplicas, cluster fragmentado) no Kubernetes, fornecendo recursos e funcionalidades avançadas para implantar e gerenciar o MongoDB em ambientes nativos da cloud.
- O MongoDB Atlas Kubernetes Operator é 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 nosso blog post sobre implantação de aplicativos no Kubernetes.
Este artigo se concentrará no Operador Empresarial. O MongoDB Enterprise Kubernetes Operator se integra perfeitamente a outros recursos 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.
CRDs do Kubernetes (definições de recursos personalizados) é um recurso no Kubernetes que permite aos usuários criar e gerenciar recursos personalizados em seus clusters do Kubernetes. Os 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. Iremos utilizar 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. A primeira etapa é adicionar o repositórioMongoDB Helm Charts for Kubernetes ao 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 o namespace
default
por padrão). Isso me permitirá isolar o operador e quaisquer recursos que ele criar de outros recursos em meu cluster. O seguinte comando instalará os CRDs e o Operador Enterprise no namespace domongodb-operator
. O operador assistirá apenas ao namespacemongodb-operator
. Você pode ler mais sobre como configurar o operador para observar mais namespaces na documentação oficial do MongoDB.Comece criando o namespace
mongodb-operator
.1 NAMESPACE=mongodb-operator 2 kubectl create ns "${NAMESPACE}"
Instale o MongoDB Kubernetes Operator e configure-o para observar apenas o namespace
mongodb-operator
.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 os recursos personalizados
AtlasProject
, AtlasDeployment
e AtlasDatabaseUser
que você cria em seu cluster do Kubernetes para gerenciar recursos no Atlas.Esses recursos personalizados permitem definir e configurar o estado desejado dos seus projetos, sistemas de banco de dados e usuários de banco de dados no Atlas. Para saber mais, acesse nossa publicação no blog sobre implementação de aplicativos 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.
- MongoDB Ops Manager — plataforma de gerenciamento empresarial, monitoramento e backup para o MongoDB. O Operador pode instalar e gerenciar o MongoDB Ops Manager no Kubernetes para você. O MongoDB Ops Manager pode gerenciar instâncias do MongoDB dentro e fora Kubernetes. A instalação do MongoDB 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 utilizar melhor o Operator para suas necessidades
{Parte de uma série