Como implementar o MongoDB Atlas com o Atlas Kubernetes Operator
Rutuja Rajwade6 min read • Published Jul 30, 2024 • Updated Jul 30, 2024
APLICATIVO COMPLETO
Avalie esse Tutorial
Kubernetes, uma ferramenta de orquestração de contêineres, permite que os desenvolvedores automatizem a implantação, o escalonamento e o gerenciamento de seus aplicativos em contêineres. O Kubernetes é popular entre os desenvolvedores por seus benefícios de segurança e pelo fato de vir em muitos sabores diferentes, incluindo EKS da AWS, AKS do Microsoft Azure e GKE do Google Cloud. O MongoDB Atlas permite que os desenvolvedores integrem perfeitamente o Atlas em seu pipeline de implantação atual do Kubernetes por meio de nosso MongoDB Atlas Kubernetes Operator.
O Atlas Kubernetes Operator permite que os clientes que usam o Kubernetes criem e gerenciem recursos do Atlas em uma das nuvens públicas compatíveis com exatamente as mesmas ferramentas e processos que usam para seus serviços existentes no Kubernetes. O operador trabalha estendendo a API do Kubernetes para oferecer suporte a recursos personalizados, permitindo aos desenvolvedores gerenciar recursos do MongoDB como objetos nativos do Kubernetes, mesmo que o Atlas esteja sendo executado fora do cluster. Os desenvolvedores podem criar e aplicar recursos personalizados no Kubernetes para definir a configuração do Atlas, e o Atlas Kubernetes Operator automatiza a aplicação dessa configuração por meio da API de administração do Atlas.
Há muitas maneiras de começar a usar o Atlas Kubernetes Operator, como por meio do MongoDB Atlas CLI ou por meio de um Helm Chart. Este tutorial orientará você sobre como começar a usar o início rápidodo Atlas Kubernetes Operator. Vamos começar!
- Uma conta do MongoDB Atlas
- Um cluster Kubernetes em execução com nós que executam processadores com a arquitetura x86-64, AMD64 ou ARM64 - você pode usar alguns como o Minikube para testar com
Primeiro, você precisará instalar o operador em um cluster Kubernetes em execução. Certifique-se de que ele esteja executando processadores com a arquitetura x86-64, AMD64 ou ARM64 . Neste exemplo, estamos executando um cluster Kubernetes usando Minikube e Docker, e usando o Kubectl para aplicar comandos.
Depois de fazer login na sua conta Atlas, você primeiro criará chaves de API para uso pelo operador.
No canto superior esquerdo, clique no menu suspenso “Access Manager” e na guia Chaves de API. Clique em “Create API Key.”
Observação: se quiser que o Atlas Kubernetes Operator crie um novo projeto do Atlas para trabalhar, você precisará criar e usar as chaves de API de uma organização. Para um projeto existente, você precisará criá-los para um projeto. Para este exemplo, criaremos um novo projeto Atlas. Para qualquer tipo de projeto, é prática recomendada configurar uma lista de acesso de API.
Aqui, você inserirá um nome para suas chaves de API (por exemplo, AKO/Chaves de pesquisa vetorial) e selecionará a função da organização. Você deve atribuir à chave de API a função de organização Criador de projeto da organização ou superior.
A partir daí, você encontrará um conjunto de chaves de API exclusivas geradas para você. Certifique-se de salvá-los em algum lugar seguro. Depois de sair desta página, você não poderá recuperá-la!
Em seguida, instalaremos o operador no cluster Kubernetes que você está executando. Uma vez implementado, o Atlas Kubernetes Operator pode monitorar recursos e eventos em um único ou múltiplos namespaces Kubernetes. Essa capacidade permite que o operador gerencie os recursos personalizados do MongoDB Atlas de forma abrangente em todo o cluster Kubernetes ou em namespaces designados específicos.
Para este exemplo, configuraremos o operador para observar todos os namespaces em nosso cluster, mas você pode aprender como configurar o operador para monitorar um único namespace em nossa documentação.
Use o seguinte comando em seu terminal:
1 kubectl apply -f https://raw.githubusercontent.com/mongodb/mongodb-atlas-kubernetes/v2.3.1/deploy/all-in-one.yaml
Certifique-se de substituir o
<version>
pela atualização mais recente no seguinte formato: "v2.x.x".Em seguida, criaremos um segredo no Kubernetes. Um segredo do Kubernetes é um objeto usado para armazenar e gerenciar informações confidenciais, como senhas, tokens OAuth e chaves SSH, com segurança em um cluster Kubernetes. Nesse caso, serão as chaves de API que você criou anteriormente.
Se você usar o armazenamento externo de segredos, não precisará colocar informações confidenciais diretamente nos segredosdoKubernetes. Para saber mais, consulte Configurar armazenamento secreto.
Digite o comando a seguir e substitua
<atlas_organization_id>
pelo ID da organização, <atlas_api_public_key>
pela chave pública da API e <atlas_api_private_key>
pela chave privada.Solução de problemas: Se o comando a seguir produzir um erro, tente executá-lo sem aspas (por exemplo.
--from-literal=orgId=<atlas_organization_id> \
)1 kubectl create secret generic mongodb-atlas-operator-api-key \ 2 --from-literal="orgId=<atlas_organization_id>" \ 3 --from-literal="publicApiKey=<atlas_api_public_key>" \ 4 --from-literal="privateApiKey=<atlas_api_private_key>" \ 5 -n mongodb-atlas-system
Em seguida, use o seguinte comando para rotular seu segredo:
1 kubectl label secret mongodb-atlas-operator-api-key atlas.mongodb.com/type=credentials -n mongodb-atlas-system
Os projetos permitem que você isole diferentes ambientes de banco de dados (por exemplo, ambientes de desenvolvimento/qa/produção) uns dos outros, bem como usuários/equipes. Aqui, usaremos o operador para criar um projeto na UI do Atlas por meio de um recurso personalizado do projeto Atlas.
Digite o seguinte comando em seu terminal.
1 cat <<EOF | kubectl apply -f - 2 apiVersion: atlas.mongodb.com/v1 3 kind: AtlasProject 4 metadata: 5 name: my-project 6 spec: 7 name: Test Atlas Operator Project 8 projectIpAccessList: 9 - cidrBlock: "0.0.0.0/0" 10 comment: "Allowing access to database from everywhere (only for Demo!)" 11 EOF
Observação: os comandos acima adicionarão o CIDR 0.0.0.0/0 à sua lista de acesso IP, se inserido como está. Este CIDR permite que qualquer cliente se conecte ao cluster do Atlas. Não use este endereço IP em
produção.
Se você estiver trabalhando em um projeto existente no Atlas, certifique-se de alterar
name: my-project
para o nome do seu projeto no Atlas e atualizar o cidrBlock
para seu endereço IP atual.Após inserir este comando, verifique sua IU do Atlas. Você deve ver um projeto criado na UI do Atlas chamado "Test Atlas Operator Project. "
Os sistemas são instâncias do MongoDB em execução em um fornecedor de nuvem. Esse recurso personalizado criará um cluster de0 de camada M gratuita, mas você sempre poderá ajustar o tamanho do cluster dependendo das necessidades de carga de trabalho no recurso personalizado. No seu terminal, digite este comando:
1 cat <<EOF | kubectl apply -f - 2 apiVersion: atlas.mongodb.com/v1 3 kind: AtlasDeployment 4 metadata: 5 name: my-test-cluster 6 spec: 7 projectRef: 8 name: my-project 9 deploymentSpec: 10 clusterType: REPLICASET 11 name: test-atlas-operator-project 12 replicationSpecs: 13 - regionConfigs: 14 - regionName: US_EAST_1 15 providerName: TENANT 16 backingProviderName: AWS 17 electableSpecs: 18 instanceSize: M0 19 nodeCount: 3 20 EOF
Agora, em Projetos na interface do usuário do Atlas, você deve ver "1 Cluster " criado na coluna Clusters.
Em seguida, você vai querer criar um segredo para sua senha.
Digite o seguinte comando. Certifique-se de substituir
P@@ssword%
por uma senha de sua escolha.1 kubectl create secret generic the-user-password --from-literal="password=P@@sword%"
Em seguida, use o comando a seguir para rotular sua senha.
1 kubectl label secret the-user-password atlas.mongodb.com/type=credentials
Com o cluster configurado, criaremos um recurso personalizado AtlasDatabaseUser usando o seguinte comando. Certifique-se de substituir a senha que você definiu anteriormente na linha de código que diz
the-user-password
.1 cat <<EOF | kubectl apply -f - 2 apiVersion: atlas.mongodb.com/v1 3 kind: AtlasDatabaseUser 4 metadata: 5 name: my-database-user 6 spec: 7 roles: 8 - roleName: "readWriteAnyDatabase" 9 databaseName: "admin" 10 projectRef: 11 name: my-project 12 username: theuser 13 passwordSecretRef: 14 name: the-user-password 15 EOF
Você precisará continuar executando o comando a seguir até obter uma resposta
True
. Isso pode levar algum tempo e talvez você precise executá-lo várias vezes até obter a resposta correta.1 kubectl get atlasdatabaseusers my-database-user -o=jsonpath='{.status.conditions[?(@.type=="Ready")].status}'
Por fim, você precisará recuperar o segredo que o operador criou. A obtenção de sua connection string no banco de dados recém-criado também pode ser feita por meio do Kubernetes. Para esta etapa, você precisará ter o jq (versão 1.6 ou superior) instalado.
Insira o seguinte comando depois de substituir as seguintes partes do código pelo que está nos metadados dos recursos personalizados que você aplicou anteriormente:
my-project
: Especifique o valor do campo de metadados do seu Recurso Personalizado AtlasProject (neste exemplo,my-project
).my-atlas-cluster
: Especifique o valor do campo de metadados do seu Recurso Personalizado AtlasDeployment (neste exemplo,my-test-cluster
).my-database-user
: especifique o valor do campo de metadados do seu Recurso Personalizado AtlasDatabaseUser (neste exemplo,my-database-user
)
1 kubectl get secret {my-project}-{my-atlas-cluster}-{my-database-user} -o json | jq -r '.data | with_entries(.value |= @base64d)';
Em seguida, execute este comando para obter uma connection string. Certifique-se de inserir a senha e o nome de usuário que você tinha antes ao lado dos campos onde você vê
“password”
e “username”
.1 { 2 "connectionStringStandard": "mongodb://theuser:P%40%40sword%25@test-cluster-shard-00-00.peqtm.mongodb.net:27017,test-cluster-shard-00-01.peqtm.mongodb.net:27017,test-cluster-shard-00-02.peqtm.mongodb.net:27017/?ssl=true&authSource=admin&replicaSet=atlas-pk82fl-shard-0", 3 "connectionStringStandardSrv": "mongodb+srv://theuser:P%40%40sword%25@test-cluster.peqtm.mongodb.net", 4 "password": "P@@sword%", 5 "username": "theuser" 6 }
Suas strings de conexão serão diferentes da string de conexão neste exemplo.
Por fim, você pode consumir o segredo como uma variável de ambiente com seu aplicativo:.
1 containers: 2 - name: test-app 3 env: 4 - name: "CONNECTION_STRING" 5 valueFrom: 6 secretKeyRef: 7 name: test-atlas-operator-project-test-cluster-theuser 8 key: connectionStringStandardSrv
Com isso, você acionou com sucesso o Operador Atlas para criar e conectar a um novo Atlas cluster, via Kubernetes!
Para saber mais sobre o Atlas Kubernetes Operator, você pode Go para a documentação do Atlas Operator. Se você estiver usando o MongoDB Enterprise Advanced em vez do Atlas, temos o Enterprise Kubernetes Operator disponível para executar o MongoDB em seu próprio ambiente Kubernetes.
Se você tiver dúvidas ou quiser compartilhar seu trabalho,acesse aComunidade de desenvolvedores do MongoDB!
Principais comentários nos fóruns
Ainda não há comentários sobre este artigo.
Relacionado
Artigo
Colocando o RAG em produção com o chatbot de IA da documentação do MongoDB
Aug 29, 2024 | 11 min read
Tutorial
Criando aplicações de IA com o Microsoft Semantic Kernel e o MongoDB Atlas Vector Search
Nov 27, 2023 | 8 min read