Atlas Kubernetes Operator ドライバー 実行機能を使用すると、K8S クラスターに適用されるカスタム リソースによって、Atlas Kubernetes Operator がどのように変更されるかを確認できます。 Atlas Kubernetes Operator は、Atlas で作成/更新/削除するすべてのリソースのイベントを出力します。ドライバーがモードで実行中Atlas Kubernetes Operator によって発行されるイベントは、「ドライバーが実行」される理由でフィルタリングできます。 この機能は、Atlas Operator リソースをアップグレードするのに役立ちます。
前提条件
Atlas Kubernetes Operatortry Run 機能を使用するには、次の条件を満たす必要があります。
新しいKubernetesまたはOpenShiftクラスターにアクセスできるようにします。
Atlas Kubernetes Operator カスタム リソース を 新しいKubernetesクラスター に適用します。リソースを適用するときは、 認証情報 を持つ シークレットを指定していることを確認してください。既存のKubernetesクラスターで CRD をアップグレードすると、Atlas Kubernetes Operator が既存のカスタム リソースを調整 できなくなる可能性があるため、新しいクラスターが必要になります。さらに、適用される CRD は、重大な変更を含む新しいバージョンになる可能性があります。
注意
特定のKubernetesクラスターには、ACO CRD の 1 つのバージョンのみが存在できます。つまり、Atlas Kubernetes Operator の新しいバージョンへのアップグレードをテストするには、新しいKubernetesクラスター(一時クラスターの場合もあります)をデプロイしてドライバーを実行する必要があります。
ドライバーを実行する Atlas Kubernetes Operator のバージョン用の CRD をクラスターにインストールします。
Kubernetesクラスターに
mongodb-atlas-operator
サービス アカウントを作成します。Atlas Kubernetes Operator のカスタム リソースに関連する次の権限を持つ、サービス アカウントのロール とロールバインディングを作成します。これらのリソースは、手動または Atlas CLI を使用して作成できます。
list
get
create
update
delete
ドライバー イベント
ドライバー プロセスでは次のいずれかのメッセージタイプが出力されます。それぞれはタイプ Normal
または Warning
のいずれかになります。
Would [verb] ([HTTP-Method]) [Atlas resource URL]
特定の Atlas Kubernetes OperatorリソースとKubernetesが必要とするKubernetesプロセスの説明は、Atlas 環境に変更を適用する必要があります。ドライバーモードの場合、Atlas Kubernetes Operator は、
POST
、PATCH
、PUT
、DELETE
など、Atlas のリソースを作成/更新/削除するHTTPバージョンのドライバー 実行イベントのみを出力します。
Done
これ以上のドライバー 実行イベントは報告されません。
Finished
ドライバー プロセスを実行中Kubernetesジョブが完了しました。
手順
次のKubernetesジョブを適用します。
次の例を dry-run-job.yaml
というファイルに保存し、kubectl apply -f dry-run-job.yaml
を実行中してクラスターに適用します。これにより、--dry-run
パラメーターを持つKubernetes Operator がKubernetesジョブとして起動されます。 Atlas Kubernetes Operator のすべての調整は 1 回だけ実行され、リソースの仕様と Atlas 内のその状態に変更がある場合、各リソースのイベントが発行されます。
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
ドライバーの出力を一覧表示します。
Kubernetesジョブが完了したら、次のコマンドを実行中て発行されるイベントを一覧表示できます。
kubectl -n mongodb-atlas-system get events --field-selector reason=DryRun
このコマンドは、次のような出力を返します。
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
ドライバーの出力を一覧表示します。
Kubernetesジョブが完了したら、次のコマンドを実行中て発行されるイベントを一覧表示できます。
kubectl -n mongodb-atlas-system get events --field-selector reason=DryRun
このコマンドは、次のような出力を返します。
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
ログ リソースの相違
--log-level
が debug
に設定されている場合、Atlas Kubernetes Operator は、Atlas Kubernetes Operator によって管理される Atlas リソースに対して行った変更の詳細な差分を提供します。この差は、Atlas Kubernetes Operator カスタム リソースの現在の状態と Atlas Kubernetes Operator が Atlas 環境に適用される状態との間の違いを確認できるため、特に ドライバー 機能と組み合わせて使用すると便利です。
この差分機能は、Atlas に送信された PUT または PATCH リクエストの結果と、Atlas 環境内の Atlas Kubernetes Operator カスタム リソースの現在の状態を比較することでその情報を得ます。
注意
この比較を容易にするために、Atlas Kubernetes演算子は Atlas に GETリクエストを送信し、Atlas 内のリソースの現在の状態を学習します。 そのため、非本番環境でログレベルを に設定することをお勧めします。この機能は Atlas の負荷を増加させる可能性があるためです。
違いを確認するには、Atlas Kubernetes Operator コマンドを実行中ときに --log-level=debug
フラグを設定する必要があります。Atlas Kubernetes Operator は構造化ログを使用するため、人間が読みやすくするために構造化ログ ビューでJSON差分を分析することをお勧めします。次の例は、構造化ロギング ビューに表示される、レンダリングされた Atlas Kubernetes Operator DEBUG
ログ行の YAML形式のログ行を示しています。
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://...