Implantações de aplicativos no Kubernetes podem ser desafiadoras, especialmente para aplicativos stateful como o MongoDB em um cluster Kubernetes. Como facilitar o processo de implantação? Permita que o Operador Kubernetes do MongoDB implante automaticamente e gerencie aplicativos stateful em seu cluster Kubernetes.
Neste tutorial, você aprenderá como implantar o MongoDB no Kubernetes usando o Operador Kubernetes do MongoDB.
Continue lendo e comece a automatizar suas implantações no Kubernetes!
Pré-requisitos
Este tutorial será uma demonstração prática. Para acompanhar, certifique-se de atender aos seguintes requisitos:
- A Kubernetes cluster – This demo uses the Kubernetes cluster v1.23.
- Kubectl instalado na máquina local.
- MongoDB Compass instalado na máquina local.
- Git instalado em sua máquina.
- jq, o analisador JSON, instalado na máquina local.
Criando Namespace para MongoDB
Ao implantar aplicativos no Kubernetes, criar um namespace específico para seus projetos é sempre recomendado.
Os namespaces facilitam a administração de recursos do Kubernetes para os administradores e evitam colisões de nomes. Ao mesmo tempo, criar namespaces previne o uso incorreto de recursos no ambiente do Kubernetes.
Abra seu terminal e execute o comando kubectl create
abaixo para criar um novo namespace (ns
) chamado mongodb
em seu cluster Kubernetes.
Agora execute o comando abaixo kubectl get
para verificar a lista de namespaces em seu cluster Kubernetes.
Você verá um novo namespace chamado mongodb disponível em seu cluster, conforme mostrado abaixo.

Download do Operador Kubernetes MongoDB
Depois de criar um espaço de nomes, é hora de baixar o MongoDB Kubernetes Operator. O MongoDB Kubernetes Operator é um conjunto de operadores Kubernetes. Esses operadores Kubernetes oferecem implantação, configuração e gerenciamento automáticos do MongoDB Community no ambiente Kubernetes.
Execute o comando git
abaixo para clonar
o projeto MongoDB Kubernetes Operator em sua máquina local.
Agora, execute cada comando abaixo para mudar seu diretório de trabalho atual para mongodb-kubernetes-operator
e listar (ls
) todos os arquivos e diretórios disponíveis.
Você verá um subdiretório chamado config dentro do diretório do projeto ~/mongodb-kubernetes-operator, conforme mostrado abaixo. O subdiretório config contém exemplos de arquivos YAML para implantar o MongoDB no Kubernetes.

Implantando o MongoDB Operator
Agora que seu espaço de nomes personalizado e o MongoDB Kubernetes Operator estão configurados, você está pronto para implantar o MongoDB Operator em seu cluster Kubernetes. Como? Você usará a configuração dentro do diretório config.
O MongoDB Operator cuida do ciclo de vida da implantação do seu MongoDB no cluster Kubernetes. O operador criará, gerenciará e dimensionará automaticamente o estado da sua implantação do MongoDB.
Para implantar o operador MongoDB, você deve criar uma Definição de Recursos Personalizados (CRD) do Kubernetes e o controlador. O CRD do Kubernetes é extensível à API do Kubernetes, permitindo que você crie recursos personalizados no Kubernetes.
1. Execute o comando kubectl apply
abaixo para criar um novo CRD do Kubernetes para a implantação do MongoDB.
O operador Kubernetes substitui toda interação humana para implantar uma aplicação no Kubernetes. O operador é um controlador de pod que implanta e gerencia automaticamente sua aplicação stateful no Kubernetes.

2. Em seguida, execute o seguinte comando kubectl get
para verificar a lista de crd
disponíveis no seu Kubernetes.
Abaixo, você pode ver o CRD com o nome mongodbcommunity.mongodbcommunity.mongodb.org.

3. Execute o comando abaixo para criar um novo Controle de Acesso Baseado em Função (RBAC) personalizado para o Operador MongoDB e especifique a implementação do RBAC para o namespace mongodb.
Este comando cria um novo papel, vinculação de funções e conta de serviço para o operador MongoDB, que são permissões personalizadas em seu cluster Kubernetes. Essas permissões personalizadas são necessárias para implantar e gerenciar automaticamente o MongoDB.

4. Agora, execute cada comando kubectl
abaixo para verificar o papel, a vinculação de funções e a conta de serviço para o operador MongoDB.
A saída abaixo mostra que o papel, a vinculação de funções e a conta de serviço mongodb-kubernetes-operator são criados no namespace mongodb.

