Atlas Kubernetes Operator试运行
借助Atlas Kubernetes Operator试运行功能,您可以查看Atlas Kubernetes Operator将在Atlas中更改哪些内容,并将这些自定义资源应用于 K8S集群。Atlas Kubernetes Operator为其将在Atlas中创建/更新/删除的每个资源发出事件。在试运行模式下运行的Atlas Kubernetes Operator发出的事件可以按“试运行”原因进行筛选。此功能对于将Atlas Kubernetes Operator资源从 v1.9 升级到 v2.x 特别有用。
先决条件
要使用Atlas Kubernetes Operator试运行功能,您需要:
可以访问权限新的Kubernetes或 Open Shift集群。
将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
试运行事件
空运行进程会发出以下消息类型,每种消息类型可以是 Normal
或 Warning
类型:
Would [verb] ([HTTP-Method]) [Atlas resource URL]
如果将更改应用于Atlas环境,则对给定Atlas Kubernetes Operator资源以及Kubernetes所需的Kubernetes进程进行描述。处于空运行模式时, Atlas Kubernetes Operator仅会为会在Atlas中创建/更新/删除资源的HTTP动作发出空运行事件,例如
POST
、PATCH
、PUT
、DELETE
。
Done
不会再报告任何空运行事件。
Finished
运行试运行进程的Kubernetes作业已完成。
步骤
应用以下Kubernetes作业。
将以下示例保存在名为 dry-run-job.yaml
的文件中,并通过运行kubectl apply -f dry-run-job.yaml
将其应用集群。这将使用 --dry-run
参数将Atlas Kubernetes Operator作为Kubernetes作业启动。Atlas Kubernetes Operator中的每次协调仅运行一次,如果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