Você pode utilizar o Atlas Kubernetes Operator para gerenciar recursos no Atlas sem sair do Kubernetes. Este tutorial mostra como criar seu primeiro cluster no Atlas a partir do Helm Charts com o Atlas Kubernetes Operator.
Observação
Você prefere começar sem o Helm?
Para criar seu primeiro cluster no Atlas a partir de arquivos de configuração do Kubernetes com o Atlas Kubernetes Operator, consulte o Início Rápido.
Pré-requisitos
Este tutorial requer:
- Um cluster Kubernetes em execução com nós executando processadores com a arquitetura x86-64, AMD64 ou ARM64. 
Você pode acessar o projeto Atlas Kubernetes Operator no GitHub:
Procedimento
Importante
Os Recursos Personalizados Não Excluem Mais Objetos por Padrão
- O Atlas Kubernetes Operator utiliza arquivos de configuração de recurso personalizado para gerenciar sua configuração do Atlas , mas a partir do Atlas Kubernetes Operator,2.0 os recursos personalizados que você exclui no Kubernetes não são mais (por padrão) excluídos no Atlas. Em vez disso, o Atlas Kubernetes Operator simplesmente para de gerenciar estes recursos no Atlas. Por exemplo, se você excluir um - AtlasProjectRecurso Personalizado no Kubernetes, por padrão, o Atlas Kubernetes Operator não excluirá mais automaticamente o projeto correspondente do Atlas. Essa mudança no comportamento destina-se a ajudar a evitar exclusões acidentais ou inesperadas. Para saber mais, incluindo como reverter este comportamento para o padrão utilizado antes do Atlas Kubernetes 2 0Operator., consulte Novo padrão: proteção de exclusão no Atlas Kubernetes 2 0Operator..- Da mesma forma, o Atlas Kubernetes Operator não exclui equipes do Atlas se você as remover de um projeto do Atlas no Kubernetes com o Atlas Kubernetes Operator. 
- Defina explicitamente os detalhes de configuração desejados para evitar o uso implícito de valores de configuração padrão do Atlas . Em alguns casos, herdar os padrões do Atlas pode resultar em um loop de reconciliação que pode impedir que seu recurso personalizado atinja um estado - READY. Por exemplo, definir explicitamente o comportamento de autoscaling desejado em seu recurso personalizado- AtlasDeployment, conforme mostrado no exemplo incluído, garante que um tamanho de instância estática em seu recurso personalizado não esteja sendo aplicado repetidamente a um sistema do Atlas que tenha o autoscaling ativado.- autoScaling: - diskGB: - enabled: true - compute: - enabled: true - scaleDownEnabled: true - minInstanceSize: M30 - maxInstanceSize: M40 
Registre-se para uma conta Atlas ou faça login.
Registre uma nova conta do Atlas ou faça login na sua conta do Atlas.
Crie chaves API para a sua organização.
Observação
Você precisa das seguintes informações da chave de API pública, chave de API privada e ID da organização para configurar o acesso do Atlas Kubernetes Operator ao Atlas.
Conceda Acesso Programático a uma Organização e configure o API Access List.
Você precisa das seguintes informações da chave de API pública, chave de API privada e ID da organização para configurar o acesso do Atlas Kubernetes Operator ao Atlas.
- Se você quiser que o Atlas Kubernetes Operator crie um novo projeto do Atlas , concedaacesso programático a uma organização. Se sua organização exigir uma lista de acesso IP para a API Atlas Administration, você também deverá configurar a lista de acesso da API. - Importante- Você deve atribuir a chave API ao role da organização Organization Project Creator ou superior. 
- Se você quiser trabalhar com um projeto Atlas existente, adicione acesso a um projeto. Se sua organização exigir uma lista de acesso IP para a API Atlas Administration, você também deverá configurar a lista de acesso da API. - Importante- Você deve atribuir à chave de API ao role de projeto Project Owner . 
Implemente o Atlas Kubernetes Operator
Execute um dos seguintes conjuntos de comandos:
- Se você deseja que o Atlas Kubernetes Operator observe todos os namespaces no cluster Kubernetes, execute os seguintes comandos: - helm repo add mongodb https://mongodb.github.io/helm-charts - helm install atlas-operator --namespace=atlas-operator --create-namespace mongodb/mongodb-atlas-operator 
- Se você quiser que o Atlas Kubernetes Operator observe um conjunto específico de namespaces, defina o sinalizador - --watchNamespacescomo uma lista separada por vírgulas de namespaces a serem observados. Por exemplo, execute o seguinte comando para observar somente o namespace- atlas-operator:- helm install atlas-operator --namespace=atlas-operator --set watchNamespaces=atlas-operator --create-namespace mongodb/mongodb-atlas-operator 
Implemente o Sistema de Banco de Dados Atlas.
- Personalize o projeto Atlas e seus utilizadores de banco de dados. - Observação- Você pode encontrar os seguintes exemplo adicionais de Helm Charts no Github Github: - atlas-basic: um exemplo simples de implementação do Atlas Kubernetes Operator que inclui a criação de um projeto Atlas, cluster e um usuário de banco de dados. 
- atlas-advanced: um exemplo de sistema extensível e avançado do Atlas Kubernetes Operator com biolerplate relacionado a sistemas de multirregional , comportamento de auto-scaling e muito mais. 
 - Crie um arquivo denominado - install-values.yamle cole o seguinte código de exemplo, que faz o seguinte:- Define o nome do projeto para - My Project.
