Você pode usar o Atlas Kubernetes Operator para managed recursos no Atlas sem sair do Kubernetes. Este tutorial demonstra como criar seu primeiro cluster no Atlas a partir de arquivos de configuração do Kubernetes com o Atlas Kubernetes Operator.
Aviso
Orientação de segurança de vários locatários
Não compartilhe uma única instalação do Atlas Kubernetes Operator entre vários locatários, mesmo que eles usem namespace diferentes. Os locatários que compartilham um operador podem usar referências entre namespace para acessar recursos em outros namespace, incluindo segredos que fornecem acesso às configurações do Atlas de outros locatários ou a outros recursos da nuvem. Para isolar locatários, implante uma instância separada do Atlas Kubernetes Operator para cada locatário.
Observação
Você prefere começar com Helm?
Para criar seu primeiro cluster no Atlas a partir do Helm Charts com o Atlas Kubernetes Operator, consulte o Início Rápido do Helm Charts.
Pré-requisitos
Este tutorial requer:
Um cluster Kubernetes em execução com nós executando processadores com a arquitetura x86-64, AMD64 ou ARM64.
jq1.6 ou superiorAcesso ao projeto Atlas Kubernetes Operator no GitHub: https://github.com/mongodb/mongodb-atlas-kubernetes
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.
Instale o Atlas Kubernetes Operator.
Escolha um dos seguintes métodos para instalar o Atlas Kubernetes Operator:
Para instalar o Atlas Kubernetes Operator utilizando o Atlas CLI, execute o seguinte comando:
Importante
O Atlas CLI cria uma chave de API, mas não consegue detectar o IP de saída do seu cluster. Use o sinalizador --ipAccessList para adicionar à lista de permissões o bloco de IP ou CIDR do seu cluster Kubernetes para que o Atlas Kubernetes Operator possa se comunicar com o Atlas.
atlas kubernetes operator install --ipAccessList <IP_OR_CIDR> [options]
Observação
Para instalar o Atlas Kubernetes Operator para o Atlas for Government, anexe o sinalizador --atlasGov ao comando anterior.
Este comando automaticamente:
Cria uma nova chave de API na sua organização Atlas.
Adiciona o IP/CIDR fornecido à chave de API's lista de acesso IP.
Instala o Atlas Kubernetes Operator em seu cluster Kubernetes buscando os manifestos do GitHub.
Para saber mais sobre a sintaxe e os parâmetros do comando, consulte a documentação da Atlas CLI do Atlas para a instalação do Atlas Kubernetes Operator .
Para instalar o Atlas Kubernetes Operator utilizando o kubectl, siga estes passos:
Substitua
<VERSION>pelo número da versão mais recente e execute um dos seguintes comandos:Se você deseja que o Atlas Kubernetes Operator observe todos os namespaces no cluster Kubernetes, execute:
kubectl apply -f https://raw.githubusercontent.com/mongodb/mongodb-atlas-kubernetes/refs/heads/main/releases/v<VERSION>/deploy/all-in-one.yaml Se você desejar que o Atlas Kubernetes Operator observe somente seu namespace, instale os arquivos de configuração a partir do diretório
deploy/namespaced:kubectl apply -f https://raw.githubusercontent.com/mongodb/mongodb-atlas-kubernetes/v<VERSION>/deploy/namespaced/crds.yaml kubectl apply -f https://raw.githubusercontent.com/mongodb/mongodb-atlas-kubernetes/v<VERSION>/deploy/namespaced/namespaced-config.yaml
Crie uma chave de API com permissões
Organization Project CreatorouProject Ownerseguindo o procedimento em Conceder Acesso Programático a uma Organização.
Crie um segredo com suas chaves de API e ID da organização.
Para criar e rotular um segredo, execute os seguintes comandos com suas chaves de API e ID da organização:
kubectl create secret generic mongodb-atlas-operator-api-key \ --from-literal="orgId=<atlas_organization_id>" \ --from-literal="publicApiKey=<atlas_api_public_key>" \ --from-literal="privateApiKey=<atlas_api_private_key>" \ -n mongodb-atlas-system
kubectl label secret mongodb-atlas-operator-api-key atlas.mongodb.com/type=credentials -n mongodb-atlas-system
Se você usar o armazenamento externo de segredos, não precisará colocar informações confidenciais diretamente nos segredos do Kubernetes. Para saber mais, consulte Configurar Armazenamento Secreto.
Crie o recurso personalizado AtlasProject.
Execute o seguinte comando para criar o Recurso Personalizado doAtlasProject :
Observação
O exemplo a seguir não especifica spec.connectionSecretRef.name. Se não for especificado, o Atlas Kubernetes Operator utilizará o segredo de conexão padrão definido anteriormente com suas chaves de API e ID da organização.
Implemente o recurso personalizado do Atlas Kubernetes Operator .
cat <<EOF | kubectl apply -f - apiVersion: atlas.mongodb.com/v1 kind: AtlasProject metadata: name: my-project spec: name: Test Atlas Operator Project projectIpAccessList: - ipAddress: <your-ip-address-range> comment: "Adding your IP to Atlas access list" EOF
Crie o recurso personalizado AtlasDeployment.
Execute um dos seguintes comandos para criar um AtlasDeployment Recurso Personalizado e criar um cluster:
Nível pago:
cat <<EOF | kubectl apply -f - apiVersion: atlas.mongodb.com/v1 kind: AtlasDeployment metadata: name: my-atlas-cluster spec: projectRef: name: my-project deploymentSpec: clusterType: REPLICASET name: "Test-cluster" tags: - key: "environment" value: "production" replicationSpecs: - zoneName: US-Zone regionConfigs: - electableSpecs: instanceSize: M10 nodeCount: 3 providerName: AWS regionName: US_EAST_1 priority: 7 EOF
Nível gratuito:
cat <<EOF | kubectl apply -f - apiVersion: atlas.mongodb.com/v1 kind: AtlasDeployment metadata: name: my-atlas-cluster spec: projectRef: name: my-project deploymentSpec: clusterType: REPLICASET name: "Test-cluster" replicationSpecs: - regionConfigs: - regionName: US_EAST_1 providerName: TENANT backingProviderName: AWS electableSpecs: instanceSize: M0 nodeCount: 3 EOF
Para criar uma instância sem servidor, consulte o exemplo de instância sem servidor.
Crie um segredo com uma senha para entrar no reconhecimento de data center do cluster do Atlas.
Substitua P@@ssword% pela sua senha e execute os seguintes comandos:
kubectl create secret generic the-user-password --from-literal="password=P@@sword%"
kubectl label secret the-user-password atlas.mongodb.com/type=credentials
Se você usar o armazenamento externo de segredos, não precisará colocar informações confidenciais diretamente nos segredos do Kubernetes. Para saber mais, consulte Configurar Armazenamento Secreto.
Crie o recurso personalizado AtlasDatabaseUser.
Execute o seguinte comando para criar o Recurso Personalizado doAtlasDatabaseUser :
Observação
spec.passwordSecretRef deve fazer referência à senha que você criou anteriormente.
cat <<EOF | kubectl apply -f - apiVersion: atlas.mongodb.com/v1 kind: AtlasDatabaseUser metadata: name: my-database-user spec: roles: - roleName: "readWriteAnyDatabase" databaseName: "admin" projectRef: name: my-project username: theuser passwordSecretRef: name: the-user-password EOF
Verifique o status do seu usuário do banco de dados.
Execute o seguinte comando até receber uma resposta do True , que indica que o trigger de reconhecimento de data center está pronto:
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.
kubectl get atlasdatabaseusers my-database-user -o=jsonpath='{.status.conditions[?(@.type=="Ready")].status}'
Recupere o segredo que o Atlas Kubernetes Operator criou para conectar ao cluster.
Copie o seguinte comando:
Importante
O comando a seguir requer
jq1.6 ou superior.kubectl get secret {my-project}-{my-atlas-cluster}-{my-database-user} -o json | jq -r '.data | with_entries(.value |= @base64d)'; Substitua os seguintes espaços reservados pelos detalhes dos seus recursos personalizados:
my-projectEspecifique o valor do campo
metadatado seu Recurso PersonalizadoAtlasProject.my-atlas-clusterEspecifique o valor do campo
metadatado seu Recurso PersonalizadoAtlasDeployment.my-database-userEspecifique o valor do campo
metadatado seu Recurso PersonalizadoAtlasDatabaseUser.Execute o comando.
Observação
Sua string de conexão será diferente do exemplo a seguir.
{ "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", "connectionStringStandardSrv": "mongodb+srv://theuser:P%40%40sword%25@test-cluster.peqtm.mongodb.net", "password": "P@@sword%", "username": "theuser" } Você pode usar este segredo em seu aplicação:
containers: - name: test-app env: - name: "CONNECTION_STRING" valueFrom: secretKeyRef: name: test-atlas-operator-project-test-cluster-theuser key: connectionStringStandardSrv