资讯动态

Devtron 0.2.x 升级至 0.3.x 实操指南:NATS 组件清理与 Installer 重同步

发布时间:2026/10/13 6:34:13 来源:尧图企业网站定制
云原生DevOps运维【免费下载链接】devtronThe only Kubernetes dashboard you need项目地址https://gitcode.com/gh_mirrors/dev/devtron点击查看免费下载本文基于 Devtron 官方升级文档完整讲解如何将 Devtron 从 0.2.x 升级到 0.3.x先删除旧版 NATS 消息中间件相关资源再通过 Installer 对象的reSync机制触发整个 Devtron 栈的重新安装。读完本文你将掌握这套升级流程的每一步命令、每一步背后的资源构成与原理以及升级后的版本验证方法可直接在集群中实操复现。升级背景为什么 0.2.x → 0.3.x 需要先清理 NATSNATS 是 Devtron 内部的消息中间件承担着事件通知、CI/CD 流程解耦等职责。在源码中可以看到 orchestrator 通过NATS_SERVER_HOST: nats://devtron-nats.devtroncd:4222连接 NATS 服务见 manifests/yamls/devtron.yaml 的 ConfigMap 配置同时 client/events/EventClient.go 中定义了PUB_SUB NotificationMedium nats并通过WriteNatsEvent(channel string, payload interface{})向 NATS 发布事件。在 0.2.x 时代Devtron 的 NATS 栈由三部分组成分别对应三份独立清单资源清单对应组件部署形态nats-operator.yamlNATS OperatorDeployment 一组 ClusterRole / ClusterRoleBinding / ServiceAccountnats-streaming.yamlNATS StreamingSTANStatefulSetdevtron-stan ConfigMap Headless Servicenats-server.yamlNATS Server含 JetStreamStatefulSetdevtron-nats ConfigMap Headless Service官方升级文档之所以要求先删除这三类资源是因为从 0.2.x 跨版本升级到 0.3.x 时NATS 相关清单的部署形态与命名存在变化旧版本残留的 StatefulSet、Operator 及其 RBAC 会与新版本安装产生冲突。因此升级的第一步就是彻底清理旧版 NATS 部署让后续的 Installer 重同步以干净状态重新创建它们。这一动作也体现了 Devtron 升级的一个核心设计升级由安装器Installer驱动而非原地逐个 patch 组件。STEP 1删除旧版 NATS 资源执行以下三条命令分别删除 nats-operator、nats-streaming 和 nats-server 资源。命令中的清单 URL 指向v0.2.37版本标签这正是 0.2.x 系列在官方仓库中的固定版本这些清单与本仓库 manifests/yamls/ 目录下的对应文件同源可对照参考其具体内容。kubectl delete -f https://raw.githubusercontent.com/devtron-labs/devtron/v0.2.37/manifests/yamls/nats-operator.yaml kubectl -n devtroncd delete -f https://raw.githubusercontent.com/devtron-labs/devtron/v0.2.37/manifests/yamls/nats-streaming.yaml kubectl -n devtroncd delete -f https://raw.githubusercontent.com/devtron-labs/devtron/v0.2.37/manifests/yamls/nats-server.yaml三点实操细节需要留意第一条命令不带-n是有原因的nats-operator.yaml见 manifests/yamls/nats-operator.yaml中既包含devtroncd命名空间内的 ServiceAccount 与 Deployment如nats-operator、nats-streaming-operator、nats-server三个 ServiceAccount也包含集群级资源nats-operator、nats-server、nats-streaming-operator三个 ClusterRole 及对应 ClusterRoleBinding。kubectl delete -f会按清单内每个资源自身定义的位置进行删除因此无需也不能用-n覆盖集群级资源。后两条命令显式指定-n devtroncdnats-streaming.yaml与nats-server.yaml中的 StatefulSet、Service 均位于devtroncd命名空间显式指定命名空间可确保删除目标准确。删除过程中 Pod 的终止会受清单中的优雅退出配置影响nats-server.yaml的 StatefulSet 设置了terminationGracePeriodSeconds: 120并通过preStop钩子执行nats-server -slldm...触发 lame duck mode 后等待 120 秒见 manifests/yamls/nats-server.yaml因此删除耗时会略长属于正常现象不要误判为卡死。STEP 2验证资源已删除删除完成后使用以下命令确认相关资源已彻底清理。官方文档给出了三组验证维度kubectl -n devtroncd get pods kubectl -n devtroncd get serviceaccount kubectl -n devtroncd get clusterrole验证要点Pods确认devtron-nats-*、devtron-stan-*、nats-operator-*前缀的 Pod 已消失注意 Pod 名会随 StatefulSet/Deployment 名派生实际前缀以集群中的部署名为准例如nats-operator-hash。ServiceAccount确认nats-operator、nats-streaming-operator、nats-server已不存在。ClusterRole确认nats-operator、nats-server、nats-streaming-operator三个集群角色及其绑定已被移除。原文档中的验证命令未加-n时会使用当前 kubectl context 的默认命名空间如你的默认命名空间不是devtroncd请在get pods、get serviceaccount后追加-n devtroncd以保证验证覆盖正确而get clusterrole为集群级查询不受命名空间影响。为彻底起见还可补充检查kubectl get crd | grep nats确认 NATS 相关的 CRD 状态。STEP 3通过 Installer 的 reSync 触发整栈升级资源清理完毕后进入触发升级的关键一步。Devtron 的安装/升级由名为Installer的自定义资源CRDinstallers.installer.devtron.ai驱动其定义见 manifests/crds/crd-devtron.yaml。该 CRD 的spec仅有两个核心字段url要安装的 BOM 版本Bill of Materials对应的安装脚本地址例如 manifests/install/devtron-installer.yaml 中installer-devtron实例指向https://raw.githubusercontent.com/devtron-labs/devtron/v2.2.0/manifests/installation-scriptreSync类型为 booleanCRD 中的描述是Rerun the installation script重新执行安装脚本。通过给reSync字段添加true值安装器会重新拉取url指向的安装脚本并执行从而以幂等方式重建/升级整个 Devtron 栈——这也是本文开头所说升级由安装器驱动的实现入口。执行命令kubectl patch -n devtroncd installer installer-devtron --typejson -p[{op: add, path: /spec/reSync, value: true }]命令解析-n devtroncdInstaller 实例installer-devtron位于devtroncd命名空间对应 manifests/install/devtron-installer.yaml 中的定义--typejson使用 JSON Patch 策略-p[{op: add, path: /spec/reSync, value: true }]在/spec/reSync路径上新增布尔值true。补丁提交后安装器对应的控制器会检测到reSync为 true随即重新执行安装脚本。安装脚本的形态可参考仓库根部的 manifests/installation-script其中LTAGv2.2.0即当前仓库版本对应的安装标签升级到 0.3.x 后 NATS 组件将以新版本清单重新部署到devtroncd命名空间。如果目标升级版本需要同时指定版本地址0.3.x 后续小版本升级也沿用这一模式可参考同目录下的 docs/setup/upgrade/devtron-upgrade-0.3.x-0.3.x.md在同一 JSON Patch 中追加 replace 操作同时更新spec.urlDEVTRON_TARGET_VERSIONv0.3.x kubectl patch -n devtroncd installer installer-devtron --typejson -p[{op: add, path: /spec/reSync, value: true },{op: replace, path: /spec/url, value: https://raw.githubusercontent.com/devtron-labs/devtron/$DEVTRON_TARGET_VERSION/manifests/installation-script}]升级后的版本验证与后续升级路径升级完成后建议先确认版本号再继续使用。后续版本升级文档如 docs/setup/upgrade/devtron-upgrade-0.3.x-0.4.x.md给出了统一的版本查询命令可直接从 Installer 的同步状态数据中读取当前安装版本kubectl -n devtroncd get installers installer-devtron -o jsonpath{.status.sync.data} | grep ^LTAG | cut -d -f2-该命令读取installer-devtron的status.sync.dataInstaller CRD 的 status 中保存着同步状态与来源信息过滤出LTAG开头的行并截取版本号。若输出为0.3.x系列则本次升级成功。此外需要说明本次升级路径0.2.x → 0.3.x是 Devtron 早期版本间的迁移操作适用前提是当前集群中已通过 0.2.x 安装器部署过 Devtron若直接部署 0.3.x 及以上新版本无需执行本文的清理步骤。0.3.x 之后的升级已逐步过渡到 Helm 模式完整升级路线图见 docs/setup/upgrade/README.md其中列出 0.3.x → 0.4.x、0.4.x → 0.5.x 直至 0.6.x → 0.7.x 的各个版本区间文档可根据自身版本逐步升级。常见问题与注意事项删除命令报 not found如果集群中部分 NATS 资源已不存在例如曾手动清理过kubectl delete -f会报对应资源未找到此时可忽略该错误继续后续步骤不影响升级。NATS 删除期间业务是否受影响NATS 承载 Devtron 内部事件通知与解耦通道删除与重建窗口内相关事件推送会暂时中断建议在维护窗口内执行整个升级流程。reSync是否会被自动复位Installer 执行完同步后reSync字段的消费与状态记录由安装器控制器管理若需要手动确认同步结果可通过kubectl -n devtroncd get installer installer-devtron -o yaml查看status中的sync信息包含状态、历史、资源健康度等字段定义见 manifests/crds/crd-devtron.yaml。升级后 NATS 资源消耗若希望控制 NATS 组件在集群中的资源占用可参考仓库中的覆盖配置 manifests/updates/devtron-nats-operator-override.yaml其中为nats-operatorDeployment 设置了 CPU 0.01 / 内存 30Mi 的请求与限制体现了官方对轻量中间件资源配比的设计意图。赞分享云原生DevOps运维【免费下载链接】devtronThe only Kubernetes dashboard you need项目地址https://gitcode.com/gh_mirrors/dev/devtron点击查看免费下载相关推荐终极指南Langchain-Chatchat从0.2.x到0.3.x的平滑升级秘籍终极指南Langchain Chatchat从0.2.x到0.3.x的平滑升级秘籍 Langchain Chatchat原Langchain ChatGLM人工智能大模型RAGAI Agent本地部署后端如何本地部署Teable零门槛跑起自己的协作表格全程约10分钟如何本地部署Teable零门槛跑起自己的协作表格全程约10分钟 Teable 是一款开源的 AI 协作电子表格平台表层像 Excel底层是完整的 Pos数据库后端前端低代码AI 应用AD-hosts定时更新功能详解自动保持广告屏蔽列表最新省心又高效AD hosts定时更新功能详解自动保持广告屏蔽列表最新省心又高效 AD hosts作为一款专注于广告屏蔽的实用工具其定时更新功能能够帮助用户自动保持广告创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