- Permite que todos os endereços IP (0.0.0.0) acessem o projeto. 
- Cria um usuário do banco de dados denominado - dbadminque tem a função- dbAdmin.
- Cria um usuário do banco de dados denominado - dbuserque tem a função- readWrite.
 - project: # Project custom values - atlasProjectName: "My Project" - projectIpAccessList: - - cidrBlock: "0.0.0.0/0" - users: # Custom database users - - username: dbadmin - databaseName: admin - roles: - - databaseName: admin-role - roleName: dbAdmin - - username: dbuser - databaseName: admin - roles: - - databaseName: user-role - roleName: readWrite 
- Execute o seguinte comando. - Os sinalizadores - --sete- --valuesno comando a seguir substituem os valores do arquivo- Values.yamle os valores padrão do Helm Charts pelo ID de sua organização, pelas chaves de API e pela configuração do projeto Atlas.- Observação- mongodb/atlas-deploymentfaz referência ao nome de um gráfico no repositório.- helm install atlas-deployment \ - mongodb/atlas-deployment \ - --namespace=my-cluster \ - --create-namespace \ - --set atlas.secret.orgId='<orgid>' \ - --set atlas.secret.publicApiKey='<publicKey>' \ - --set atlas.secret.privateApiKey='<privateApiKey>' \ - --values install-values.yaml - Para saber mais sobre os parâmetros disponíveis, consulte Recurso Personalizado - AtlasDeployment.- Para criar uma instância sem servidor, consulte o exemplo de instância sem servidor. 
Verifique o status do seu usuário do banco de dados.
Execute o seguinte comando para aguardar o usuário do banco de dados do dbadmin se tornar pronto:
kubectl wait --for=condition=ready  --timeout=10m -n my-cluster atlasdatabaseusers/atlas-deployment-dbadmin 
Observação
O AtlasDatabaseUser Recurso Personalizado aguarda até que o sistema de banco de dados esteja pronto. Criar um novo sistema de banco de dados pode levar até 10 minutos.
Recupere o segredo que o Atlas Kubernetes Operator criou para conectar ao sistema de banco de dados.
Importante
O comando a seguir requer jq 1.6 ou superior.
Execute o seguinte comando para recuperar a cadeia de conexão e senha para o usuário do banco de dados do dbadmin. Suas cadeias de conexão serão diferentes da saída do exemplo.
kubectl get secret -n my-cluster my-project-cluster-name-dbadmin  -o json | jq -r '.data | with_entries(.value |= @base64d)'; 
{    "connectionStringStandard": "mongodb://admin-user:%25SomeLong%25password$foradmin@atlas-cluster-shard-00-00.nlrvs.mongodb.net:27017,atlas-cluster-shard-00-01.nlrvs.mongodb.net:27017,atlas-cluster-shard-00-02.nlrvs.mongodb.net:27017/?ssl=true&authSource=admin&replicaSet=atlas-11q9bn-shard-0",    "connectionStringStandardSrv": "mongodb+srv://admin-user:%25SomeLong%25password$foradmin@atlas-cluster.nlrvs.mongodb.net",    "password": "%SomeLong%password$foradmin",    "username": "dbadmin" } 
Você pode usar o seguinte segredo em seu aplicativo:
containers:  - name: test-app    env:      - name: "CONNECTION_STRING"        valueFrom:          secretKeyRef:            name: my-project-cluster-name-dbadmin            key: connectionStringStandardSrv