5. Após a verificação, execute o comando kubectl
abaixo para implantar o Operador MongoDB no namespace mongodb
.
Este comando cria um novo pod (mongodb-kubernetes-operator) com a imagem base do Docker (quay.io/mongodb/mongodb-kubernetes-operator). Este pod atuará como o controlador para implantar automaticamente os conjuntos de réplicas do MongoDB no cluster Kubernetes.
Abaixo, você pode ver que a implantação do operador MongoDB foi criada, mas o pod ainda está inicializando.

6. Por fim, execute os seguintes comandos para verificar a implantação e os pods no namespace mongodb
.
Como você pode ver abaixo, o pod do Operador MongoDB está em execução.

**Implantando ReplicaSet do MongoDB no Kubernetes
**
Após a implantação do seu MongoDB, você implantará o ReplicaSet no seu Kubernetes para fornecer alta disponibilidade e redundância para a sua implantação do MongoDB. Você não gostaria de ter tempo de inatividade na sua implantação.
A implantação do MongoDB ReplicaSets usando o Operador Kubernetes do MongoDB é segura por padrão, utilizando a autenticação SCRAM para usuários. Ao mesmo tempo, você pode utilizar uma conexão segura TLS para conexões de usuários e aplicativos e expor métricas do Prometheus para monitorar recursos.
Relacionado: Iniciando com o Monitoramento de Cluster Kubernetes do Grafana & Prometheus
Dentro do diretório config/samples/, você verá vários exemplos de arquivos YAML para a implantação do ReplicaSet. Cada arquivo pode ser usado em cenários de implantação diferentes, mas o arquivo padrão de implantação do ReplicaSet é mongodb.com_v1_mongodbcommunity_cr.yaml.
1. Edite o arquivo YAML para a sua implantação usando o seu editor preferido. Neste exemplo, estamos usando o arquivo /mongodb.com_v1_hostpath.yaml para implantação local. Este arquivo YAML está localizado no diretório config/samples/arbitrary_statefulset_configuration/.
Se estiver a implementar o Operador do MongoDB Kubernetes nos serviços de nuvem, como GKE e AKS, utilize o ficheiro YAML mongodb.com_v1_mongodbcommunity_cr.yaml. Mas se estiver a implementar localmente dentro do Kind ou Minikube, pode utilizar o ficheiro YAML personalizado (arbitrary_statefulset_configuration/mongodb.com_v1_hostpath.yaml), que cria automaticamente PV e PVC personalizados para os pods do MongoDB ReplicaSet.
Em seguida, altere o número (membros) dos ReplicaSets que pretende implementar, dependendo do seu ambiente, mas o valor predefinido é 3. Para este tutorial, o número de ReplicaSets está definido como 2.
Substitua <your-password-here> pelo seu password forte. Utilizará este password para iniciar sessão na base de dados do MongoDB e, por predefinição, utilizará a autenticação SCRAM.
Guarde as alterações e feche o editor quando estiver satisfeito com a password.
2. A seguir, execute o comando kubectl
abaixo para implementar (apply
) o MongoDB ReplicaSet utilizando o mongodb.com_v1_hostpath.yaml
no namespace mongodb.
Este comando cria o seguinte:
- A new custom resource (MongoDBCommunity) with the name mdb0 under the
mongodbcommunity.mongodb.com/v1
CRD
- Segredos do Kubernetes para armazenar as passwords de utilizador do MongoDB. Ao mesmo tempo, alguns PVs e PVCs com o tipo
hostPath
para o conjunto de réplicas do MongoDB.
A implantação levará algum tempo, dependendo do tamanho dos ReplicaSets a serem criados e do próprio cluster do Kubernetes.

3. Após a implantação, execute cada comando abaixo para verificar os recursos personalizados e os pods no namespace mongodb
.
A saída abaixo mostra o seguinte:
- O recurso personalizado MongoDBCommunity com o nome mdb0 está em execução com o MongoDB v4.4.0.
- Os dois pods do ReplicaSet MongoDB estão em execução com os nomes mdb0-0 e mdb0-1. Cada pod contém dois contêineres diferentes, o mongod, e o contêiner mongodb-agent.

4. Por último, execute outro comando kubectl
abaixo para verificar o pv
e o pvc
no namespace mongodb
.
A saída abaixo mostra alguns pv e pvc usados pelos pods do ReplicaSet do MongoDB.

