ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Devtron 升级到 Beta 版本指南:基于 Helm 的完整操作流程与源码解析

Devtron 升级到 Beta 版本指南:基于 Helm 的完整操作流程与源码解析
  • 云原生
  • DevOps
  • 运维

【免费下载链接】devtron

The only Kubernetes dashboard you need

项目地址:https://gitcode.com/gh_mirrors/dev/devtron
点击查看免费下载

本指南面向已经通过 Helm 安装了 Devtron(稳定版)的用户,讲解如何将现有安装无缝升级到 Beta 版本发布通道。文章以docs/setup/upgrade/devtron-upgrade-to-beta.md为主体,结合仓库中 Helm Chart、Installer CRD 与 BOM 清单的源码实现,完整覆盖版本查询、升级命令、参数含义与注意事项。读完本文,你将掌握一套可直接复制执行的 Beta 升级方案,并理解其底层工作机制。

升级前:确认当前 Devtron 版本

在执行任何升级操作之前,建议先确认集群中正在运行的 Devtron 版本。Devtron 通过一个名为installer-devtron的自定义资源(Installer)来记录自身的版本信息,该资源由 Helm Chart 模板在安装时创建,定义于 charts/devtron/templates/devtron-installer.yaml,对应的 CRD 声明可见于 charts/devtron/crds/crd-devtron.yaml 与 manifests/crds/crd-devtron.yaml。

运行以下命令即可读取当前版本:

kubectl -n devtroncd get installers installer-devtron -o jsonpath='{.status.sync.data}' | grep "^LTAG=" | cut -d"=" -f2-

这条命令的执行逻辑分为三层:

  1. kubectl get installers installer-devtron:获取名为installer-devtron的 Installer 资源(API 组为installer.devtron.ai/v1alpha1,参考 manifests/install/devtron-installer.yaml);
  2. -o jsonpath='{.status.sync.data}':提取其状态字段中的同步数据;
  3. grep "^LTAG=" | cut -d"=" -f2-:过滤出以LTAG=开头的行并取出等号后面的值。

LTAG即 "Latest TAG",是 Devtron 记录自身发布标签(如v2.2.0)的字段,它在仓库的 manifests/installation-script 中可见:LTAG="v2.2.0";,与当前 Chart 的appVersion: 2.2.0(见 charts/devtron/Chart.yaml)保持一致。该安装脚本会被 Installer 控制器拉取执行,用于完成 Devtron 各组件镜像的部署与版本同步。

Beta 版本通道:与稳定版安装的本质差异

Devtron 的稳定版本通过官方 Helm 仓库https://helm.devtron.ai分发,可以直接使用helm repo add与helm install安装。而Beta 版本 Chart 不在官方 Helm 仓库中,因此必须直接从 Devtron 的源码仓库获取 Chart 目录(即本仓库的 charts/devtron),再基于本地目录执行安装或升级。这一点在 charts/devtron/README.md 的 "Install with Helm (Beta)" 一节中有明确说明。

Chart 的元信息可从 charts/devtron/Chart.yaml 确认:Chart 名为devtron-operator,版本0.23.3,appVersion为2.2.0,并声明了三个依赖:

依赖版本启用条件
argo-cd7.7.15argo-cd.enabled
security0.x.xsecurity.enabled
redis2.4.0devtronEnterprise.athenaApi.enabled

这些依赖需要通过helm dependency up拉取,这也是升级流程中必须执行该命令的原因。

升级到 Beta:完整操作步骤

在原文档给出的升级流程基础上,结合仓库实际内容,完整的升级命令如下:

# 1. 克隆 Devtron 源码仓库(获取 Beta Chart) $ git clone https://gitcode.com/gh_mirrors/dev/devtron.git $ cd devtron/charts/devtron # 2. 拉取 Chart 依赖(argo-cd、security、redis 等) $ helm dependency up # 3. 按需修改 values.yaml 中的配置 $ #modify values in values.yaml # 4. 使用 --reuse-values 保留既有配置,并叠加 BOM 文件执行升级 $ helm upgrade devtron . --reuse-values --namespace devtroncd \ -f devtron-bom.yaml

步骤一:获取 Beta Chart

Beta Chart 直接以源码形式存放在仓库的charts/devtron目录下,因此需要先克隆仓库。进入目录后即可看到 Chart.yaml、values.yaml、devtron-bom.yaml 以及templates/与crds/等文件。

步骤二:同步 Helm 依赖

