Argo CD UI 自定义指南:默认视图、Pod 节点标签与 CLI 下载链接配置
2026/9/13 23:13:41 网站建设 项目流程

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树状视图(默认)
podsPod 视图,按分组机制展示 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-amd64
  • linux-arm64
  • linux-ppc64le
  • linux-s390x
  • darwin-amd64
  • darwin-arm64
  • windows-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-amd64darwin-arm64与常用 Linux 架构的入口;
  • 版本一致性:下载按钮指向的 CLI 版本应与 Argo CD 服务器版本保持一致,避免因版本不匹配导致的兼容性问题。

四、总结

Argo CD 的 UI 自定义能力可以总结为三套互补的机制:

自定义目标配置位置关键配置项/注解
默认详情视图Application 注解pref.argocd.argoproj.io/default-viewtree/pods/network/list
Pod 视图默认分组Application 注解pref.argocd.argoproj.io/default-pod-sortnode/parentResource/topLevelResource
节点标签透传argocd-cmConfigMapapplication.allowedNodeLabels(逗号分隔的标签键列表)
CLI 下载入口argocd-cmConfigMaphelp.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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询