Criando um Novo Usuário e Banco de Dados para a Implantação do MongoDB
Você concluiu a implantação do operador MongoDB e dos ReplicaSets em seu cluster Kubernetes neste ponto. O próximo passo é criar um novo banco de dados MongoDB e usuário para sua aplicação.
Você criará um novo segredo do Kubernetes para o novo usuário, editará o recurso personalizado da implantação do ReplicaSet e atualizará o ReplicaSet para seu cluster.
1. Crie um novo arquivo YAML usando o seu editor preferido e preencha o seguinte segredo do Kubernetes. Você pode nomear o arquivo YAML como desejar, mas o arquivo é nomeado new-user.yaml neste tutorial.
Este arquivo YAML cria um novo segredo do Kubernetes com o nome myappdata e a senha myapppassword.
2. Em seguida, execute o comando kubectl
abaixo para executar a configuração new-user.yaml
.
Este comando cria e aplica (apply) um novo segredo do Kubernetes ao seu cluster e aplica este segredo ao namespace mongodb.

3. Edite o arquivo YAML da configuração do ReplicaSet CRD (mongodb.com_v1_hostpath.yaml) no diretório config/samples/arbitrary_statefulset_configuration
Adicione a seguinte configuração ao arquivo mongodb.com_v1_hostpath.yaml , que cria o banco de dados e o usuário para o MongoDB.
Certifique-se de substituir scram-secret-myapp pelas suas próprias credenciais scram, salve as alterações no arquivo e feche o editor.
4. Agora, execute o comando abaixo para aplicar
as novas alterações feitas no arquivo mongodb.com_v1_hostpath.yaml
no passo três.

5. Por último, execute cada comando abaixo para gerar as conexões detalhadas do MongoDB para sua aplicação. Esses comandos geram a conexão detalhada do MongoDB para suas aplicações em saída JSON e analisam a saída usando o comando de linha jq
.
Substitua mdb0-admin-mongoadmin pelos detalhes do seu ambiente conforme segue:
mdb0
– O nome de metadados dos recursos do MongoDB.
admin
– O banco de dados para autenticação.
mongoadmin
– O usuário que você usará para autenticação
A saída abaixo mostra que você pode se conectar ao MongoDB usando as conexões padrão e padrãoSrv. Você também verá o nome de usuário e senha do seu deployment do MongoDB.

Conectando ao Deployment do MongoDB
Você concluiu a implantação do MongoDB no cluster Kubernetes usando o operador Kubernetes do MongoDB. Mas como você sabe se a implantação funciona? Você verificará a conexão do banco de dados e do usuário de sua máquina local com o MongoDB dentro do cluster Kubernetes.
Para verificar a conexão com sua implantação do MongoDB, você usará o encaminhamento de porta. O encaminhamento de porta no Kubernetes permite que você crie uma porta de encaminhamento de qualquer serviço do Kubernetes para sua porta local.
1. Execute o comando kubectl
abaixo para obter
a lista de serviços (svc
) no namespace mongodb
.
Abaixo, você verá o serviço chamado mdb0-svc, que expõe a porta 27017 (porta padrão do MongoDB).

2. Em seguida, execute o comando abaixo para criar um encaminhamento de porta para o cluster Kubernetes.
Este comando cria um novo encaminhamento de porta no serviço Kubernetes (mdb0-svc) e encaminha a porta local 27017 para a porta do serviço Kubernetes 27017.

3. Finalmente, abra o aplicativo MongoDB Compass em sua máquina local, adicione uma nova conexão com o seguinte formato e clique em Conectar para se conectar ao MongoDB.
Substitua o campo de nome de usuário e senha pelo seu usuário e senha do MongoDB.


Quando a conexão for bem-sucedida, você verá a seguinte janela que confirma que o deployment do MongoDB para o Kubernetes está funcionando corretamente.
Para o usuário mongoadmin, você verá bancos de dados padrão (local, config e admin).

Para o appuser, você verá apenas um banco de dados de privilégios chamado appdb1.

Conclusão
Ao longo deste tutorial, você aprendeu como implantar o MongoDB no cluster Kubernetes usando o Operador Kubernetes do MongoDB. Você também aprendeu sobre o uso básico do operador Kubernetes. E até agora, você já tem um conhecimento sólido sobre a implantação e gerenciamento automático de aplicativos no Kubernetes.
Por que não configurar uma conexão TLS em sua implantação do MongoDB para construir com base nesse conhecimento recém-adquirido? A conexão TLS garante a segurança das conexões entre conjuntos de réplicas e protege as conexões de clientes ou aplicativos com o MongoDB.