helm dependency up会读取Chart.yaml中的dependencies声明,从对应仓库拉取 argo-cd(https://argoproj.github.io/argo-helm)、security(https://helm.devtron.ai)与 redis 子 Chart。由于 Beta Chart 通常以源码而非打包形式分发,这一步是保证后续helm upgrade能正确渲染模板的前提。

步骤三:按需调整 values 配置

values.yaml是 Chart 的默认配置入口,升级前可按集群实际情况修改。仓库中的 charts/devtron/values.yaml 主要配置项包括:

  • global.containerRegistry:全局镜像仓库地址,默认quay.io/devtron;
  • global.dbConfig:PostgreSQL 连接配置,默认PG_ADDR: postgresql-postgresql.devtroncd、PG_PORT: "5432"、PG_USER: postgres、PG_DATABASE: orchestrator;
  • global.externalPostgres:若使用外部数据库,设置enabled: true并填写PG_PASSWORD与PG_ADDR;
  • installer.release:Installer 对应的发布版本号,当前为v2.2.0;
  • installer.source:安装脚本拉取来源,可选github或gitee;
  • components.*:各微服务组件(dashboard、devtron、kubelink、kubewatch、gitsensor、lens、nats、migrator 等)的镜像与运行参数;
  • configs.BLOB_STORAGE_PROVIDER:构建缓存与日志的存储提供商(AZURE|S3|MINIO|GCP);
  • argo-cd.enabled、security.enabled、notifier.enabled、minio.enabled、monitoring.grafana.enabled等集成组件的开关。

注意:values.yaml中多个集成组件(如security、minio、monitoring、notifier)默认处于enabled: false状态,升级时这些开关状态会被--reuse-values继承,一般无需重复修改。

步骤四:执行 Helm 升级(关键参数解读)

helm upgrade devtron . --reuse-values --namespace devtroncd -f devtron-bom.yaml

各参数的作用如下:

参数含义
devtronHelm Release 名称,与初次安装时保持一致
.Chart 路径,指向当前目录(charts/devtron)
--reuse-values复用上一次安装/升级时设定的 values,避免覆盖用户已有的自定义配置
--namespace devtroncd目标命名空间,Devtron 组件默认部署在devtroncd
-f devtron-bom.yaml叠加 BOM(Bill of Materials)清单文件,为本次升级指定各组件的镜像标签

devtron-bom.yaml是 Beta 升级的关键文件。它相当于一张"物料清单",固定了本次 Beta 构建中所有组件的镜像版本。仓库内的 charts/devtron/devtron-bom.yaml 中可以看到:

installer: release: "v2.2.0" image: "inception" tag: "473deaa4-185-21582" components: dashboard: image: "dashboard:c7b89667-690-39290" devtron: image: "hyperion:0874dcaf-280-39287" cicdImage: "devtron:0874dcaf-434-39286" ciRunner: image: "ci-runner:3b3d6d0e-138-39293" kubelink: image: "kubelink:09867a9c-564-39289" gitsensor: image: "git-sensor:3b3d6d0e-200-39291" nats: image: nats:2.9.3-alpine migrator: image: "migrator:v4.16.2" argo-cd: global: image: tag: "v2.13.3" workflowController: image: "workflow-controller:v3.4.3"

该文件覆盖了从 dashboard、hyperion(orchestrator)、ci-runner、kubelink、kubewatch、git-sensor、lens、nats、migrator 到 Argo CD、Argo Workflow、security 扫描器、notifier、minio、grafana 等全部组件的镜像标签,确保升级后整个平台处于同一套 Beta 构建版本,避免组件间版本错配。

升级后:验证版本与状态

升级完成后,可以再次执行第一节中的版本查询命令,确认LTAG已更新为 Beta 构建对应的标签:

kubectl -n devtroncd get installers installer-devtron -o jsonpath='{.status.sync.data}' | grep "^LTAG=" | cut -d"=" -f2-

从模板 charts/devtron/templates/devtron-installer.yaml 可以看到,Installer 资源还带有reSync: true标记,这表示 Installer 控制器会主动拉取安装脚本并同步组件状态;模板中的url指向https://raw.githubusercontent.com/{{ $.Values.installer.repo }}/{{ $.Values.installer.release }}/manifests/installation-script,即版本标签对应的安装脚本,这解释了为何升级后各组件镜像会被统一更新到 BOM 指定的标签。

另外,charts/devtron/templates/install.yaml 中定义了installerServiceAccount 及其绑定到cluster-admin的 ClusterRoleBinding,升级时 Helm 会以此权限在集群内创建或更新 Installer 资源,整个同步过程由 Devtron 的 Installer 控制器完成。

重要说明:Beta 升级与 Stack Manager UI 的限制

原文档明确指出以下限制,升级前务必知悉:

目前 Stack Manager UI 中没有提供升级到 Beta 版本的入口。在 Stack Manager 界面中,你始终可以看到"升级到最新稳定版"的可用提示,使用该入口会将 Devtron 移动到最新的稳定版本。

也就是说:

  • 想要升级到 Beta,只能通过本文的 Helm 方式执行;
  • Stack Manager UI(对应路径为Stack Manager > About Devtron,详见 docs/setup/upgrade/upgrade-devtron-ui.md)只支持升级到最新稳定版,二者是互斥的两条升级路径;
  • 如果后续希望回到稳定版,同样需要借助 Helm 并指定稳定版对应的 Chart 与 BOM 重新执行升级。

常见问题与补充建议

  1. helm dependency up拉取失败怎么办?检查网络能否访问argoproj.github.io/argo-helm、helm.devtron.ai与groundhog2k.github.io/helm-charts(见 charts/devtron/Chart.yaml 中声明的依赖仓库);内网或离线环境可考虑预先将依赖打包后通过helm dependency build使用本地charts/目录。

  2. 升级过程中如何保留自定义配置?务必保留--reuse-values参数;若需要修改配置,应在升级命令中追加--set key=value或在-f后叠加自定义 values 文件,而不是直接改掉values.yaml后不带--reuse-values执行,否则可能丢失先前设定。

  3. 升级后如何确认各组件镜像已更新?可以通过kubectl -n devtroncd get pods检查各组件 Pod 的镜像标签,并与 charts/devtron/devtron-bom.yaml 中声明的标签逐一比对。

  4. Beta 版本的含义:Beta 版本是 Devtron 在正式稳定版发布前数日推出的预发布构建,用于让用户提前体验与验证新功能。使用 Beta 通道意味着会接收到尚未完全稳定的特性,生产环境请评估后再决定是否采用。

  • 云原生
  • DevOps
  • 运维

【免费下载链接】devtron

The only Kubernetes dashboard you need

项目地址:https://gitcode.com/gh_mirrors/dev/devtron
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进