第 2 章 启用 Argo CD 插件
您可以使用 Argo CD 插件来视觉化 OpenShift GitOps 中的持续交付(CD)工作流。此插件提供对应用程序、部署详情、提交消息、提交者、提升到环境和部署历史记录的容器镜像的可视化概述。
先决条件
在
app-config.yaml
configmap 中添加 Argo CD 实例信息,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意避免在
url
中使用尾部斜杠,因为它可能会导致意外行为。将以下注解添加到实体
catalog-info.yaml
文件中,以识别 Argo CD 应用程序。annotations: ... # The label that Argo CD uses to fetch all the applications. The format to be used is label.key=label.value. For example, rht-gitops.com/janus-argocd=quarkus-app. argocd/app-selector: '${ARGOCD_LABEL_SELECTOR}'
annotations: ... # The label that Argo CD uses to fetch all the applications. The format to be used is label.key=label.value. For example, rht-gitops.com/janus-argocd=quarkus-app. argocd/app-selector: '${ARGOCD_LABEL_SELECTOR}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow (可选)在实体的
catalog-info.yaml
文件中添加以下注解,以在 Argo CD 实例间切换,如下例所示:annotations: ... # The Argo CD instance name used in `app-config.yaml`. argocd/instance-name: '${ARGOCD_INSTANCE}'
annotations: ... # The Argo CD instance name used in `app-config.yaml`. argocd/instance-name: '${ARGOCD_INSTANCE}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果没有设置此注解,Argo CD 插件默认为
app-config.yaml
中配置的第一个 Argo CD 实例。
流程
将以下内容添加到 dynamic-plugins ConfigMap 中以启用 Argo CD 插件。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.1. 启用 Argo CD Rollouts 复制链接链接已复制到粘贴板!
可选的 Argo CD Rollouts 功能通过为应用程序提供高级部署策略(如蓝绿和 canary 部署)来增强 Kubernetes。当集成到 backstage Kubernetes 插件时,它允许开发人员和运维团队在 Backstage 接口中无缝视觉化和管理 Argo CD Rollouts。
先决条件
已安装并配置 Backstage Kubernetes 插件(
@backstage/plugin-kubernetes
)。- 要在 Backstage 中安装和配置 Kubernetes 插件,请参阅 安装和配置指南。https://backstage.io/docs/features/kubernetes/installation/
-
您可以使用所需权限访问 Kubernetes 集群,以创建和管理自定义资源和
ClusterRole
。 -
Kubernetes 集群安装了
argoproj.io
组资源(如 Rollouts 和 AnalysisRuns)。
流程
在 Backstage 实例的
app-config.yaml
文件中,在kubernetes
配置下添加以下customResources
组件以启用 Argo Rollouts 和 AnalysisRuns:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为自定义资源授予
ClusterRole
权限。注意-
如果已经配置了 Backstage Kubernetes 插件,则可能已经授予 Rollouts 和 AnalysisRuns 的
ClusterRole
权限。 -
使用 准备的清单 为 Kubernetes 和 ArgoCD 插件提供只读
ClusterRole
访问权限。
-
如果没有授予
ClusterRole
权限,请使用以下 YAML 清单来创建ClusterRole
:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
kubectl
将清单应用到集群:kubectl apply -f <your-clusterrole-file>.yaml
kubectl apply -f <your-clusterrole-file>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
确保访问集群的
ServiceAccount
已分配此ClusterRole
。
-
如果已经配置了 Backstage Kubernetes 插件,则可能已经授予 Rollouts 和 AnalysisRuns 的
为
catalog-info.yaml
添加注解来标识 Backstage 的 Kubernetes 资源。通过实体 ID 识别资源:
annotations: ... backstage.io/kubernetes-id: <BACKSTAGE_ENTITY_NAME>
annotations: ... backstage.io/kubernetes-id: <BACKSTAGE_ENTITY_NAME>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow (可选) 用于通过命名空间识别资源:
annotations: ... backstage.io/kubernetes-namespace: <RESOURCE_NAMESPACE>
annotations: ... backstage.io/kubernetes-namespace: <RESOURCE_NAMESPACE>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要使用自定义标签选择器,它覆盖由实体 ID 或命名空间的资源标识:
annotations: ... backstage.io/kubernetes-label-selector: 'app=my-app,component=front-end'
annotations: ... backstage.io/kubernetes-label-selector: 'app=my-app,component=front-end'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意确保指定 Kubernetes 资源上的
backstage.io/kubernetes-label-selector
中声明的标签。此注解会覆盖基于实体或基于命名空间的识别注解,如backstage.io/kubernetes-id
和backstage.io/kubernetes-namespace
。
为 Kubernetes 资源添加标签,以启用 Backstage 来查找适当的 Kubernetes 资源。
Backstage Kubernetes 插件标签:添加此标签以将资源映射到特定的 Backstage 实体。
labels: ... backstage.io/kubernetes-id: <BACKSTAGE_ENTITY_NAME>
labels: ... backstage.io/kubernetes-id: <BACKSTAGE_ENTITY_NAME>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow GitOps 应用程序映射:添加此标签以将 Argo CD Rollouts 映射到特定的 GitOps 应用程序
labels: ... app.kubernetes.io/instance: <GITOPS_APPLICATION_NAME>
labels: ... app.kubernetes.io/instance: <GITOPS_APPLICATION_NAME>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
注意如果使用标签选择器注解(backstage.io/kubernetes-label-selector),请确保资源上存在指定的标签。标签选择器将覆盖其他注解,如 kubernetes-id 或 kubernetes-namespace。
验证
- 将更新的配置推送到 GitOps 存储库,以触发推出部署。
- 打开 Red Hat Developer Hub 界面并导航到您配置的实体。
- 选择 CD 选项卡,然后选择 GitOps 应用程序。侧边面板将打开。
在侧面板的 Resources 表中,验证是否显示以下资源:
- rollouts
- AnalysisRuns (可选)
扩展推出部署资源并查看以下详情:
- Revisions 行显示不同推出部署版本的流量分布详情。
- Analysis Runs 行显示评估推出成功分析任务的状态。