Docs 菜单
Docs 主页
/ /
Atlas Kubernetes Operator

Atlas Kubernetes Operator试运行

借助Atlas Kubernetes Operator试运行功能,您可以查看Atlas Kubernetes Operator将在Atlas中更改哪些内容,并将这些自定义资源应用于 K8S集群。Atlas Kubernetes Operator为其将在Atlas中创建/更新/删除的每个资源发出事件。在试运行模式下运行的Atlas Kubernetes Operator发出的事件可以按“试运行”原因进行筛选。此功能对于 升级您的Atlas Operator 资源 非常有用。

要使用Atlas Kubernetes Operator试运行功能,您需要:

  • 可以访问权限新的Kubernetes或OpenShift集群

  • 将Atlas Kubernetes Operator自定义资源应用到新的Kubernetes集群。应用资源时,请确保提供带有凭证的 密钥。您需要一个新的集群,因为在现有Kubernetes集群上升级 CRD 可能会导致Atlas Kubernetes Operator无法协调现有的自定义资源。此外,应用的 CRD 可能是具有潜在重大更改的新版本。

    注意

    特定Kubernetes集群中只能存在一个版本的 AKO CRD。这意味着,要测试升级到新版本的Atlas Kubernetes Operator,您需要部署一个新的Kubernetes集群(可能是临时集群)来执行试运行。

  • 在您要执行空运行的Atlas Kubernetes Operator版本的集群中安装 CRD。

  • 在Kubernetes集群中创建一个 mongodb-atlas-operator 服务帐户。

  • 为服务帐户创建角色 和角色绑定,并具有与Atlas Kubernetes Operator自定义资源相关的以下权限。您可以手动或使用Atlas CLI创建这些资源。

    • list

    • get

    • create

    • update

    • delete

空运行进程会发出以下消息类型,每种消息类型可以是 NormalWarning 类型:

  • Would [verb] ([HTTP-Method]) [Atlas resource URL]

    • 如果将更改应用于Atlas环境,则对给定Atlas Kubernetes Operator资源以及Kubernetes所需的Kubernetes进程进行描述。处于空运行模式时, Atlas Kubernetes Operator仅会为会在Atlas中创建/更新/删除资源的HTTP动作发出空运行事件,例如 POSTPATCHPUTDELETE

  • Done

    • 不会再报告任何空运行事件。

  • Finished

    • 运行试运行进程的Kubernetes作业已完成。

1

将以下示例保存在名为 dry-run-job.yaml 的文件中,并通过运行kubectl apply -f dry-run-job.yaml 将其应用集群。这将使用 --dry-run 参数将Atlas Kubernetes Operator作为Kubernetes作业启动。Atlas Kubernetes Operator中的每次协调仅运行一次,如果Atlas中的资源规范与其状态之间发生变化,则为每个资源发出事件。

您可以多次运行此命令,而无需对Atlas资源进行任何更改。

1apiVersion: batch/v1
2kind: Job
3metadata:
4 name: ako-dry-run
5 namespace: mongodb-atlas-system
6spec:
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
2

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
1
atlas kubernetes operator install --targetNamespace=mongodb-atlas-system --config-only
2

运行以下Atlas CLI命令以启动试运行进程。您可以多次运行此命令,而无需对Atlas资源进行任何更改。

atlas kubernetes dry-run --targetNamespace=mongodb-atlas-system --watch

注意

如果未提供 --watch 标志, Atlas CLI将在完成安装后退出。

3

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 Operator向Atlas发出 GET请求,以学习;了解Atlas中资源的当前状态。因此,我们建议您仅在非生产环境中将日志级别设立为调试,因为此功能会增加Atlas的负载。

要查看差异,您需要在运行Atlas Kubernetes Operator命令时设立--log-level=debug 标志。由于Atlas Kubernetes Operator使用结构化日志记录,因此我们建议在结构化日志记录查看器中分析JSON差异,以提高可读性。以下示例显示了以 YAML 格式呈现的Atlas Kubernetes Operator DEBUG日志行,如结构化日志查看器中所示:

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://...

后退

团队

在此页面上