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 do Atlas.
Pré-requisitos
Para utilizar a funcionalidade Executar Seca do Atlas Kubernetes Operator , você precisa:
Tenha acesso a um novo cluster Kubernetes ou OpenShift.
Apply Atlas Kubernetes Operator custom resources to your new Kubernetes cluster. When you apply your resources, make sure you provide a secret with credentials. You need a new cluster, because upgrading CRDs on your existing Kubernetes cluster might leave Atlas Kubernetes Operator unable to reconcile existing custom resources. Moreover, the CRDs that are applied can be a newer version with potential breaking changes.
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.Crie um role e uma associação de role 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.
Done- Nenhum outro evento de teste será relatado.
Finished- O 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