Backstage 的 ArgoCD 插件
第 1 章 Backstage 的 ArgoCD 插件
ArgoCD 插件代表 Backstage Catalog 中应用程序的当前状态。
1.1. 对于管理员
1.1.1. 安装
用于 Backstage (RHPIB)软件包的红帽插件托管在单独的 NPM registry 中,由红帽维护。要使用这些软件包,您必须调整 NPM 配置来拉取 @redhat
有范围的软件包:
# update your .npmrc or .yarnrc file yarn config set "@redhat:registry" https://npm.registry.redhat.com # then pull a package yarn add @redhat/backstage-plugin-quay
如需更多信息,请参阅 npm 文档。
创建 .npmrc
文件可确保所有软件包都限定在 @redhat
下,并从 红帽的 NPM registry 获取,而其余依赖项仍来自其他 registry。
前提条件
- 您的 Backstage 应用程序已安装并部署。
流程
在
backstage/packages/app
项目中,将 ArgoCD 插件添加为package.json
依赖项,如下所示:cd packages/app yarn add @redhat/backstage-plugin-argo-cd
在根目录中的
app-config.yaml
文件中,将argo-cd
添加到 proxy 对象中,如下所示:proxy: ... '/argocd/api': # url to the api of your hosted argoCD instance target: https://159.65.209.132/api/v1/ changeOrigin: true # this line is required if your hosted argoCD instance has self-signed certificate secure: false headers: Cookie: $env: ARGOCD_AUTH_TOKEN # optional: this will link to your argoCD web UI for each argoCD application argocd: baseUrl: https://my-argocd-web-ui.com
另外,您还可以在前面的代码中为 ArgoCD Web UI 添加基本 URL。
使用以下代码将 ArgoCD 插件添加到插件列表中:
// packages/app/src/plugins.ts export { argocdPlugin } from '@redhat/backstage-plugin-argo-cd';
将 ArgoCD 插件添加到 ENT
itityPage.tsx
文件中,如下所示:// packages/app/src/components/catalog/EntityPage.tsx import { EntityArgoCDHistoryCard, isArgocdAvailable, } from '@redhat/backstage-plugin-argo-cd'; const overviewContent = ( <Grid container spacing={3} alignItems="stretch"> ... <EntitySwitch> <EntitySwitch.Case if={e => Boolean(isArgocdAvailable(e))}> <Grid item sm={6}> <EntityArgoCDHistoryCard /> </Grid> </EntitySwitch.Case> </EntitySwitch> ... </Grid> );
要在 Backstage 中为组件使用 ArgoCD 插件,请在组件的 YAML 配置文件中添加注解:
argocd/app-name: <app-name>
要为组件选择多个 ArgoCD 应用程序,请使用标签,如下所示:
argocd/app-selector: <app-selector>
注意您可以对组件使用注解或标签。
-
使用用户名和密码向 ArgoCD 的
/session
端点发送 GET HTTP 请求,以获取您的身份验证密钥。 将获取的身份验证密钥添加到 Backstage 后端服务器的环境变量中,如下所示:
ARGOCD_AUTH_TOKEN="argocd.token=<auth-token>"
1.2. 支持 backstage 中的多个 ArgoCD 实例
在 Backstage 中支持多个 ArgoCD 实例有两个选项,包括:
- 为每个 ArgoCD 实例添加代理配置
- 使用 ArgoCD 后端插件
选项 1:为每个 ArgoCD 实例添加代理配置
要创建从不同 ArgoCD 实例获取数据的多个组件,请为每个实例添加代理配置,如下例所示:
proxy: ... '/argocd/api': target: https://<someAddress>/api/v1/ changeOrigin: true secure: false headers: Cookie: $env: ARGOCD_AUTH_TOKEN '/argocd/api2': target: https://<otherAddress>/api/v1/ changeOrigin: true secure: false headers: Cookie: $env: ARGOCD_AUTH_TOKEN2
将所需的身份验证令牌添加到环境变量中,如
ARGOCD_AUTH_TOKEN2
。添加身份验证令牌后,将 URL 添加到以下组件定义注解中的所需代理路径中:
argocd/proxy-url: '/argocd/api2'
argocd/proxy-url
注解默认为'/argocd/api'
。因此,如果存在单一代理配置,则不需要argocd/proxy-url
。
选项 2:使用 ArgoCD 后端插件
要创建从不同 ArgoCD 实例获取数据的多个组件,请通过将以下配置添加到
app-config.yaml
文件中来动态设置 ArgoCD 实例 URL:argocd: username: ${ARGOCD_USERNAME} password: ${ARGOCD_PASSWORD} waitCycles: 25 appLocatorMethods: - type: 'config' instances: - name: argoInstance1 url: https://argoInstance1.com token: ${ARGOCD_AUTH_TOKEN} # optional - name: argoInstance2 url: https://argoInstance2.com # dedicated username/password for this instance username: ${ARGOCD_USERNAME_INSTANCE_2} # optional password: ${ARGOCD_PASSWORD_INSTANCE_2} # optional
在删除 ArgoCD 项目和应用程序之间创建一个循环,以检查删除项目前发生的应用程序。如果 waitCycles 设为 25,则循环在出错前可能持续 75 秒。
使用前面的配置,ArgoCD 插件获取应用程序要部署到的 ArgoCD 实例,并使用 ArgoCD 后端插件(
backstage-plugin-argo-cd-backend
)来根据以下映射访问每个 ArgoCD 实例:将所需的身份验证令牌添加到环境变量中,如 argocd 对象中的
ARGOCD_USERNAME
和ARGOCD_PASSWORD
。这些身份验证令牌默认用作所有 ArgoCD 实例的凭证。argocd: username: ${ARGOCD_USERNAME} password: ${ARGOCD_PASSWORD} appLocatorMethods: - type: 'config' instances: - name: argoInstance1 url: https://argoInstance1.com - name: argoInstance2 url: https://argoInstance2.com
为每个 ArgoCD 实例定义一个用户名和密码。这个映射的优先级高于上一个选项。
argocd: username: ${ARGOCD_USERNAME} password: ${ARGOCD_PASSWORD} appLocatorMethods: - type: 'config' instances: - name: argoInstance1 url: https://argoInstance1.com - name: argoInstance2 url: https://argoInstance2.com # dedicated username/password for this instance username: ${ARGOCD_USERNAME_INSTANCE_2} password: ${ARGOCD_PASSWORD_INSTANCE_2}
为每个实例定义令牌。这个映射的优先级高于前面提到的两个选项。
argocd: username: ${ARGOCD_USERNAME} password: ${ARGOCD_PASSWORD} appLocatorMethods: - type: 'config' instances: - name: argoInstance1 url: https://argoInstance1.com token: ${ARGOCD_AUTH_TOKEN} # Token to use to instance 1
1.2.1. ArgoCD 插件中的权限
为 ArgoCD 用户帐户设置权限不仅降低了范围,还减少了后端的功能。如果您限制了只读权限,则包括创建、删除和重新同步应用程序的操作将不可用。
ArgoCD 中的错误处理旨在提醒您何时没有正确的权限。
1.2.2. ArgoCD 插件中的自签名证书
默认情况下,ArgoCD 服务器生成自签名证书。安装 ArgoCD 插件后,使用以下命令将 argocd-server 的部署修补为不安全:
kubectl patch deployment argocd-server --type "json" -p '[{"op":"add","path":"/spec/template/spec/containers/0/command/-","value":"--insecure"}]'
另外,您可以使用 Helm 安装 ArgoCD 插件,默认是不安全的:
helm upgrade --install argocd argo/argo-cd \ --version 3.33.5 \ --set 'server.extraArgs={--insecure}'
1.3. 对于用户
1.3.1. 在 Backstage 中使用 ArgoCD 插件
ArgoCD 插件在 Backstage Catalog 中显示应用程序的当前状态。
前提条件
- 您的 Backstage 应用程序已安装并运行。
- 已安装 ArgoCD 插件。有关安装步骤,请参阅 第 1.1.1 节 “安装”。
流程
- 打开 Backstage 应用程序,再进入 Catalog 页面。
在 OVERVIEW 选项卡中,您可以在底部看到 ArgoCD 概述卡。
ArgoCD 概述卡显示应用程序信息,包括 NAME,INSTANCE,SYNC STATUS,HEALTH STATUS, 和 LAST SYNCED。
要查看详细的应用程序信息,请从 ArgoCD 概述卡中选择应用程序。
此时会出现一个包含应用程序详细信息的弹出窗口,以及 ArgoCD 仪表板的链接。
要查看 ArgoCD 历史记录,请转至 Catalog 中的 CD 选项卡。
ArgoCD 历史记录 页面包含应用程序实例的历史记录以及其他信息,如部署详情、作者名称、作者和修订 ID 的消息。