GitOps
使用 GitOps 用于应用程序部署和管理应用程序。
摘要
第 1 章 GitOps 概述 复制链接链接已复制到粘贴板!
Red Hat OpenShift Container Platform GitOps 和 Argo CD 与原始 Application Lifecycle Channel 和 Subscription 模型相比,与 Red Hat Advanced Cluster Management for Kubernetes 集成。
GitOps 与 Argo CD 开发集成处于活跃状态,以及为 Argo CD 提供功能增强和更新的大型社区。通过使用 OpenShift Container Platform GitOps Operator,您可以使用 Argo CD 开发中的最新改进,并从 GitOps Operator 订阅接收支持。
请参阅以下主题以了解更多有关与 OpenShift Container Platform GitOps 和 Argo CD 集成的 Red Hat Advanced Cluster Management for Kubernetes 的信息:
1.1. GitOps 控制台 复制链接链接已复制到粘贴板!
了解有关集成的 OpenShift Container Platform GitOps 控制台功能的更多信息。创建并查看应用程序,如 ApplicationSet 和 Argo CD 类型。ApplicationSet 代表从控制器生成的 Argo 应用程序。
- 点 Launch resource in Search 搜索相关资源。
-
使用 Search 根据每个资源的组件
kind查找应用程序资源。
重要:可用的操作基于您分配的角色。了解 基于角色的访问控制文档中的访问要求。
1.1.1. 先决条件 复制链接链接已复制到粘贴板!
请参见以下先决条件和要求:
-
要创建 ArgoCD
ApplicationSet,您需要从Sync 策略中启用Automatically sync when cluster state changes。 -
对于带有
kustomization控制器的 Flux,找到带有标签kustomize.toolkit.fluxcd.io/name=<app_name>的 Kubernetes 资源。 -
对于带有
helm控制器的 Flux,找到带有标签helm.toolkit.fluxcd.io/name=<app_name>的 Kubernetes 资源。 -
您需要 GitOps 集群资源和 GitOps operator 来创建
ApplicationSet。如果没有满足这些先决条件,您将无法在控制台中看到 Argo 服务器选项来创建ApplicationSet。
1.1.2. 查询 Argo CD 应用程序 复制链接链接已复制到粘贴板!
当您搜索 Argo CD 应用程序时,您会被定向到 Applications 页面。完成以下步骤,从 Search 页面访问 Argo CD 应用程序:
- 登录到您的 Red Hat Advanced Cluster Management hub 集群。
- 在控制台标头中选择搜索图标。
-
使用以下值过滤查询:
kind:application和apigroup:argoproj.io。 - 选择要查看的应用程序。Application 页面中显示应用的信息的概览。
有关搜索的更多信息,请参阅搜索服务。
1.2. 将受管集群注册到 Red Hat OpenShift GitOps operator 复制链接链接已复制到粘贴板!
要使用 Push 模型配置 OpenShift GitOps,您可以将一个或多个 Red Hat Advanced Cluster Management for Kubernetes 受管集群的集合注册到 OpenShift GitOps operator 实例。注册后,您可以将应用程序部署到这些集群中。设置一个持续 GitOps 环境,以在开发、临时和生产环境中的集群间自动实现应用程序一致性。
1.2.1. 先决条件 复制链接链接已复制到粘贴板!
- 您需要在 Red Hat Advanced Cluster Management for Kubernetes 上安装 Red Hat OpenShift GitOps Operator。
- 导入一个或多个受管集群。
- 要将受管集群注册到 OpenShift GitOps,请完成 创建 ManagedClusterSet 文档。
-
启用
ManagedServiceAccount插件来轮换用于 Argo CD 推送和拉取模型连接到托管集群的令牌。有关启用插件的帮助,请参阅配置 klusterlet 插件。
1.2.2. 将受管集群注册到 Red Hat OpenShift GitOps 复制链接链接已复制到粘贴板!
完成以下步骤,将受管集群注册到 OpenShift GitOps:
通过将受管集群绑定到部署 OpenShift GitOps 的命名空间来创建受管集群集。
-
在
Additional resources部分,请参阅创建 ManagedClusterSetBinding 资源 以了解更多有关创建 ManagedClusterSetBinding 的信息。 - 有关放置信息,请参阅使用ManagedCluster对象进行过滤。
-
在
在受管集群集绑定中使用的命名空间中,创建一个放置自定义资源来选择要注册到 OpenShift Container Platform GitOps operator 实例的一组受管集群。使用
multicloud-integration放置示例作为模板。如需放置信息,请参阅使用 ManagedClusterSet with Placement。备注:
- 注:只有 OpenShift Container Platform 集群注册到 ArgoCD 或 OpenShift GitOps operator 实例,而不是其他 Kubernetes 集群。
-
在一些不稳定的网络场景中,受管集群可能会临时处于
unavailable或unreachable的状态。如需了解更多详细信息,请参阅为 Red Hat Advanced Cluster Management 和 OpenShift GitOps 配置放置容限。
创建
GitOpsCluster自定义资源,将一组受管集群从放置决定注册到指定的 OpenShift GitOps 实例。这可让 OpenShift GitOps 实例将应用程序部署到任何 Red Hat Advanced Cluster Management 受管集群。使用multicloud-integrationsOpenShift GitOps 集群示例。注:引用的
放置资源必须与GitOpsCluster资源位于同一个命名空间中。请参见以下示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
placementRef.name值是all-openshift-clusters,并指定为在argoNamespace: openshift-gitops中安装的 GitOps 实例的目标集群。argoServer.cluster规范需要<your-local-cluster-name>值。
- 保存您的更改。现在,您可以按照 OpenShift GitOps 工作流来管理应用程序。
现在,您可以使用 Red Hat Advanced Cluster Management GitOpsCluster 资源将非 OpenShift Container Platform 集群注册到 OpenShift GitOps 集群。借助此功能,您可以使用 OpenShift GitOps 控制台将应用程序资源部署到非 OpenShift Container Platform 集群中。要将非 OpenShift Container Platform 集群注册到 OpenShift GitOps 集群,请完成以下步骤:
进入非 OpenShift Container Platform
ManagedCluster资源spec中的 API 服务器 URL,并运行以下命令来验证它:oc get managedclusters eks-1
oc get managedclusters eks-1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证您的输出是否类似以下信息:
NAME HUB ACCEPTED MANAGED CLUSTER URLS JOINED AVAILABLE AGE eks-1 true https://5E336C922AB16684A332C10535B8D407.gr7.us-east-2.eks.amazonaws.com True True 37m
NAME HUB ACCEPTED MANAGED CLUSTER URLS JOINED AVAILABLE AGE eks-1 true https://5E336C922AB16684A332C10535B8D407.gr7.us-east-2.eks.amazonaws.com True True 37mCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果非 OpenShift Container Platform
MangedCluster资源spec中的 API 服务器 URL 为空,请完成以下步骤来手动更新它:要完成 API 服务器 URL,请运行以下命令来编辑
MangedCluster资源spec:oc edit managedclusters eks-1
oc edit managedclusters eks-1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证您的 YAML 类似于以下文件:
spec: managedClusterClientConfigs: - caBundle: ZW1wdHlDQWJ1bmRsZQo= url: https://5E336C922AB16684A332C10535B8D407.gr7.us-east-2.eks.amazonaws.comspec: managedClusterClientConfigs: - caBundle: ZW1wdHlDQWJ1bmRsZQo= url: https://5E336C922AB16684A332C10535B8D407.gr7.us-east-2.eks.amazonaws.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 保存更改,运行以下命令来验证 API 服务器是否已完成:
oc get managedclusters eks-1
oc get managedclusters eks-1Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 验证您的输出是否类似以下信息:
NAME HUB ACCEPTED MANAGED CLUSTER URLS JOINED AVAILABLE AGE eks-1 true https://5E336C922AB16684A332C10535B8D407.gr7.us-east-2.eks.amazonaws.com True True 37m
NAME HUB ACCEPTED MANAGED CLUSTER URLS JOINED AVAILABLE AGE eks-1 true https://5E336C922AB16684A332C10535B8D407.gr7.us-east-2.eks.amazonaws.com True True 37mCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要验证是否生成了集群 secret,请转至
openshift-gitops命名空间,并确认GitOpsCluster资源状态报告成功。备注:
如果使用以下导入模式,则所有非 OpenShift Container Platform
ManagedCluster资源的 API 服务器 URL 会自动显示:- 为现有集群输入服务器 URL 和 API 令牌。
-
为现有集群输入
kubeconfig文件。
以下情况可使其中一个
ManagedClusters资源使 API 服务器 URL 为空:- 在版本 2.12 前,非 OpenShift Container Platform 集群会导入到 Red Hat Advanced Cluster Management hub 集群中。
-
非 OpenShift Container Platform 集群通过导入模式手动导入到 Red Hat Advanced Cluster Management hub 集群,即
Run import 命令。
1.2.4. Red Hat OpenShift GitOps 令牌 复制链接链接已复制到粘贴板!
当您与 OpenShift GitOps operator 集成时,对于通过放置和 ManagedClusterSetBinding 自定义资源绑定到 OpenShift GitOps 命名空间的每个受管集群,会在 OpenShift GitOps 实例服务器命名空间中创建一个令牌来访问 ManagedCluster。
OpenShift GitOps 控制器需要此 secret 将资源同步到受管集群。默认情况下,服务帐户应用程序管理器与受管集群上的集群管理员权限一起工作,以在 OpenShift GitOps 实例服务器命名空间中生成 OpenShift GitOps 集群 secret。默认命名空间是 openshift-gitops。
如果您不想此默认值,请在受管集群中创建一个带有自定义权限的服务帐户,以便在 OpenShift GitOps 实例服务器命名空间中生成 OpenShift GitOps 集群 secret。默认命名空间仍然是 openshift-gitops。如需更多信息,请参阅为 Argo CD push 模型创建自定义服务帐户。
1.2.5. 其他资源 复制链接链接已复制到粘贴板!
如需更多信息,请参阅以下资源和示例:
1.3. 为 GitOps 配置应用程序放置容限 复制链接链接已复制到粘贴板!
Red Hat Advanced Cluster Management 为您提供了将应用程序部署到 Red Hat OpenShift GitOps 的受管集群。
在一些不稳定的网络场景中,受管集群可能会临时处于 Unavailable 状态。如果使用 Placement 资源来简化应用程序的部署,请为 Placement 资源添加以下容限,以继续包含不可用集群。以下示例显示了具有容限的 Placement 资源 :
1.4. 使用 Push 和 Pull 模型部署 Argo CD 复制链接链接已复制到粘贴板!
使用 Push 模型,hub 集群上的 Argo CD 服务器会在受管集群中部署应用程序资源。对于 Pull 模型,应用程序资源由 Propagation 控制器传播到受管集群,使用 manifestWork 。
对于这两种模型,相同的 ApplicationSet CRD 用于将应用程序部署到受管集群。
需要的访问权限:集群管理员
1.4.1. 先决条件 复制链接链接已复制到粘贴板!
查看 Argo CD Pull 模型的以下先决条件:
重要:
-
重要:如果您的 openshift-gitops-ArgoCD-application-controller 服务帐户 没有 作为集群管理员分配,GitOps 应用程序控制器可能无法部署资源。应用程序状态可能会发送类似以下错误的错误:
cannot create resource "services" in API group "" in the namespace "mortgage",deployments.apps is forbidden: User "system:serviceaccount:openshift-gitops:openshift-gitops-Argo CD-application-controller"
cannot create resource "services" in API group "" in the namespace
"mortgage",deployments.apps is forbidden: User
"system:serviceaccount:openshift-gitops:openshift-gitops-Argo CD-application-controller"
-
在受管集群中安装
OpenShift GitopsOperator 后,您必须在同一受管集群中创建ClusterRoleBinding集群管理员特权。 要将
ClusterRoleBinding集群管理员特权添加到受管集群,请参阅以下 YAML 示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您不是集群管理员,需要解决这个问题,请完成以下步骤:
- 在部署 Argo CD 应用程序的每个受管集群中创建所有命名空间。
将
managed-by标签添加到每个命名空间。如果 Argo CD 应用程序部署到多个命名空间,则每个命名空间都应该由 Argo CD 管理。请参见以下带有
managed-by标签的示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
您必须在存储库中声明应用程序的所有应用程序目的地命名空间,并在命名空间中包含
managed-by标签。请参阅附加资源以了解如何声明命名空间。
请参阅以下要求来使用 Argo CD Pull 模型:
-
GitOps Operator 必须安装到 hub 集群和
openshift-gitops命名空间中的目标受管集群。 - 所需的 hub 集群 OpenShift Container Platform GitOps operator 必须是版本 1.9.0 或更高版本。
- 中心集群上的 Red Hat OpenShift GitOps Operator 的版本必须等于或更新于托管集群上的操作员的版本。
- 您需要 ApplicationSet 控制器 为受管集群传播 Argo CD 应用程序模板。
每个受管集群都必须在 hub 集群上的 Argo CD 服务器命名空间中有一个集群 secret,而 ArgoCD 应用程序设置控制器需要该 secret 来为受管集群传播 Argo CD 应用程序模板。
要创建集群 secret,请创建一个
gitOpsCluster资源,其中包含对placement资源的引用。placement资源选择所有需要支持 Pull 模型的受管集群。当 GitOps 集群控制器协调时,它会在 Argo CD 服务器命名空间中为受管集群创建集群 secret。
1.4.2. 架构 复制链接链接已复制到粘贴板!
对于 Push 和 Pull 模型,hub 集群上的 Argo CD ApplicationSet 控制器会协调为每个目标受管集群创建应用程序资源。有关这两种模型的架构,请查看以下信息:
1.4.2.1. 架构推送模型 复制链接链接已复制到粘贴板!
- 使用 Push 模型时,OpenShift Container Platform GitOps 将资源直接从集中 hub 集群应用到受管集群。
- 在 hub 集群上运行的 Argo CD 应用程序与 GitHub 存储库通信,并将清单直接部署到受管集群。
- 推送模型实现仅包含 hub 集群上的 Argo CD 应用程序,其中包含受管集群的凭证。hub 集群上的 Argo CD 应用程序可将应用程序部署到受管集群。
- 重要: 对于需要资源应用程序的大量受管集群,请考虑 OpenShift Container Platform GitOps 控制器内存和 CPU 用量的可能性。要优化资源管理,请参阅 Red Hat OpenShift GitOps 文档中的配置资源配额或请求。
-
默认情况下,Push 模型用于部署应用程序,除非您将
apps.open-cluster-management.io/ocm-managed-cluster和apps.open-cluster-management.io/pull-to-ocm-managed-cluster注解添加到ApplicationSet的 template 部分。
1.4.2.2. 架构 Pull 模型 复制链接链接已复制到粘贴板!
- 拉取模型可以通过减少 hub 集群中的控制器的压力与推送模型提供可扩展性,但需要更多请求和状态报告。
- 使用 Pull 模型时,OpenShift Container Platform GitOps 不会将资源直接从集中 hub 集群应用到受管集群。Argo CD Application 从 hub 集群传播到受管集群。
-
拉取模型实现应用 OpenShift Cluster Manager 注册、放置和
manifestWorkAPI,以便 hub 集群和受管集群之间可以使用安全通信频道来部署资源。 - 每个受管集群都单独与 GitHub 存储库通信,以便在本地部署资源清单,因此您必须在每个受管集群中安装和配置 GitOps operator。
-
Argo CD 服务器必须在每个目标受管集群中运行。Argo CD 应用程序资源在受管集群中复制,然后由本地 Argo CD 服务器部署。受管集群中的分布式 Argo CD 应用程序使用 hub 集群上的单个 Argo CD
ApplicationSet资源创建。 -
受管集群由
ocm-managed-cluster注解的值决定。 -
要成功实现 Pull 模型,Argo CD 应用程序控制器必须在
ApplicationSet的 template 部分中忽略带有argocd.argoproj.io/skip-reconcile注解的 Push 模型应用程序资源。 - 对于 Pull 模型,受管集群中的 Argo CD Application 控制器会 协调以部署应用程序。
- hub 集群上的 Pull model Resource sync 控制器 会定期查询 OpenShift Cluster Manager 在每个受管集群上搜索 V2 组件,以检索每个 Argo CD 应用程序的资源列表和错误消息。
-
hub 集群上的 聚合控制器 使用资源同步控制器的数据以及
manifestWork的状态信息,从集群间创建和更新MulticlusterApplicationSetReport。 - 部署的状态被收集回 hub 集群,但不会传输所有详细信息。定期提取其他状态更新以提供概述。状态反馈不是实时的,每个受管集群 GitOps operator 需要与 Git 存储库通信,这会导致多个请求。
1.4.3. 创建 ApplicationSet 自定义资源 复制链接链接已复制到粘贴板!
Argo CD ApplicationSet CRD 用于在用于获取受管集群列表的 generator 字段中使用带有 placement 资源的 Push 或 Pull 模型在受管集群中部署应用程序。
- 对于 Pull 模型,将应用程序的目的地设置为默认本地 Kubernetes 服务器,如下例所示。应用程序由受管集群上的应用程序控制器在本地部署。
添加覆盖默认 Push 模型所需的注解,如下例所示
ApplicationSetYAML,该 YAML 使用带有模板注解的 Pull 模型:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4.4. MulticlusterApplicationSetReport 复制链接链接已复制到粘贴板!
-
对于 Pull 模型,
MulticlusterApplicationSetReport聚合受管集群中的应用程序状态。 - 该报告包括资源列表以及每个受管集群的应用程序的整体状态。
-
为每个 Argo CD ApplicationSet 资源创建一个单独的报告资源。该报告与
ApplicationSet在同一命名空间中创建。 该报告包括以下项目:
- Argo CD 应用程序的资源列表
- 每个 Argo CD 应用程序的整体同步和健康状况
-
每个集群的出错信息,其中整个状态为
sync或unhealthy - 受管集群的所有状态概述状态
- 资源同步控制器和聚合控制器每 10 秒运行一次,以创建报告。
两个控制器以及 Propagation 控制器,在同一
multicluster-integrationspod 中的独立容器中运行,如下例所示:NAMESPACE NAME READY STATUS open-cluster-management multicluster-integrations-7c46498d9-fqbq4 3/3 Running
NAMESPACE NAME READY STATUS open-cluster-management multicluster-integrations-7c46498d9-fqbq4 3/3 RunningCopy to Clipboard Copied! Toggle word wrap Toggle overflow
以下是 guestbook 应用程序的 MulticlusterApplicationSetReport YAML 文件示例:
注:如果资源无法部署,则资源不会包含在资源列表中。如需更多信息,请参阅错误消息。
1.4.5. 其他资源 复制链接链接已复制到粘贴板!
- 请参阅 Red Hat OpenShift GitOps 文档中的使用集群配置部署应用程序来配置 OpenShift 集群。
- 请参阅 Red Hat OpenShift GitOps 文档中的 设置 Argo CD 实例。
1.5. 使用 Red Hat OpenShift GitOps 管理策略定义 复制链接链接已复制到粘贴板!
使用 ArgoCD 资源,您可以使用 Red Hat OpenShift GitOps 通过授予 OpenShift GitOps 访问权限在 Red Hat Advanced Cluster Management hub 集群上创建策略来管理策略定义。
- 先决条件
- 为 OpenShift GitOps 创建 ClusterRole 资源
- 将策略生成器与 OpenShift GitOps 集成 (ArgoCD)
- 在 OpenShift GitOps 中配置策略健康检查
1.5.1. 先决条件 复制链接链接已复制到粘贴板!
您必须登录到您的 hub 集群。
需要的访问权限:集群管理员
已弃用: PlacementRule
1.5.2. 为 OpenShift GitOps 创建 ClusterRole 资源 复制链接链接已复制到粘贴板!
要为 OpenShift GitOps 创建 ClusterRole 资源,可访问创建、读取、更新和删除策略和放置:
从控制台创建
ClusterRole。您的ClusterRole可能类似以下示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 另外,创建一个
ClusterRoleBinding对象来授予 OpenShift GitOps 服务帐户对openshift-gitops-policy-adminClusterRole对象的访问权限。ClusterRoleBinding可能类似以下示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注: - 当使用 OpenShift GitOps 部署 Red Hat Advanced Cluster Management 策略定义时,会在每个受管集群命名空间中创建一个策略副本,以解决 hub 模板的不同。要防止 OpenShift GitOps 重复删除此复制策略,或者显示 ArgoCD 应用程序没有同步,则 Red Hat Advanced Cluster Management 策略框架在每个复制策略上自动设置
argocd.argoproj.io/compare-options: IgnoreExtraneous注解。-
ArgoCD 使用标签和注解来跟踪对象。对于没有在 Argo CD 中显示复制策略,请在 Red Hat Advanced Cluster Management 策略定义中将
spec.copyPolicyMetadata设置为false来禁用 Argo CD 跟踪标签和注解。
1.5.3. 将策略生成器与 OpenShift GitOps 集成 (ArgoCD) 复制链接链接已复制到粘贴板!
您可以使用 OpenShift GitOps 通过 GitOps 使用 Policy Generator 生成策略。由于 OpenShift GitOps 容器镜像中没有预安装 Policy Generator,所以您必须完成自定义。
1.5.3.1. 先决条件 复制链接链接已复制到粘贴板!
- 您必须在 Red Hat Advanced Cluster Management hub 集群上安装 OpenShift GitOps。
- 您必须登录到 hub 集群。
1.5.3.2. 从 OpenShift GitOps 访问策略生成器 复制链接链接已复制到粘贴板!
要从 OpenShift GitOps 访问 Policy Generator,您必须配置 Init 容器,以便从 Red Hat Advanced Cluster Management Application Subscription 容器镜像复制 Policy Generator 二进制文件。您还必须通过在运行 Kustomize 时提供 --enable-alpha-plugins 标志来配置 OpenShift GitOps。
要使用 Policy Generator 创建、读取、更新和删除策略和放置,请授予对 OpenShift GitOps 的 Policy Generator 的访问权限。完成以下步骤:
使用以下命令编辑 OpenShift GitOps
argocd对象:oc -n openshift-gitops edit argocd openshift-gitops
oc -n openshift-gitops edit argocd openshift-gitopsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要将 Policy Generator 更新至较新的版本,请将 Init 容器使用的
registry.redhat.io/rhacm2/multicluster-operators-subscription-rhel9镜像添加到较新的标签。将 <version> 参数替换为ArgoCD资源中的最新 Red Hat Advanced Cluster Management 版本。您的
ArgoCD资源可能类似以下 YAML 文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注: 另外,您可以创建一个
ConfigurationPolicy资源,其中包含ArgoCD清单,并模板与MulticlusterHub中设置的版本匹配:image: '{{ (index (lookup "apps/v1" "Deployment" "open-cluster-management" "multicluster-operators-hub-subscription").spec.template.spec.containers 0).image }}'image: '{{ (index (lookup "apps/v1" "Deployment" "open-cluster-management" "multicluster-operators-hub-subscription").spec.template.spec.containers 0).image }}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果要在生成策略前在 Kustomize 目录中启用 Helm chart 处理,请在
spec.repo.env字段中将POLICY_GEN_ENABLE_HELM环境变量设置为"true":env: - name: POLICY_GEN_ENABLE_HELM value: "true"
env: - name: POLICY_GEN_ENABLE_HELM value: "true"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要创建、读取、更新和删除策略和放置,请创建一个
ClusterRoleBinding对象来授予 OpenShift GitOps 服务帐户对 Red Hat Advanced Cluster Management hub 集群的访问权限。ClusterRoleBinding可能类似以下资源:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.5.4. 在 OpenShift GitOps 中配置策略健康检查 复制链接链接已复制到粘贴板!
将 OpenShift GitOps 与 ArgoCD 资源一起使用,以定义一个自定义逻辑,该逻辑基于资源状态来设置资源的健康状况,方法是添加到 resourceHealthChecks 字段。例如,如果策略合规,您可以定义仅报告策略为 healthy 的自定义健康检查。
重要: 要验证您是否没有从互联网下载恶意的内容,请在应用前检查每个策略。
要为您的资源类型定义健康检查,请完成以下步骤:
通过下载
argocd-policy-healthchecks.yaml,在Certificate,PolicyConfigurationPolicy, 和 Policy 资源中添加健康检查。运行以下命令:wget https://raw.githubusercontent.com/open-cluster-management-io/policy-collection/main/stable/CM-Configuration-Management/argocd-policy-healthchecks.yaml
wget https://raw.githubusercontent.com/open-cluster-management-io/policy-collection/main/stable/CM-Configuration-Management/argocd-policy-healthchecks.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 通过在控制台中进入 Governance > Create 策略应用
argocd-policy-healthchecks.yaml 策略,并将内容粘贴到 YAML 编辑器。注: 您可以在 YAML 编辑器中添加放置信息,以确定哪些集群具有活跃的策略。
-
通过查看
ArgoCD资源的 Summary 选项卡来验证健康检查是否正常工作。从 Argo CD 控制台查看健康详情。
1.5.5. 其他资源 复制链接链接已复制到粘贴板!
- 请参阅 了解 OpenShift GitOps 文档。
1.6. 生成用于安装 GitOps Operator 的策略 复制链接链接已复制到粘贴板!
Red Hat Advanced Cluster Management 策略的一个常见用途是在一个或多个受管 Red Hat OpenShift Container Platform 集群上安装 Operator。继续阅读以了解如何使用 Policy Generator 生成策略,并使用生成的策略安装 OpenShift Container Platform GitOps Operator:
1.6.1. 生成安装 OpenShift Container Platform GitOps 的策略 复制链接链接已复制到粘贴板!
您可以使用 Policy Generator 生成安装 OpenShift Container Platform GitOps 的策略。OpenShift Container Platform GitOps operator 提供 所有命名空间 安装模式,如下例所示。创建名为 openshift-gitops-subscription.yaml 的 Subscription 清单文件,如下例所示:
要固定到 Operator 的特定版本,您可以添加以下参数和值: spec.startingCSV: openshift-gitops-operator.v<version>。将 <version> 替换为您的首选版本。
需要 PolicyGenerator 配置文件。使用名为 policy-generator-config.yaml 的配置文件来生成策略,以便在所有 OpenShift Container Platform 受管集群上安装 OpenShift Container Platform GitOps。请参见以下示例:
最后所需的文件是 kustomization.yaml,它需要以下配置:
generators: - policy-generator-config.yaml
generators:
- policy-generator-config.yaml
生成的策略可能类似以下带有 PlacementRule 的文件(已弃用):
支持 OpenShift Container Platform 文档中的从清单生成的策略。OpenShift Container Platform 文档中的任何配置指南都可以使用 Policy Generator 应用。
1.6.2. 使用带有 OperatorGroup 的策略依赖项 复制链接链接已复制到粘贴板!
当使用 OperatorGroup 清单安装 Operator 时,OperatorGroup 必须在创建 Subscription 前存在于集群中。使用策略依赖项功能以及 Policy Generator,确保在强制 Subscription 策略前 OperatorGroup 策略兼容。
通过按您想要的顺序列出清单来设置策略依赖项。例如,您可能想要首先创建命名空间策略,然后创建 OperatorGroup,最后再创建 Subscription。
启用 policyDefaults.orderManifests 参数,并在 Policy Generator 配置清单中禁用 policyDefaults.consolidateManifests,以自动设置清单之间的依赖项。
1.7. 为 Argo CD push 模型创建自定义服务帐户 复制链接链接已复制到粘贴板!
通过在中心集群上创建ManagedServiceAccount资源,在托管集群上创建服务帐户。使用ClusterPermission资源向服务帐户授予特定权限。
创建用于 Argo CD push 模型的 customzied 服务帐户包括以下优点:
- 应用程序管理器附加组件在每个受管集群上运行。默认情况下,Argo CD 控制器使用服务帐户 Application Manager 将这些资源推送到受管集群。
- 应用程序管理器服务帐户具有大量权限,因为应用程序订阅附加组件使用应用程序管理器服务在受管集群中部署应用程序。如果您需要一组有限的权限,请不要使用 Application manager 服务帐户。
- 您可以指定希望 Argo CD 推送模型使用的不同服务帐户。当 Argo CD 控制器将资源从集中式 hub 集群推送到受管集群时,您可以使用与默认应用程序管理器不同的服务帐户。通过使用不同的服务帐户,您可以控制授予此服务帐户的权限。
-
服务帐户必须存在于受管集群上。为了方便创建具有相关权限的服务帐户,请在集中式中心集群上使用
ManagedServiceAccount资源和新的ClusterPermission资源。
完成所有以下流程后,您可以为受管服务帐户授予集群权限。具有集群权限,您的受管服务帐户具有在受管集群中部署应用程序资源所需的权限。完成以下步骤:
1.7.1. 创建受管服务帐户 复制链接链接已复制到粘贴板!
集线器上的ManagedServiceAccount自定义资源提供了一种在托管集群上创建ServiceAccount的便捷方法。当在 hub 集群的 <managed_cluster> 命名空间中创建了一个 ManagedServiceAccount 自定义资源后,会在受管集群中创建一个 ServiceAccount。
要创建托管服务帐户,请参阅启用 ManagedServiceAccount 附加组件。
1.7.2. 创建集群权限 复制链接链接已复制到粘贴板!
创建服务帐户后,它不会关联任何权限。要向新服务帐户授予权限,请使用ClusterPermission资源。ClusterPermission资源是在中心托管集群命名空间中创建的。它提供了一种方便的方法来创建角色、在托管集群上集群角色资源,并通过RoleBinding或ClusterRoleBinding资源将它们绑定到服务帐户。
-
要将
<managed-sa-sample>服务帐户权限授予部署到<managed-cluster>上的抵押命名空间的示例抵押应用程序,请创建包含以下内容的 YAML:
-
将 YAML 文件保存到名为
cluster-permission.yaml的文件中。 -
运行
oc apply -f cluster-permission.yaml。 -
示例 &
lt;clusterpermission> 在 mortgage 命名空间中创建一个名为 <clusterpermission-msa-subject-sample> 的角色。如果尚不存在,请创建一个命名空间mortgage。 -
查看在
<managed-cluster>上创建的资源。
创建示例后,& lt;clusterpermission > 会在示例受管集群中创建以下资源:
-
默认命名空间中有一个名为
<clusterpermission-msa-subject-sample>的角色。 -
默认命名空间中有一个名为
<clusterpermission-msa-subject-sample>的RoleBinding,用于将角色绑定到托管服务帐户。 -
抵押命名空间中有一个名为
<clusterpermission-msa-subject-sample>的角色。 -
抵押命名空间中一个名为
<clusterpermission-msa-subject-sample>的RoleBinding,用于将角色绑定到托管服务帐户。 -
一个名为
<clusterpermission-msa-subject-sample>的ClusterRole。 -
一个名为
<clusterpermission-msa-subject-sample>的ClusterRoleBinding,用于将ClusterRole绑定到托管服务帐户。
1.7.3. 使用现有角色创建集群权限 复制链接链接已复制到粘贴板!
当您创建ClusterPermission资源时,您会自动创建新的角色。您仍然可以将ClusterPermission资源与现有角色一起使用。
例如,当您应用以下 YAML 示例时,您将创建一个使用现有ClusterRole 的ClusterPermission资源:
1.7.4. 创建集群权限资源以引用主题 复制链接链接已复制到粘贴板!
如果您创建ClusterPermission资源来引用不同的主题,那么您可以同时处理不同的主题,而不是一次只能处理一个主题。
例如,请参阅以下具有指定主题字段的 YAML:
1.7.5. 在 GitOpsCluster 资源中使用受管服务帐户 复制链接链接已复制到粘贴板!
GitOpsCluster 资源使用放置将所选受管集群导入到 Argo CD 中,包括创建 Argo CD 集群 secret,其中包含用于访问集群的信息。默认情况下,Argo CD 集群 secret 使用应用程序管理器服务帐户来访问受管集群。
-
要更新
GitOpsCluster资源以使用托管服务帐户,请添加带有托管服务帐户名称的ManagedServiceAccountRef属性。 将以下示例保存为
gitops.yaml文件,以创建GitOpsCluster自定义资源:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
运行
oc apply -f gitops.yaml以应用该文件。 进入
openshift-gitops命名空间,并验证是否有新的 Argo CD 集群 secret,名称为 <managed cluster-managed-sa-sample-cluster-secret>。运行以下命令:oc get secrets -n openshift-gitops <managed cluster-managed-sa-sample-cluster-secret>
oc get secrets -n openshift-gitops <managed cluster-managed-sa-sample-cluster-secret>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 请查看以下输出来验证:
NAME TYPE DATA AGE <managed cluster-managed-sa-sample-cluster-secret> Opaque 3 4m2s
NAME TYPE DATA AGE <managed cluster-managed-sa-sample-cluster-secret> Opaque 3 4m2sCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.7.6. 创建 Argo CD 应用程序 复制链接链接已复制到粘贴板!
使用推送模型从 Argo CD 控制台部署 Argo CD 应用程序。Argo CD 应用程序使用受管服务帐户 < managed-sa-sample > 部署。
- 登录到 Argo CD 控制台。
- 单击 Create a new application。
- 选择集群 URL。
-
进入 Argo CD 应用程序,验证它具有给定权限,如角色和集群角色,您要传播到 <
managed cluster>。
1.7.7. 使用策略创建受管服务帐户和集群权限 复制链接链接已复制到粘贴板!
When the GitOpsCluster resource is updated with the `ManagedServiceAccountRef`, each managed cluster in the placement of this GitOpsCluster needs to have the service account. If you have several managed clusters, it becomes tedious for you to create the managed service account and cluster permission for each managed cluster. You can simply this process by using a policy to create the managed service account and cluster permission for all your managed clusters
When the GitOpsCluster resource is updated with the `ManagedServiceAccountRef`, each managed cluster in the placement of this GitOpsCluster needs to have the service account. If you have several managed clusters, it becomes tedious for you to create the managed service account and cluster permission for each managed cluster. You can simply this process by using a policy to create the managed service account and cluster permission for all your managed clusters
当您将ManagedServiceAccount和ClusterPermission资源应用于中心集群时,此策略的位置将绑定到本地集群。在 GitOpsCluster 资源放置中,将这些资源复制到所有受管集群的受管集群。
使用策略创建的ManagedServiceAccount和ClusterPermission资源包含以下属性:
-
更新策略中的
ManagedServiceAccount和ClusterPermission对象模板会导致所有托管集群中的所有ManagedServiceAccount和ClusterPermission资源都更新。 -
直接更新
ManagedServiceAccount和ClusterPermission资源将恢复到原始状态,因为它是由策略强制执行的。 如果 GitOpsCluster 放置更改的放置决定,策略会管理受管集群命名空间中资源的创建和删除。
- 要为 YAML 创建策略以创建受管服务帐户和集群权限,请使用以下内容创建一个 YAML:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将 YAML 文件保存到名为
policy.yaml的文件中。 -
运行
oc apply -f policy.yaml。 -
在策略的对象模板中,它遍历与 GitOpsCluster 关联的放置的放置决策,并应用以下
ManagedServiceAccount和ClusterPermission模板:
1.8. 部署 Red Hat OpenShift GitOps 实例(技术预览) 复制链接链接已复制到粘贴板!
使用 GitOps 附加组件,您可以为 ArgoCD pull 模型管理所有类型的 Red Hat OpenShift Container Platform 和非 OpenShift Container Platform 受管集群上的 OpenShift GitOps 实例的生命周期。
当您在 hub 集群上在集群命名空间中创建 gitops-addon ManagedClusterAddon 附加组件时,GitOps 附加组件将部署到管理安装、升级和删除 OpenShift GitOps 实例的受管集群中。
GitOps 附加组件部署的 OpenShift GitOps 实例主要用于 Red Hat Advanced Cluster Management ArgoCD pull 模型。因此,您只能访问受管集群中安装的以下组件:
- OpenShift GitOps 应用程序控制器
- OpenShift GitOps repo server
- OpenShift GitOps Redis server
要为 ArgoCD pull 模型部署 OpenShift GitOps 实例,请完成以下部分:
1.8.1. 在受管集群中安装 OpenShift GitOps 实例 复制链接链接已复制到粘贴板!
当您将 Red Hat Advanced Cluster Management 升级到其最新版本时,所有受管集群上的 OpenShift GitOps 实例会自动升级,并与 GitOps 附加组件捆绑。
要在受管集群中安装 OpenShift GitOps 实例,请完成以下步骤:
在 hub 集群中,在所选集群命名空间中应用以下 YAML 示例来创建
managedClusterAddon资源:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证
gitops-addon 控制器是否在受管集群中运行:oc get pods -n open-cluster-management-agent-addon
oc get pods -n open-cluster-management-agent-addonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证 OpenShift GitOps operator 是否在
openshift-gitops-operator命名空间中运行:oc get pods -n openshift-gitops-operator
oc get pods -n openshift-gitops-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证 OpenShift GitOps 实例是否在
openshift-gitops命名空间中运行:oc get pods -n openshift-gitops
oc get pods -n openshift-gitopsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果 OpenShift GitOps 实例失败,请检查以下位置的日志,具体取决于您需要检查的故障:
进入受管集群并运行以下命令来检查 GitOps 附加组件控制器的日志:
oc logs -n open-cluster-management-agent-addon -l app=gitops-addon
oc logs -n open-cluster-management-agent-addon -l app=gitops-addonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 进入受管集群并运行以下命令来检查 OpenShift Container Platform GitOps operator Manager 的日志:
oc get pods -n openshift-gitops-operator
oc get pods -n openshift-gitops-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 进入受管集群并运行以下命令来检查 OpenShift Container Platform GitOps 组件的日志:
oc get pods -n openshift-gitops
oc get pods -n openshift-gitopsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.8.2. 升级 OpenShift GitOps 实例和 Operator 复制链接链接已复制到粘贴板!
如果要升级到不是当前版本的版本,您必须手动将 OpenShift GitOps operator 及其实例升级到您想要的版本。
如果将 AddOnDeploymentConfig 附加到 gitops-addon ClusterManagementAddon,则指定的镜像标签始终应用到 OpenShift GitOps operator 及其实例。Operator 及其实例的最新版本不会自动更新。要应用最新版本,请在默认 AddOnDeploymentConfig 中删除自定义镜像设置 GITOPS_OPERATOR_IMAGE, GITOPS_IMAGE, REDIS_IMAGE。
要升级 OpenShift GitOps 实例和 Operator,请完成以下步骤:
通过应用以下 YAML 示例来创建
AddOnDeploymentConfig自定义镜像:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 添加您想要的任何命名空间。
- 2
- 指定 OpenShift GitOps Operator 的新镜像和标签。例如:
registry.redhat.io/openshift-gitops-1/gitops-rhel8-operator@sha256:73f13a5587bbfbea5a64bd3507120eb83b6be85088139c6d65a9aa9cd56e186a。 - 3
- 指定 OpenShift GitOps 实例的新镜像和标签。例如:
registry.redhat.io/openshift-gitops-1/argocd-rhel8@sha256:706d5c99715eece77616135da2fbf90863b7aef17fd64ab03bf7dd20877490ec。 - 4
- 指定 OpenShift GitOps Redis 的新镜像和标签。例如:
registry.redhat.io/rhel8/redis-6@sha256:a848cc4edb4405846c673187dd68ce66c328dd1ad42f193f5737288c7971399d。
通过应用以下 YAML 示例,将
AddOnDeploymentConfig连接到gitops-addon ClusterManagementAddon,方法是指定addondeploymentconfigs资源的defaultConfig名称和命名空间:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
AddOnDeploymentConfig中指定的命名空间。
- 在受管集群中,验证 OpenShift GitOps operator Pod 和实例 pod 是否使用新的镜像标签重启。
如果 OpenShift GitOps 实例失败,请检查以下位置的日志,具体取决于您需要检查的故障:
进入受管集群并运行以下命令来检查 GitOps 附加组件控制器的日志:
oc logs -n open-cluster-management-agent-addon -l app=gitops-addon
oc logs -n open-cluster-management-agent-addon -l app=gitops-addonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 进入受管集群并运行以下命令来检查 OpenShift Container Platform GitOps operator Manager 的日志:
oc get pods -n openshift-gitops-operator
oc get pods -n openshift-gitops-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 进入受管集群并运行以下命令来检查 OpenShift Container Platform GitOps 组件的日志:
oc get pods -n openshift-gitops
oc get pods -n openshift-gitopsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.8.3. 删除 OpenShift GitOps 实例和 Operator 复制链接链接已复制到粘贴板!
即使 OpenShift GitOps operator 被删除后,所有依赖 ArgoCD 自定义资源定义(CRD)仍会保留,确保所有现有 ArgoCD 应用程序不会在 Operator 删除时被删除。
您可以将 OpenShift GitOps Operator 重新安装到同一默认命名空间中。始终将 OpenShift GitOps Operator 安装到 default 命名空间 openshift-gitops-operator 中。无论 Operator 安装命名空间是什么,OpenShift GitOps operator 会监视任何命名空间中的 ArgoCD 资源。
要删除 OpenShift GitOps 实例和 Operator,请完成以下步骤:
通过应用以下 YAML 示例来删除 OpenShift GitOps 实例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 这是您在创建连接到
gitop-addonClusterManagementAddOn的默认AddOnDeploymentConfig时指定的命名空间。
通过应用以下 YAML 示例来删除 OpenShift GitOps operator:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 这是您在创建连接到
gitop-addonClusterManagementAddOn的默认AddOnDeploymentConfig时指定的命名空间。
1.8.4. 在任意命名空间中协调 ArgoCD 应用程序 复制链接链接已复制到粘贴板!
您可以配置 OpenShift GitOps 实例,以协调任意命名空间中的 ArgoCD 应用程序。
要协调任何命名空间中的 ArgoCD 应用程序,请完成以下步骤:
在链接的默认
AddOnDeploymentConfig中,通过应用以下 YAML 示例来指定自定义变量RECONCILE_SCOPE到All-Namespaces:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.8.5. 在另一个命名空间中安装 OpenShift GitOps 实例 复制链接链接已复制到粘贴板!
默认情况下,OpenShift GitOps 实例安装在 openshift-gitops 命名空间中。如果要在另一个命名空间中安装 OpenShift GitOps 实例,请完成以下步骤:
通过应用以下 YAML 示例来删除 OpenShift GitOps 实例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 这是您在创建连接到
gitop-addonClusterManagementAddOn的默认AddOnDeploymentConfig时指定的命名空间。
运行以下命令验证 OpenShift GitOps 实例是否已移除:
oc get pods -n openshift-gitops
oc get pods -n openshift-gitopsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 通过应用以下 YAML 示例,将 OpenShift GitOps 实例安装到另一个命名空间中:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 这是您在创建连接到
gitop-addonClusterManagementAddOn的默认AddOnDeploymentConfig时指定的命名空间。
运行以下命令,验证 OpenShift GitOps 实例是否在新命名空间中应用:
oc get pods -n openshift-gitops-2
oc get pods -n openshift-gitops-2Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.9. 使用ApplicationSet资源实现渐进式推出策略(技术预览) 复制链接链接已复制到粘贴板!
通过对集群群中的应用程序实施推送和拉取模型的渐进式推广策略,您将拥有一个基于 Red Hat OpenShift GitOps 的流程,可以在整个集群群中安全地进行更改。通过推出策略,您可以协调不同集群之间的分阶段更新。此外,您还可以在标签定义的组中推广变更,例如开发和产品集群。
当您将ApplicationSet资源用于应用程序的渐进式推广策略时, ApplicationSet控制器会将应用程序的集群组织成组。控制器通过 Argo CD 健康周期一次处理一个组,然后仅在健康状态时才使该组可用。
要了解有关使用ApplicationSet资源实施渐进式推出策略的更多信息,请完成以下部分:
1.9.1. 使用ApplicationSet资源启用渐进式推出策略 复制链接链接已复制到粘贴板!
要使用ApplicationSet资源启用渐进式推出策略,请完成以下步骤:
-
在您的中心集群上,更新
openshift-gitops命名空间中的 OpenShift GitOps 操作员实例配置。 通过运行以下命令启用
ApplicationSet资源的渐进式同步:oc -n openshift-gitops patch argocd openshift-gitops --type='merge' -p '{"spec":{"applicationSet":{"extraCommandArgs":["--enable-progressive-syncs"]}}}'oc -n openshift-gitops patch argocd openshift-gitops --type='merge' -p '{"spec":{"applicationSet":{"extraCommandArgs":["--enable-progressive-syncs"]}}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
在
openshift-gitops命名空间中重新启动openshift-gitops-applicationset-controller部署。 通过运行以下命令应用更新的 OpenShift GitOps 操作员实例配置来创建新的部署:
oc -n openshift-gitops rollout restart deployment openshift-gitops-applicationset-controller
oc -n openshift-gitops rollout restart deployment openshift-gitops-applicationset-controllerCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.9.2. 了解渐进式推出策略的示例ApplicationSet资源 复制链接链接已复制到粘贴板!
通过查看策略规范来了解具有实现渐进式推出策略的 Argo CD 拉取模型的示例ApplicationSet 。此 YAML 激活渐进式推出策略。通过在中心集群上添加策略参数部分,您的集群可以完全同时更新,而不是单独更新。
例如,查看以下ApplicationSet资源中如何定义策略:
- 1
- 使用
preserveFields参数列出需要被ApplicationSet控制器忽略的标签。您可以手动应用所需的标签,例如envLabel=env-qa。如果没有此字段,ApplicationSet控制器将覆盖或删除模板中未定义的标签。
1.9.3. 了解使用渐进式推广策略的应用程序的标签 复制链接链接已复制到粘贴板!
推出策略用于通过 Argo CD 健康周期一次处理一组应用程序。控制器通过匹配您在应用程序对象上设置的标签来组织这些应用程序组。
确保有一个唯一的标签来指定每个使用推出策略的应用程序所需的升级顺序。请参见以下示例:
例如,您可以通过在 hub 集群上运行以下命令为您的应用程序赋予唯一的标签:
oc -n openshift-gitops label application/cluster1-guestbook-app envLabel=env-dev
oc -n openshift-gitops label application/cluster1-guestbook-app envLabel=env-devCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果要指定一个应用程序进行质量保证,请运行以下命令:
oc -n openshift-gitops label application/cluster2-guestbook-app envLabel=env-qa
oc -n openshift-gitops label application/cluster2-guestbook-app envLabel=env-qaCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 如果要为产品指定应用程序组,请运行以下命令:
oc -n openshift-gitops label application/cluster3-guestbook-app envLabel=env-prod
oc -n openshift-gitops label application/cluster3-guestbook-app envLabel=env-prod
1.9.4. 了解使用渐进式推出策略的 Git 存储库的更改 复制链接链接已复制到粘贴板!
为了在您的集群上启动ApplicationSet资源的渐进式推出策略,Argo CD 应用程序会检查您的 Git 存储库中是否有已提交的更改。当有承诺的变更时,逐步推出策略就开始了。
当 Argo CD 启动推出策略时, ApplicationSet控制器会检测具有OutOfSync状态的应用程序并安排应用程序分阶段推出。根据您用于应用程序组的标签, ApplicationSet控制器使用env-dev应用程序组启动第一个RollingSync步骤。
从 Argo CD 健康周期中,您可以观察每个应用程序组从OutOfSync 状态转变为Healthy状态。在所有应用程序组都具有健康状态后, ApplicationSet控制器会将应用程序组与env-qa标签同步,然后同步带有env-prod标签的应用程序组。在您的最后一个env-prod应用程序组处于“健康”状态后,渐进式推出策略将自动完成并在您的集群上完全运行其策略。