第 2 章 启用 Argo CD 插件
您可以使用 Argo CD 插件来视觉化 OpenShift GitOps 中的持续交付(CD)工作流。此插件提供对应用程序、部署详情、提交消息、提交者、提升到环境和部署历史记录的容器镜像的可视化概述。
先决条件
在
app-config.yamlconfigmap 中添加 Argo CD 实例信息,如下例所示:argocd: appLocatorMethods: - type: 'config' instances: - name: argoInstance1 url: https://argoInstance1.com username: ${ARGOCD_USERNAME} password: ${ARGOCD_PASSWORD} - name: argoInstance2 url: https://argoInstance2.com username: ${ARGOCD_USERNAME} password: ${ARGOCD_PASSWORD}注意避免在
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}'(可选)在实体的
catalog-info.yaml文件中添加以下注解,以在 Argo CD 实例间切换,如下例所示:annotations: ... # The Argo CD instance name used in `app-config.yaml`. argocd/instance-name: '${ARGOCD_INSTANCE}'注意如果没有设置此注解,Argo CD 插件默认为
app-config.yaml中配置的第一个 Argo CD 实例。
流程
将以下内容添加到 dynamic-plugins ConfigMap 中以启用 Argo CD 插件。
global: dynamic: includes: - dynamic-plugins.default.yaml plugins: - package: ./dynamic-plugins/dist/roadiehq-backstage-plugin-argo-cd-backend-dynamic disabled: false - package: ./dynamic-plugins/dist/backstage-community-plugin-redhat-argocd disabled: false
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:kubernetes: ... customResources: - group: 'argoproj.io' apiVersion: 'v1alpha1' plural: 'Rollouts' - group: 'argoproj.io' apiVersion: 'v1alpha1' plural: 'analysisruns'为自定义资源授予
ClusterRole权限。注意-
如果已经配置了 Backstage Kubernetes 插件,则可能已经授予 Rollouts 和 AnalysisRuns 的
ClusterRole权限。 -
使用 准备的清单 为 Kubernetes 和 ArgoCD 插件提供只读
ClusterRole访问权限。
-
如果没有授予
ClusterRole权限,请使用以下 YAML 清单来创建ClusterRole:
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: backstage-read-only rules: - apiGroups: - argoproj.io resources: - rollouts - analysisruns verbs: - get - list使用
kubectl将清单应用到集群:kubectl apply -f <your-clusterrole-file>.yaml-
确保访问集群的
ServiceAccount已分配此ClusterRole。
-
如果已经配置了 Backstage Kubernetes 插件,则可能已经授予 Rollouts 和 AnalysisRuns 的
为
catalog-info.yaml添加注解来标识 Backstage 的 Kubernetes 资源。通过实体 ID 识别资源:
annotations: ... backstage.io/kubernetes-id: <BACKSTAGE_ENTITY_NAME>(可选) 用于通过命名空间识别资源:
annotations: ... backstage.io/kubernetes-namespace: <RESOURCE_NAMESPACE>要使用自定义标签选择器,它覆盖由实体 ID 或命名空间的资源标识:
annotations: ... backstage.io/kubernetes-label-selector: 'app=my-app,component=front-end'注意确保指定 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>GitOps 应用程序映射:添加此标签以将 Argo CD Rollouts 映射到特定的 GitOps 应用程序
labels: ... app.kubernetes.io/instance: <GITOPS_APPLICATION_NAME>
注意如果使用标签选择器注解(backstage.io/kubernetes-label-selector),请确保资源上存在指定的标签。标签选择器将覆盖其他注解,如 kubernetes-id 或 kubernetes-namespace。
验证
- 将更新的配置推送到 GitOps 存储库,以触发推出部署。
- 打开 Red Hat Developer Hub 界面并导航到您配置的实体。
- 选择 CD 选项卡,然后选择 GitOps 应用程序。侧边面板将打开。
在侧面板的 Resources 表中,验证是否显示以下资源:
- rollouts
- AnalysisRuns (可选)
扩展推出部署资源并查看以下详情:
- Revisions 行显示不同推出部署版本的流量分布详情。
- Analysis Runs 行显示评估推出成功分析任务的状态。