创建同步规则
同步规则是指从 Git 仓库到平台指定集群的一种资源映射关系,您可以通过在 Git 仓库中存储应用的配置文件,通过创建平台的同步规则,实现应用的自动批量下发和状态同步。
前提条件
您须在 global 集群中部署 ArgoCD Operator,参考 部署 ArgoCD Operator 。
提示:
-
若您的配置文件中包含合规管理相关策略,请在需要下发合规策略的集群中安装 Gatekeeper 插件。
-
ArgoCD 暂时无法支持同步资源至 IPV6 单栈集群。
创建同步规则
-
在左侧导航栏中,单击 集群管理 > 集群配置管理。
-
单击 创建同步规则,参考以下说明,配置相关参数。
参数 说明 代码仓库集成名称 代码仓库集成时填写的集成名称。 代码仓库项目名称 代码仓库中的项目名称。 代码仓库 指定项目下的代码仓库名称。 分支 存放配置文件的代码仓库分支。 源文件类型 - Kustomize:平台使用 Kustomize 与 GitOps 工作流程集成,它允许您为应用程序的不同部署环境(例如开发、测试、生产)或不同的集群,基于基础配置自定义一组修改规则,这些规则仅在特定环境或上下文中生效,您可以使用它来修改现有的 Kubernetes 资源,以适应不同环境的要求,使用该类型,您可参考如下代码 文件示例 以符合 Kustomize 文件结构与语法。
- 资源文件:使用 Kubernetes 资源文件同步至各个集群,例如 Deployment 类型的计算组件。源文件目录 配置文件的目录,选择目录后,该目录下的所有 YAML、YML 和 JSON 资源文件将同步至目标集群。
提示:选择 Kustomize 时,仅同步根目录下的文件。目标集群 选择一个或多个目标集群。创建同步规则后,代码仓库中的基础配置文件将自动同步至目标集群,并创建相应资源。
提示:选择 所有集群 或 除 global 外的所有集群 时,后续添加集群后,将自动同步配置资源至新添加的集群中。差异化配置 仅支持 源文件类型 选择 Kustomize 时需配置差异化参数。 - 集群:需要进行差异化配置的目标集群。
- Overlay 目录:选择在代码仓库中存放差异化配置文件的目录,需要注意的是,Overlay 目录内 Kustomize 文件需引用源文件目录。
-
单击 创建。您可根据相关状态确定同步规则的资源同步情况。
-
创建完成同步规则后,平台将自动生成同步 ID,一个同步 ID 对应一个集群。单击同步 ID 即可查看最近任务资源同步的具体资源名称、同步状态和资源类型。
同步状态
同步状态为当前同步规则的资源同步情况。
| 同步状态 | 说明 |
|---|---|
| 待同步 | Git 仓库中定义的资源状态与环境中资源状态不一致,但未开始同步。 |
| 同步失败 | 任意配置文件同步至目标集群时失败。 |
| 同步中 | 任意配置文件正在同步至目标集群,且没有文件同步失败。 |
| 已同步 | 所有配置文件已同步至目标集群。 |
健康状态
健康状态为 ArgoCD 组件的健康状态。
| 健康状态 | 说明 |
|---|---|
| 未知 | Unknown,YAML 配置文件有相关问题,目录不存在或代码仓库出现问题。 |
| 进行中 | Progressing,资源已经创建成功,Pod 处于非 Ready 状态。 |
| 健康 | Healthy,Pod 状态为 Ready。 |
| 暂停 | Suspended,Deployment 的 spec.paused 为 true。 |
| 降级 | Degraded,Progressing 状态到 healthy 状态时间超过默认的 10 min。 |
| 丢失 | Missing,YAML 配置文件中的资源未创建成功。 |
相关操作
您可以在列表页面单击右侧的
或在详情页面单击右上角的 操作,按需更新同步规则下的配置,或删除不再使用的同步规则。
| 操作 | 说明 |
|---|---|
| 更新同步规则 | 仅支持更新代码仓库的分支和文件路径信息。 注意:增加或修改相应配置后,在创建后改动立即生效并开始同步资源;删除相应配置或者取消勾选同步的目标集群后,目标集群下的原有资源将一并删除。 |
| 更新配置文件 | 在代码仓库中更新配置文件后,稍等片刻,相应集群的资源将按照预期的修改进行资源同步。 |
| 删除 | 删除同步规则后,目标集群下的同步资源将一并删除。 |
文件示例
使用差异化配置功能时,您可以参考如下文档结构以及示例文件内容,初始化代码仓库。
提示:有关 Kustomization 文件的语法定义请参考 官方文档 。
文件结构
├── base # base 目录,不同的目标集群可以继承该文目录进行差异化配置
│ ├── application.yaml # 应用 YAML 文件
│ └── kustomization.yaml # kustomize 配置文件
└── overlays # 各个目标集群的差异化配置目录
├── global # 目标集群目录
│ ├── dev # 目标集群的命名空间目录,您须确保集群中 dev 命名空间已存在
│ │ └── kustomization.yaml # 差异化配置的 kustomization 文件
│ └── prod
│ └── kustomization.yaml
└── rook-monitor-test
└── dev
└── kustomization.yaml文件内容
-
base 目录下文件 application.yaml 文件代码示例:
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment namespace: dev spec: replicas: 1 # 指定副本数 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:latest # Nginx 镜像 ports: - containerPort: 80 # 暴露的端口号 -
base 目录的 kustomization.yaml 文件代码示例:
resources: - application.yaml -
overlays/global/dev 目录下的 kustomization.yaml 文件代码示例:
resources: - ../../../base namespace: dev # 目标命名空间 patchesJson6902: # 基于 json patch 对资源进行差异化配置 - target: # 对 deployment 进行差异化配置 version: v1 kind: Deployment name: nginx-deployment patch: |- # 下面的 json patch 把 deployment 的 replicas 修改为 2 - op: replace path: /spec/replicas value: 2