2.6. 在 Argo CD 中启用基于注解的资源跟踪
Red Hat OpenShift GitOps Operator 通过改进 Argo CD 中的基于注解的资源跟踪来增强多实例支持。在以前的版本中,多个 Argo CD 实例不会正确区分具有相同应用程序名称的资源,这只依赖于基于标签的传统跟踪。在这个版本中,您可以通过为每个实例分配一个唯一的 installationID ID 来充分利用基于注解的跟踪。这可防止资源冲突,消除了无限同步循环,并启用安全并行操作。
您可以使用 OpenShift Container Platform Web 控制台执行以下操作:
- 设置多个 Argo CD 实例
- 将基于注解的跟踪与命名空间关联来配置基于注解的跟踪
- 验证部署
-
每个 Argo CD 实例都必须具有唯一的
installationIDID,以防止资源跟踪冲突。 - 确保命名空间被正确标记,因为它允许每个 Argo CD 实例仅管理预期的资源。
-
如果多个实例具有相同的名称的应用程序,请将资源跟踪设置为
annotation+label。 - 如果出现问题,请检查 Argo CD Application 状态并在 OpenShift Container Platform Web 控制台中记录。
2.6.1. 在多个 Argo CD 实例中配置基于注解的跟踪 复制链接链接已复制到粘贴板!
您可以在多个 Argo CD 实例中配置基于注解的跟踪。
此流程使用以下示例值:
-
repoURL:https://github.com/redhat-developer/gitops-operator -
server:https://kubernetes.default.svc
执行这些步骤时,将 example 值替换为实际值。
先决条件
- 以管理员身份登录到 OpenShift Container Platform 集群。
- 您已在 OpenShift Container Platform 集群上安装了 Red Hat OpenShift GitOps Operator。
流程
- 登陆到 OpenShift Container Platform Web 控制台。
在 Web 控制台的 Administrator 视角中,点 Operators
Installed Operators。 - 在 Project 列表中,创建或选择您要安装用户定义的 Argo CD 实例的项目。
- 从安装的 Operator 列表中选择 Red Hat OpenShift GitOps,然后点击 Argo CD 选项卡。
要创建两个 Argo CD 实例,点 Create ArgoCD 并创建类似以下示例的两个 YAML 文件:
带有注解标签的第一个 Argo CD 实例示例
apiVersion: argoproj.io/v1beta1 kind: ArgoCD metadata: name: argocd-instance-demo-11 namespace: argocd-test-demo-12 spec: installationID: "instance-demo-1"3 resourceTrackingMethod: "annotation+label"带有注解标签的第二个 Argo CD 实例示例
apiVersion: argoproj.io/v1beta1 kind: ArgoCD metadata: name: argocd-instance-demo-21 namespace: argocd-test-demo-22 spec: installationID: "instance-demo-2"3 resourceTrackingMethod: "annotation+label"配置和标记目标命名空间,将命名空间与其 Argo CD 实例关联。
-
导航至 Administration
Namespaces。 -
为应用程序部署、
app-ns-1和app-ns-2创建命名空间。 将每个命名空间与其对应的 Argo CD 实例关联:
运行以下命令,将
app-ns-1命名空间与argocd-test-demo-1Argo CD 实例关联:示例命令
$ oc label namespace app-ns-1 argocd.argoproj.io/managed-by=argocd-test-demo-1运行以下命令,将
app-ns-2命名空间与argocd-test-demo-2Argo CD 实例关联:示例命令
$ oc label namespace app-ns-2 argocd.argoproj.io/managed-by=argocd-test-demo-2
-
导航至 Administration
在 Argo CD 中创建两个应用程序。
-
在 OpenShift Container Platform Web 控制台中,进入 Operators
Installed Operators OpenShift GitOps Operator。 - 选择 Argo CD 并导航到 Applications 选项卡。
- 点 Create Application。
输入以下 YAML 片段在 Argo CD 中创建两个应用程序。
使用 Argo CD 的第一个应用程序示例
apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: sprint-petclinic1 namespace: argocd-test-demo-12 spec: project: default source: repoURL: https://github.com/redhat-developer/gitops-operator path: test/examples/nginx targetRevision: HEAD destination: server: https://kubernetes.default.svc namespace: app-ns-1 syncPolicy: automated: {}使用 Argo CD 的第二个应用程序示例
apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: sprint-petclinic1 namespace: argocd-test-demo-22 spec: project: default source: repoURL: https://github.com/redhat-developer/gitops-operator path: test/examples/nginx targetRevision: HEAD destination: server: https://kubernetes.default.svc namespace: app-ns-2 syncPolicy: automated: {}
-
在 OpenShift Container Platform Web 控制台中,进入 Operators
验证
-
在 OpenShift Container Platform Web 控制台中进入到 Workloads
Pods。 -
确保 Argo CD 实例的 pod
argocd-instance-demo-1和argocd-instance-demo-2正在运行。 - 在 Argo CD Applications YAML 选项卡中检查应用程序同步状态。
-
进入
argocd-test-demo-1和argocd-test-demo-2命名空间中的argocd-cm配置映射,并验证installationID对象是否已成功配置。