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 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 Operator.,2 0consulte 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 personalizadoAtlasDeployment, 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-se e faça login no Atlas ou Registre-se e faça login no Atlas.
Crie credenciais para sua organização.
Crie credenciais que o Atlas Kubernetes Operator usa para autenticar com o Atlas. Escolha uma das seguintes opções:
Crie uma chave de API com permissões Organization Project Creator ou Project Owner seguindo o procedimento em Conceder Acesso Programático a uma Organização.
Crie uma conta de serviço com as funções apropriadas em sua organização ou projeto do Atlas. Para aprender mais, consulte Visão geral das contas de serviço.
Para obter detalhes sobre a configuração de contas de serviço com o Atlas Kubernetes Operator, consulte Configurar acesso ao Atlas usando contas de serviço.
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 namespaceatlas-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çãodbAdmin.Cria um usuário do banco de dados denominado
dbuserque tem a funçãoreadWrite.
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 arquivoValues.yamle os valores padrão do Helm Charts pelo ID de sua organização, credenciais e 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 helm install atlas-deployment \ mongodb/atlas-deployment \ --namespace=my-cluster \ --create-namespace \ --set atlas.secret.orgId='<orgid>' \ --set atlas.secret.clientId='<clientId>' \ --set atlas.secret.clientSecret='<clientSecret>' \ --values install-values.yaml Observação
Para obter uma lista completa dos valores Helm compatíveis para autenticação e outros parâmetros de gráfico, consulte o arquivo values.yaml no repositório
helm-charts.Para saber mais sobre os parâmetros de recurso personalizado do Atlas Kubernetes Operator, consulte
AtlasDeploymentRecurso Personalizado.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 espera até que o cluster esteja pronto. A criação de um novo cluster Atlas de camada grátis leva menos de 15 segundos. A criação de um novo cluster flexível ou cluster dedicado 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 de 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