第 2 章 启用 Argo CD 插件


您可以使用 Argo CD 插件来视觉化 OpenShift GitOps 中的持续交付(CD)工作流。此插件提供对应用程序、部署详情、提交消息、提交者、提升到环境和部署历史记录的容器镜像的可视化概述。

先决条件

  • app-config.yaml configmap 中添加 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}
    Copy to Clipboard Toggle word wrap
    注意

    避免在 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}'
    Copy to Clipboard Toggle word wrap
  • (可选)在实体的 catalog-info.yaml 文件中添加以下注解,以在 Argo CD 实例间切换,如下例所示:

     annotations:
       ...
        # The Argo CD instance name used in `app-config.yaml`.
    
        argocd/instance-name: '${ARGOCD_INSTANCE}'
    Copy to Clipboard Toggle word wrap
    注意

    如果没有设置此注解,Argo CD 插件默认为 app-config.yaml 中配置的第一个 Argo CD 实例。

流程

  1. 将以下内容添加到 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
    Copy to Clipboard Toggle word wrap

2.1. 启用 Argo CD Rollouts

可选的 Argo CD Rollouts 功能通过为应用程序提供高级部署策略(如蓝绿和 canary 部署)来增强 Kubernetes。当集成到 backstage Kubernetes 插件时,它允许开发人员和运维团队在 Backstage 接口中无缝视觉化和管理 Argo CD Rollouts。

先决条件

  • 已安装并配置 Backstage Kubernetes 插件(@backstage/plugin-kubernetes)。

  • 您可以使用所需权限访问 Kubernetes 集群,以创建和管理自定义资源和 ClusterRole
  • Kubernetes 集群安装了 argoproj.io 组资源(如 Rollouts 和 AnalysisRuns)。

流程

  1. 在 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'
    Copy to Clipboard Toggle word wrap
  2. 为自定义资源授予 ClusterRole 权限。

    注意
    • 如果已经配置了 Backstage Kubernetes 插件,则可能已经授予 Rollouts 和 AnalysisRuns 的 ClusterRole 权限。
    • 使用 准备的清单 为 Kubernetes 和 ArgoCD 插件提供只读 ClusterRole 访问权限。
    1. 如果没有授予 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
    Copy to Clipboard Toggle word wrap
    1. 使用 kubectl 将清单应用到集群:

      kubectl apply -f <your-clusterrole-file>.yaml
      Copy to Clipboard Toggle word wrap
    2. 确保访问集群的 ServiceAccount 已分配此 ClusterRole
  3. catalog-info.yaml 添加注解来标识 Backstage 的 Kubernetes 资源。

    1. 通过实体 ID 识别资源:

      annotations:
        ...
        backstage.io/kubernetes-id: <BACKSTAGE_ENTITY_NAME>
      Copy to Clipboard Toggle word wrap
    2. (可选) 用于通过命名空间识别资源:

      annotations:
        ...
        backstage.io/kubernetes-namespace: <RESOURCE_NAMESPACE>
      Copy to Clipboard Toggle word wrap
    3. 要使用自定义标签选择器,它覆盖由实体 ID 或命名空间的资源标识:

      annotations:
        ...
        backstage.io/kubernetes-label-selector: 'app=my-app,component=front-end'
      Copy to Clipboard Toggle word wrap
      注意

      确保指定 Kubernetes 资源上的 backstage.io/kubernetes-label-selector 中声明的标签。此注解会覆盖基于实体或基于命名空间的识别注解,如 backstage.io/kubernetes-idbackstage.io/kubernetes-namespace

  4. 为 Kubernetes 资源添加标签,以启用 Backstage 来查找适当的 Kubernetes 资源。

    1. Backstage Kubernetes 插件标签:添加此标签以将资源映射到特定的 Backstage 实体。

      labels:
        ...
        backstage.io/kubernetes-id: <BACKSTAGE_ENTITY_NAME>
      Copy to Clipboard Toggle word wrap
    2. GitOps 应用程序映射:添加此标签以将 Argo CD Rollouts 映射到特定的 GitOps 应用程序

      labels:
        ...
        app.kubernetes.io/instance: <GITOPS_APPLICATION_NAME>
      Copy to Clipboard Toggle word wrap
    注意

    如果使用标签选择器注解(backstage.io/kubernetes-label-selector),请确保资源上存在指定的标签。标签选择器将覆盖其他注解,如 kubernetes-id 或 kubernetes-namespace。

验证

  1. 将更新的配置推送到 GitOps 存储库,以触发推出部署。
  2. 打开 Red Hat Developer Hub 界面并导航到您配置的实体。
  3. 选择 CD 选项卡,然后选择 GitOps 应用程序。侧边面板将打开。
  4. 在侧面板的 Resources 表中,验证是否显示以下资源:

    • rollouts
    • AnalysisRuns (可选)
  5. 扩展推出部署资源并查看以下详情:

    • Revisions 行显示不同推出部署版本的流量分布详情。
    • Analysis Runs 行显示评估推出成功分析任务的状态。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat