Com o recurso de Execução Seca do Atlas Kubernetes Operator , você pode ver o que o Atlas Kubernetes Operator vai mudar no Atlas, com esses recursos personalizados aplicados ao cluster K8S. O Atlas Kubernetes Operator emite eventos para cada recurso que vai criar/atualizar/excluir no Atlas. Os eventos emitidos pelo Atlas Kubernetes Operator executando no modo de execução seca podem ser filtrados pelo motivo de "execução seca". Este recurso é útil para atualizar seus recursos do Operador Atlas.
Pré-requisitos
Para utilizar a funcionalidade Executar Seca do Atlas Kubernetes Operator , você precisa:
Tenha acesso a um novo cluster Kubernetes ou OpenShift.
Aplique os recursos personalizados do Atlas Kubernetes Operator ao seu novo cluster Kubernetes. Ao aplicar seus recursos, certifique-se de fornecer um segredo com credenciais. Você precisa de um novo cluster, pois a atualização de CRDs em seu cluster Kubernetes existente pode deixar o Atlas Kubernetes Operator incapaz de reconciliar os recursos personalizados existentes. Além disso, os CRDs aplicados podem ser uma versão mais recente com possíveis alterações significativas.
Observação
Apenas uma versão dos CRDs Ako pode existir em um cluster Kubernetes específico. Isto significa que para testar a atualização para uma nova versão do Atlas Kubernetes Operator, você precisa implantar um novo cluster Kubernetes (possivelmente um cluster temporário) para executar a execução seca.
Instale CRDs em seu cluster para a versão do Atlas Kubernetes Operator para a qual você deseja executar o teste.
Crie uma conta de serviço do
mongodb-atlas-operatorno seu cluster do Kubernetes.Create a papel e rolebinding para sua conta de serviço com as seguintes permissões relacionadas aos seus recursos personalizados do Atlas Kubernetes Operator. Você pode criar estes recursos manualmente ou com o Atlas CLI.
listgetcreateupdatedelete
Eventos de execução seca
O processo de Secagem emite os seguintes tipos de mensagem, cada um dos quais pode ser do tipo Normal ou Warning:
Would [verb] ([HTTP-Method]) [Atlas resource URL]Uma descrição de um determinado recurso do Atlas Kubernetes Operator e o processo do Kubernetes necessário do Kubernetes caso a alteração seja aplicada ao seu ambiente do Atlas . Quando estiver no modo Executar Seca , o Atlas Kubernetes Operator somente emite eventos de execução seca para verbos HTTP que criariam/atualizarão/excluiriam recursos no Atlas, como
POST,PATCH,PUT,DELETE.
DoneNenhum outro evento de teste será relatado.
FinishedO trabalho do Kubernetes que executa o processo de execução seca foi concluído.
Procedimento
Aplique o seguinte trabalho do Kubernetes.
Salve o exemplo a seguir em um arquivo chamado dry-run-job.yaml e aplique-o ao seu cluster executando kubectl apply -f dry-run-job.yaml. Isto iniciará o Atlas Kubernetes Operator como um Trabalho do Kubernetes com o parâmetro --dry-run. Cada reconciliação no Atlas Kubernetes Operator será executada apenas uma vez, emitindo eventos para cada recurso se houver alterações entre a especificação do recurso e seu estado no Atlas.
Você pode executar este comando várias vezes sem fazer alterações em seus recursos do Atlas .
1 apiVersion: batch/v1 2 kind: Job 3 metadata: 4 name: ako-dry-run 5 namespace: mongodb-atlas-system 6 spec: 7 backoffLimit: 1 8 template: 9 spec: 10 containers: 11 - args: 12 - --atlas-domain=https://cloud.mongodb.com/ 13 - --log-level=info 14 - --log-encoder=json 15 - --dry-run 16 command: 17 - /manager 18 env: 19 - name: OPERATOR_POD_NAME 20 value: ako-dry-run 21 - name: OPERATOR_NAMESPACE 22 value: mongodb-atlas-system 23 - name: WATCH_NAMESPACE 24 value: mongodb-atlas-system 25 - name: JOB_NAME 26 value: ako-dry-run 27 image: quay.io/mongodb/mongodb-atlas-kubernetes-operator:2.8.0 28 imagePullPolicy: Always 29 livenessProbe: 30 failureThreshold: 3 31 httpGet: 32 path: /healthz 33 port: 8081 34 scheme: HTTP 35 initialDelaySeconds: 15 36 periodSeconds: 20 37 successThreshold: 1 38 timeoutSeconds: 1 39 name: ako-dry-run 40 restartPolicy: Never 41 serviceAccountName: mongodb-atlas-operator
Liste a saída do teste de limpeza.
Quando o Kubernetes Job estiver concluído, você poderá listar os eventos emitidos executando o seguinte comando:
kubectl -n mongodb-atlas-system get events --field-selector reason=DryRun
Este comando retornará uma saída semelhante ao seguinte:
LAST SEEN TYPE REASON OBJECT MESSAGE 103s Normal DryRun atlasproject/my-project Would delete (DELETE) /api/atlas/v1.0/groups/6558f184beba40022cbb2043/integrations/SLACK 101s Warning DryRun atlasproject/my-project finished dry run
Execute o seguinte comando do Atlas CLI .
Execute o seguinte comando do Atlas CLI para iniciar o processo de execução seca. Você pode executar este comando várias vezes sem fazer alterações em seus recursos do Atlas .
atlas kubernetes dry-run --targetNamespace=mongodb-atlas-system --watch
Observação
Se o sinalizador --watch não for fornecido, o Atlas CLI será encerrado após concluir a instalação.
Liste a saída do teste de limpeza.
Quando o Kubernetes Job estiver concluído, você poderá listar os eventos emitidos executando o seguinte comando:
kubectl -n mongodb-atlas-system get events --field-selector reason=DryRun
Este comando retornará uma saída semelhante ao seguinte:
LAST SEEN TYPE REASON OBJECT MESSAGE 103s Normal DryRun atlasproject/my-project Would delete (DELETE) /api/atlas/v1.0/groups/6558f184beba40022cbb2043/integrations/SLACK 101s Warning DryRun atlasproject/my-project finished dry run
Registrar diferenças de recursos
Quando o --log-level está configurado para debug, o Atlas Kubernetes Operator fornece um desvio detalhado das alterações que você faz nos recursos do Atlas que são gerenciados pelo Atlas Kubernetes Operator. Esta comparação é particularmente útil quando utilizada em conjunto com a funcionalidade Execução Seca, pois permite que você veja as diferenças entre o estado atual dos seus recursos personalizados do Atlas Kubernetes Operator e o estado que o Atlas Kubernetes Operator aplicaria ao seu ambiente Atlas .
Esse recurso de comparação é informado comparando o resultado de quaisquer solicitações PUT ou PATCH enviadas ao Atlas com o estado atual dos recursos personalizados do Atlas Kubernetes Operator em seu ambiente Atlas .
Observação
Para facilitar essa comparação, o Atlas Kubernetes Operator faz uma solicitação GET ao Atlas para saber o estado atual dos recursos no Atlas. Como tal, recomendamos que você defina o nível de registro para depurar somente em ambientes que não sejam de produção, pois esse recurso pode aumentar a carga no Atlas.
Para ver as diferenças, é necessário definir o sinalizador --log-level=debug ao executar o comando Atlas Kubernetes Operator . Como o Atlas Kubernetes Operator utiliza registro estruturado, recomendamos analisar o desvio JSON em um visualizador de registro estruturado para melhor legibilidade humana. O exemplo seguinte mostra uma linha de registro do Atlas Kubernetes Operator DEBUG renderizada no formato YAML, conforme exibido em um visualizador de registro estruturado:
apiVersion: atlas.mongodb.com/v1 kind: AtlasDeployment metadata: name: test namespace: flex spec: flexSpec: name: test providerSettings: backingProviderName: AWS regionName: US_EAST_1 terminationProtectionEnabled: true -> false projectRef: name: test
1 | diff: | 2 | { 3 | - "backupSettings": { 4 | - "enabled": true 5 | - }, 6 | - "clusterType": "REPLICASET", 7 | - "connectionStrings": { 8 | - "standard": "...", 9 | - "standardSrv": "..." 10 | - }, 11 | - "createDate": "2025-07-21T09:52:06Z", 12 | - "groupId": "687e0db8823af91...", 13 | - "id": "687e0dc6426db7026...", 14 | - "mongoDBVersion": "8.0.11", 15 | - "name": "test", 16 | - "providerSettings": { 17 | - "backingProviderName": "AWS", 18 | - "diskSizeGB": 5, 19 | - "providerName": "FLEX", 20 | - "regionName": "US_EAST_1" 21 | - }, 22 | - "stateName": "IDLE", 23 | "tags": [ 24 | ], 25 | - "terminationProtectionEnabled": false, 26 | + "terminationProtectionEnabled": true, 27 | - "versionReleaseSystem": "LTS" 28 | } 29 | level: DEBUG 30 | msg: JSON diff 31 | time: 2025-07-22T18:07:01.163+0200 32 | url: https://...