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.
Register and Log in to Atlas or Register and Log in to 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:
Create an API key with Organization Project Creator or Project Owner permissions by following the procedure in Grant Programmatic Access to an Organization.
Create a Service Account with the appropriate roles in your Atlas organization or project. To learn more, see Service Accounts Overview.
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 implantação extensível e avançada do Atlas Kubernetes Operator com boilerplate relacionado a implantações multirregionais, comportamento de autoscaling 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.
Creates a database user named
dbadminthat has thedbAdminrole.Creates a database user named
dbuserthat has thereadWriterole.
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. Criar um novo cluster gratuito leva menos de 15 segundos. A criação de um novo cluster Flex ou 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