2.2. 启用 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>.yamlCopy 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 行显示评估推出成功分析任务的状态。