Argo CD UI 自定义指南:默认视图、Pod 节点标签与 CLI 下载链接配置
【免费下载链接】argo-cdDeclarative Continuous Deployment for Kubernetes项目地址: https://gitcode.com/GitHub_Trending/ar/argo-cd
本指南基于 Argo CD 的 UI 自定义能力,讲解如何为 Application 设置默认详情视图与 Pod 分组方式、如何将节点标签透传到 Pod 视图中展示,以及如何在 Help 页面为多种操作系统和架构提供 CLI 下载入口。读完本文,你可以通过argocd-cmConfigMap 与 Application 注解两套机制,按团队需求定制 Argo CD 界面的默认呈现形态与交付体验。
一、默认 Application 详情视图(Default View)
1.1 默认行为
默认情况下,打开 Application 详情页时展示的是Tree(树状)视图,即application-details组件默认使用的展示模式。
1.2 按 Application 配置默认视图
该行为可以在单个 Application维度上被覆盖。只需要为 Application 对象设置如下注解:
pref.argocd.argoproj.io/default-view: <value>该注解接受以下四种取值之一:
| 取值 | 说明 |
|---|---|
tree | 树状视图(默认) |
pods | Pod 视图,按分组机制展示 Pod |
network | 网络视图 |
list | 列表视图 |
在前端实现中,该注解被定义为常量AnnotationDefaultView = 'pref.argocd.argoproj.io/default-view'(见 ui/src/app/shared/models.ts)。详情页组件在初始化时会读取 Application 的metadata.annotations中该键的值,若存在则覆盖用户当前的偏好视图(见 ui/src/app/applications/components/application-details/application-details.tsx):
const appDefaultView = (application.metadata && application.metadata.annotations[appModels.AnnotationDefaultView]) as AppsDetailsViewType; if (appDefaultView != null) { pref.view = appDefaultView; }也就是说,该注解的值直接决定详情页首次渲染时使用的视图类型,优先级高于用户手动切换的选择。
1.3 配置 Pod 视图的默认分组方式
当使用Pods 视图时,Argo CD 默认会按照一定的分组机制对 Pod 进行归类展示。团队可以通过第二个注解自定义默认的分组方式:
pref.argocd.argoproj.io/default-pod-sort: <value>该注解接受以下三种取值之一:
| 取值 | 说明 |
|---|---|
node | 按节点(Node)分组 |
parentResource | 按父级资源(如 ReplicaSet、StatefulSet)分组 |
topLevelResource | 按顶层资源(如 Deployment)分组 |
该注解同样被定义为前端常量AnnotationDefaultPodSort = 'pref.argocd.argoproj.io/default-pod-sort'(见 ui/src/app/shared/models.ts),与default-view一样属于 Application 级别的偏好注解。关于这两个注解的适用范围与取值说明,还可以参考 docs/user-guide/annotations-and-labels.md 中的注解清单。
注意:两个注解均为 Application 级别,即每个 Application 可以拥有不同的默认视图与分组策略;未设置注解的 Application 沿用全局默认值(详情页默认为
tree视图)。
二、Pod 视图中的节点标签透传(Node Labels)
2.1 功能说明
在某些场景下,运维或开发者希望在 Pod 视图中直接看到 Pod 所在节点的标签(例如可用区、实例规格、节点容量类型等),以便快速定位问题。Argo CD 支持通过argocd-cmConfigMap 中的application.allowedNodeLabels配置项,将指定的节点标签传播到 Pod 视图的节点信息中。
2.2 配置方法
在argocd-cmConfigMap(argocd-cm 配置参考)中增加如下配置:
application.allowedNodeLabels: topology.kubernetes.io/zone,karpenter.sh/capacity-type配置项的值是一个逗号分隔的节点标签键列表。上面的配置会将每个节点的topology.kubernetes.io/zone(可用区)与karpenter.sh/capacity-type(节点容量类型)两个标签显示在 Pod 视图的节点信息中:
2.3 底层实现
该配置项的解析逻辑位于 util/settings/settings.go 的GetAllowedNodeLabels()方法中,关键行为包括:
- 配置键常量定义为
allowedNodeLabelsKey = "application.allowedNodeLabels"(见 util/settings/settings.go); - 从 ConfigMap 读取配置值后,会先移除所有空格(
strings.ReplaceAll(value, " ", "")),再按逗号切分为标签键列表; - 对每个标签键使用 Kubernetes 的
validation.IsQualifiedName进行合法性校验,非法的键会被记录警告日志并跳过,不会进入最终列表; - 若配置键不存在或值为空,则返回空列表(即不传播任何节点标签)。
2.4 注意事项
- 未配置
application.allowedNodeLabels时,Pod 视图不会显示任何节点标签; - 标签键必须符合 Kubernetes 的合法名称规范(例如
topology.kubernetes.io/zone这种带 DNS 前缀的形式),否则会被过滤掉; - 配置按逗号分隔,键与键之间的空格会被自动清理,因此
topology.kubernetes.io/zone, karpenter.sh/capacity-type与不加空格的效果一致; argocd-cmConfigMap 的参考模板中同样给出了示例值topology.kubernetes.io/zone,node.kubernetes.io/instance-type(见 docs/operator-manual/argocd-cm.yaml),可结合实际集群的节点标签灵活调整。
三、Help 页面 CLI 下载链接(CLI Download Links)
3.1 默认行为
Argo CD 服务器内置了 Linux 平台的 CLI 二进制文件。侧边栏底部的Help页面始终显示一个 Linux CLI 下载按钮,用户无需任何额外配置即可获取一个可用的 CLI 客户端。
3.2 为更多操作系统与架构添加下载入口
如果你希望为其他操作系统和架构也提供 CLI 下载,可以在argocd-cmConfigMap 中配置help.download.<os>-<arch>键。每个配置的键都会在 Help 页面上新增一个下载按钮,指向你提供的 URL:
apiVersion: v1 kind: ConfigMap metadata: name: argocd-cm namespace: argocd data: help.download.linux-amd64: "https://example.com/argocd-linux-amd64" help.download.linux-arm64: "https://example.com/argocd-linux-arm64" help.download.darwin-amd64: "https://example.com/argocd-darwin-amd64" help.download.darwin-arm64: "https://example.com/argocd-darwin-arm64" help.download.windows-amd64: "https://example.com/argocd-windows-amd64.exe"3.3 识别的<os>-<arch>键列表
只有以下<os>-<arch>组合会被 Argo CD 识别并渲染为下载按钮,配置其他任何键都会被忽略:
linux-amd64linux-arm64linux-ppc64lelinux-s390xdarwin-amd64darwin-arm64windows-amd64
这些键在argocd-cm的参考配置中均有对应模板项(见 docs/operator-manual/argocd-cm.yaml),键值支持填写完整 URL 或仓库内的相对下载路径。
3.4 注意事项
[!NOTE]默认的 Linux 按钮始终会显示,即使你已经通过
help.download配置了额外的链接。因此,如果你为 Argo CD 服务器自身所在架构(例如linux-amd64)也配置了help.download.linux-<arch>,Help 页面上会出现两个 Linux 下载按钮:一个是服务器内置的默认按钮,一个是指向你自定义 URL 的按钮。请按需决定是否需要避免这种重复。
3.5 实用建议
- 镜像/内网分发场景:可以借助该机制将 CLI 二进制托管在自建对象存储或内部镜像仓库,配置对应 URL 即可在 Help 页面直接分发;
- 多架构支持场景:如果团队中同时存在 Intel Mac、Apple Silicon Mac 与各类 Linux 架构的开发者,建议至少配置
darwin-amd64、darwin-arm64与常用 Linux 架构的入口; - 版本一致性:下载按钮指向的 CLI 版本应与 Argo CD 服务器版本保持一致,避免因版本不匹配导致的兼容性问题。
四、总结
Argo CD 的 UI 自定义能力可以总结为三套互补的机制:
| 自定义目标 | 配置位置 | 关键配置项/注解 |
|---|---|---|
| 默认详情视图 | Application 注解 | pref.argocd.argoproj.io/default-view(tree/pods/network/list) |
| Pod 视图默认分组 | Application 注解 | pref.argocd.argoproj.io/default-pod-sort(node/parentResource/topLevelResource) |
| 节点标签透传 | argocd-cmConfigMap | application.allowedNodeLabels(逗号分隔的标签键列表) |
| CLI 下载入口 | argocd-cmConfigMap | help.download.<os>-<arch>(仅识别固定的 7 种组合) |
其中,Application 级别的两个注解按单个应用精细化控制界面呈现,而argocd-cm中的两个配置项则提供集群级的全局默认行为。前者由前端组件在渲染时读取(见 ui/src/app/applications/components/application-details/application-details.tsx),后者由后端SettingsManager统一解析并提供给各组件使用(见 util/settings/settings.go)。理解这套"注解 + ConfigMap"的双层配置体系,即可按需定制 Argo CD 的用户体验。
【免费下载链接】argo-cdDeclarative Continuous Deployment for Kubernetes项目地址: https://gitcode.com/GitHub_Trending/ar/argo-cd
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考