Con la función de ejecución en seco del operador de Kubernetes de Atlas, puede ver qué cambios realizará el operador de Kubernetes de Atlas en Atlas, con esos recursos personalizados aplicados al clúster K8S. El operador de Kubernetes de Atlas emite eventos para cada recurso que cree, actualice o elimine en Atlas. Los eventos emitidos por el operador de Kubernetes de Atlas que se ejecuta en modo de ejecución en seco se pueden filtrar por el motivo de la ejecución en seco. Esta función es útil para Actualizando sus recursos de Operador Atlas.
Requisitos previos
Para utilizar la función Atlas Kubernetes Operator Dry Run, debe:
Tener acceso a un nuevo clúster de Kubernetes u OpenShift.
Aplique los recursos personalizados de Atlas Kubernetes Operator a su nuevo clúster de Kubernetes. Al aplicar los recursos, asegúrese de proporcionar una Secreto con credenciales. Necesita un nuevo clúster, ya que actualizar los CRD en su clúster de Kubernetes existente podría impedir que Atlas Kubernetes Operator pueda conciliar los recursos personalizados existentes. Además, los CRD aplicados pueden ser una versión más reciente con posibles cambios importantes.
Nota
Solo puede existir una versión de los CRD de AKO en un clúster de Kubernetes específico. Esto significa que, para probar la actualización a una nueva versión de Atlas Kubernetes Operator, debe implementar un nuevo clúster de Kubernetes (posiblemente uno temporal) para ejecutar el simulacro.
Instale CRD en su clúster para la versión del operador Atlas Kubernetes para el que desea ejecutar el ensayo.
Crear una
mongodb-atlas-operatorcuenta de servicio en su clúster de Kubernetes.Crear un roly vinculación de roles para su cuenta de servicio con los siguientes permisos relacionados con sus recursos personalizados de Operador de Kubernetes de Atlas. Puede crear estos recursos manualmente o con la CLI de Atlas.
listgetcreateupdatedelete
Eventos de prueba
El proceso Dry Run emite los siguientes tipos de mensajes, cada uno de los cuales puede ser del tipo Normal o Warning:
Would [verb] ([HTTP-Method]) [Atlas resource URL]Descripción de un recurso de Operador de Kubernetes de Atlas y el proceso de Kubernetes requerido si el cambio se aplica a su entorno de Atlas. En modo de ejecución en seco, Operador de Kubernetes de Atlas solo emite eventos de ejecución en seco para verbos HTTP que crean, actualizan o eliminan recursos en Atlas, como
POST,PATCH,PUTyDELETE.
DoneNo se reportarán más eventos de ejecución en seco.
FinishedSe completó el trabajo de Kubernetes que ejecuta el proceso de ejecución en seco.
Procedimiento
Aplique el siguiente trabajo de Kubernetes.
Guarde el siguiente ejemplo en un archivo llamado dry-run-job.yaml y aplíquelo a su clúster ejecutando kubectl apply -f dry-run-job.yaml. Esto iniciará Atlas Kubernetes Operator como un trabajo de Kubernetes con el parámetro --dry-run. Cada conciliación en Atlas Kubernetes Operator se ejecutará solo una vez y emitirá eventos para cada recurso si hay cambios entre la especificación del recurso y su estado en Atlas.
Puede ejecutar este comando varias veces sin realizar ningún cambio en sus recursos 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
Enumere el resultado de la prueba en seco.
Cuando finaliza el trabajo de Kubernetes, puedes enumerar los eventos emitidos ejecutando el siguiente comando:
kubectl -n mongodb-atlas-system get events --field-selector reason=DryRun
Este comando devolverá un resultado similar al siguiente:
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
Ejecute el siguiente comando CLI de Atlas.
Ejecute el siguiente comando CLI de Atlas para iniciar el proceso de simulacro. Puede ejecutar este comando varias veces sin realizar cambios en sus recursos de Atlas.
atlas kubernetes dry-run --targetNamespace=mongodb-atlas-system --watch
Nota
Si no se proporciona el indicador --watch, la CLI de Atlas sale después de completar la instalación.
Enumere el resultado de la prueba en seco.
Cuando finaliza el trabajo de Kubernetes, puedes enumerar los eventos emitidos ejecutando el siguiente comando:
kubectl -n mongodb-atlas-system get events --field-selector reason=DryRun
Este comando devolverá un resultado similar al siguiente:
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
Diferencias de recursos de registro
Cuando --log-level se establece en debug, el Operador de Kubernetes de Atlas proporciona una diferencia detallada de los cambios que realiza en los recursos de Atlas administrados por él. Esta diferencia es especialmente útil cuando se usa junto con la función de simulacro, ya que permite ver las diferencias entre el estado actual de sus recursos personalizados del Operador de Kubernetes de Atlas y el estado que el Operador de Kubernetes de Atlas aplicaría a su entorno de Atlas.
Esta función de diferenciación se basa en la comparación del resultado de cualquier solicitud PUT o PATCH enviada a Atlas con el estado actual de los recursos personalizados de Atlas Kubernetes Operator en su entorno Atlas.
Nota
Para facilitar esta comparación, el operador de Kubernetes de Atlas realiza una solicitud GET a Atlas para conocer el estado actual de sus recursos. Por lo tanto, recomendamos configurar el nivel de registro en depuración solo en entornos que no sean de producción, ya que esta función puede aumentar la carga en Atlas.
Para ver las diferencias, debe establecer el indicador --log-level=debug al ejecutar el comando Operador de Atlas Kubernetes. Dado que el Operador de Atlas Kubernetes utiliza registro estructurado, recomendamos analizar la diferencia JSON en un visor de registro estructurado para una mejor legibilidad. El siguiente ejemplo muestra una línea de registro del Operador DEBUG de Atlas Kubernetes en formato YAML, tal como se muestra en un visor de registro estructurado:
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://...