Devtron 自定义 Deployment Charts 完全指南:从 Helm Chart 创建、上传校验到 GUI Schema 定制 云原生DevOps运维【免费下载链接】devtronThe only Kubernetes dashboard you need项目地址https://gitcode.com/gh_mirrors/dev/devtron点击查看免费下载Devtron 内置了覆盖绝大多数使用场景的预定义 Helm chartsDeployment、Job CronJob、Rollout Deployment、StatefulSet 等。本文基于 Devtron 官方文档 deployment-charts.md系统讲解如何在 Devtron 中上传并使用自定义 Deployment Chart从编写Chart.yaml与.image_descriptor_template.json、打包*.tgz到上传校验、版本管理、在应用部署模板中使用直至为图表编辑 JSON 驱动的 GUI Schema。读完本文你将掌握一套完整可复用的自定义 Helm Chart 接入 Devtron 的实战方案。权限模型自定义 Chart 的上传仅限超级管理员Super admin而使用则对所有用户开放超级管理员还可以为同一个自定义 Chart 上传多个版本。这一权限划分贯穿下文所有操作环节。前置条件准备一个合格的 Helm ChartDevtron 对可上传的自定义 Chart 有明确的三项硬性要求一个合法的 Helm chart其中必须包含Chart.yaml且name与version字段齐全镜像描述符模板文件.image_descriptor_template.json位于 chart 根目录以*.tgz格式打包的自定义 chart 归档文件。1. 创建 Helm Chart在本地使用 Helm 官方命令初始化一个 chart 骨架helm create my-custom-chart执行后会自动生成Chart.yaml元数据文件helm create是 Helm 官方提供的脚手架命令。Chart.yaml中与 Devtron 强相关的核心字段如下字段说明必填NameHelm chart 的名称必填VersionChart 版本号每次发布新版本时必须更新必填DescriptionChart 的描述信息可选仓库内置参考 chart 的Chart.yaml是标准的合法示例可对照参考reference-chart_4-14-0/Chart.yamlapiVersion: v1 appVersion: 1.0 description: A Helm chart for Kubernetes name: reference-chart_4-14-0 version: 4.14.02. 创建.image_descriptor_template.json镜像描述符模板这是 Devtron 自定义 chart 接入流程中最关键的文件。它本质上是一个Go 模板文件渲染后必须产生合法的 JSON。在 Devtron 的 CD 部署流程中该文件会被作为helm install -f myvalues.yaml -f override.yaml命令的最后一个参数传入。部署时CD 流水线中的实际值会被注入到.image_descriptor_template.json模板文件中指定的占位符处。将该文件放在 chart 的根目录。模板内可用变量如下所有占位符均为可选项{ server: { deployment: { image_tag: {{.Tag}}, image: {{.Name}} } }, pipelineName: {{.PipelineName}}, releaseVersion: {{.ReleaseVersion}}, deploymentType: {{.DeploymentType}}, app: {{.App}}, env: {{.Env}}, appMetrics: {{.AppMetrics}} }各字段含义字段说明image_tag构建产物的镜像 tagimage镜像仓库名称pipelineName在 Devtron 中创建的 CD 流水线名称releaseVersionDevtron 内部的 release 编号deploymentType流水线所使用的部署策略app应用在 Devtron 生态中的 IDenv部署该 chart 所使用的环境appMetrics若希望 App 指标 UI 功能生效必须在模板中包含此占位符仓库中实际运行的 Devtron 内置 deployment chart 模板与上文示例完全一致见 deployment-chart_4-22-0/.image_descriptor_template.json{server:{deployment:{image_tag:{{.Tag}},image:{{.Name}}}},pipelineName: {{.PipelineName}},releaseVersion:{{.ReleaseVersion}},deploymentType: {{.DeploymentType}}, app: {{.App}}, env: {{.Env}}, appMetrics: {{.AppMetrics}}}按需裁剪示例如果只想让 Devtron 渲染 CI/CD 流水线中的镜像仓库名与 tag可将模板精简为{ image: { repository: {{.Name}}, tag: {{.Tag}} } }源码视角模板如何被消费从源码可以看到.image_descriptor_template.json的内容随 Chart 一并持久化。Chart实体中专门有一个ImageDescriptorTemplate字段存储该模板pkg/chart/bean/bean.go#L52对应数据库列image_descriptor_template见 pkg/chartRepo/repository/ChartsRepository.go#L45。在每次创建 CD manifest 时Devtron 会用当前流水线的实际上下文appId、envId、release 计数、AppMetrics 开关等对模板执行RenderJson将{{.Tag}}、{{.Name}}等占位符替换为真实值后输出 JSON供后续helm install使用若渲染失败接口会返回unable to render ImageDescriptorTemplate错误见 pkg/deployment/manifest/ManifestCreationService.go#L746-L748。在集成测试中也能看到完全一致的模板内容被用于端到端验证例如 pkg/app/integrationTest/AppServiceDeployment_test.go#L51 中的ImageDescriptorTemplate即与上文完整模板逐字一致。3. 打包为*.tgz归档打包前请再次确认 chart 根目录同时包含Chart.yaml含name与version字段与.image_descriptor_template.json。Devtron 要求上传的 chart 必须打包为带版本号的归档文件命名规范为helm-chart-name-vx.x.x.tgzhelm package my-custom-chart执行后得到my-custom-chart-0.1.0.tgz。版本号取自Chart.yaml中的version字段因此每次发布新版本时只需更新该字段并重新打包。上传 Deployment Chart界面操作与后台校验仅超级管理员可上传自定义 chart。操作路径在 Devtron 仪表盘上进入Global Configurations全局配置 Custom charts自定义图表选择Import Chart导入图表点击Select tar.gz file...上传*.tgz格式的打包 chart。上传后 Devtron 会执行上传与校验期间可以随时Cancel upload取消上传。后台校验规则上传的归档文件会依次经过以下校验归档模板必须为*.tgz格式values.yaml的内容必须存在于app-values.yaml文件中必须存在release-values.yaml文件ConfigMap/Secret 模板必须与 Devtron 的参考 chart保持一致Chart.yaml必须包含 name 与 version 字段.image_descriptor_template.json文件必须存在且字段格式必须与上文“镜像描述符模板”一节列出的格式一致。从源码上看格式校验的第一步在服务层即可完成——ValidateCustomChartUploadedFileFormat直接检查文件名是否以.tgz结尾否则返回unsupported format错误见 pkg/deployment/manifest/deploymentTemplate/chartRef/ChartRefService.go#L116-L121。上传的 chart 在通过校验后会以ChartRef的形式入库SaveCustomChart见 ChartRefService.go#L193-L201并在后续创建应用 chart 时按需解包使用若上传的 chart 尚未被解包到本地目录GetRefChart会调用ExtractChartIfMissing从数据库中的ChartData实时解压见 ChartRefService.go#L203-L253。校验结果与处理建议校验状态说明用户操作Success成功上传的文件已通过校验为 chart 填写描述并选择Save保存或Cancel upload取消上传Unsupported template不支持的模板归档文件不符合前置条件要求Upload another chart上传另一个 chart或Cancel upload取消上传New version detected检测到新版本正在上传某已有 chart 的更新版本填写Description描述并选择Save保存以继续上传或Cancel upload取消上传Already exists已存在已存在相同版本的 chart① 修改版本号后用Upload another chart上传另一个 chart重新上传② 用新名称上传新 chart③Cancel upload取消上传查看 Deployment Charts所有用户均可查看自定义 chart。在Global Configurations全局配置 → Deployment Charts部署图表页面可以查看可用自定义 chart 的列表支持按名称、版本或描述搜索 chart通过Upload chart上传图表按钮可上传新的自定义 chart。在应用中使用自定义 Deployment Chart自定义 chart 可以从应用的Deployment Template部署模板部分选用对应仓库文档为 deployment-template.md。重要提示自定义 chart 的部署策略deployment strategy取自该自定义 chart 模板自身无法在 CD 流水线 的“部署策略”配置中另行设置。也就是说流水线中的 Deployment 策略配置仅对 Devtron 内置 chart 生效。结合源码可见部署策略确实是从 chart 模板中解析的GetRefChart在返回 chart 路径的同时会返回pipelineStrategyPath——即 chart 中保存策略配置的文件路径见 ChartRefService.go#L203-L253随后GetDeploymentStrategiesForChartRef再基于该路径读取具体的策略列表见 ChartRefService.go#L739。这从实现层面印证了“自定义 chart 的策略由模板决定”这一约束。参考 chart 的目录结构可以帮你理解 Devtron 内置 chart 的完整文件组成见 reference-chart_4-14-0reference-chart_4-14-0/ ├── Chart.yaml # chart 元数据name/version ├── README.md ├── app-values.yaml # 应用级默认值必须存在源自 values.yaml ├── env-values.yaml # 环境级覆盖值 ├── pipeline-values.yaml # 流水线级覆盖值 ├── release-values.yaml # release 级覆盖值必须存在 ├── schema.json # GUI Schema 定义 ├── secrets-test-values.yaml ├── test_values.yaml ├── values.yaml # 合并后的完整默认值 └── templates/ # Helm 模板其中app-values.yaml是打包校验的硬性要求之一其内容示例如replicaCount、image.pullPolicy、service.type、ContainerPort等可参考 reference-chart_4-14-0/app-values.yaml。编辑 Deployment Charts 的 GUI Schema仅超级管理员可以编辑 deployment charts 的 GUI schema。该功能是App Configuration应用配置 → Base Deployment Template基础部署模板中 Customize Basic GUI自定义基础 GUI 能力的延伸其核心价值在于通过 JSON Schema 驱动让部署模板的表单化 UI 随你的 schema 定义而变化。可编辑 GUI schema 的 chart 范围包括两类Devtron 提供的 chartDeployment、Job CronJob、Rollout Deployment、StatefulSet你自行上传的自定义 chart。编辑步骤以下以编辑 Devtron 提供的Deployment类型 chart 为例在 chart 列表中找到目标 chart点击其旁边的编辑按钮Devtron 内置 chart 会直接提供一个可编辑的 GUI schema对于自定义 chart则需要你自己定义一份 GUI schema可参考 RJSF JSON Schema Tool 的规范来编写编辑 schema 时可以剔除现有字段/对象或增加更多字段点击Refer YAML按钮可查看所有受支持的字段参考 chart 中的schema.json即承载这类定义例如 reference-chart_4-14-0/schema.json编辑过程中可使用Preview GUI实时预览改动效果确认无误后点击Save Changes保存更改。保存之后进入App Configuration → Base Deployment Template即可看到部署模板中的字段Basic GUI 视图已按自定义后的 schema 呈现。源码视角schema 与模板如何联动GetSchemaAndReadmeForTemplateByChartRefId会直接从 chart 模板目录读取schema.json与README.md见 ChartRefService.go#L255-L277而JsonSchemaExtractFromFile负责从 schema 文件中提取 JSON Schema 结构供前端渲染见 ChartRefService.go#L509。由此可以推断上传自定义 chart 时若同时提供schema.jsonDevtron 即可直接为其生成可编辑的 GUI 表单未提供时则需在编辑 GUI Schema 时自行定义。总结Devtron 的自定义 Deployment Chart 能力让团队可以突破内置 chart 的边界将任意符合规范的 Helm Chart 无缝接入 Devtron 的 CI/CD 闭环。整个流程可以归纳为四个环节准备创建含Chart.yamlname version的 chart编写根目录下的.image_descriptor_template.json并用helm package打包为name-version.tgz上传超级管理员在Global Configurations → Custom charts → Import Chart上传等待格式、文件内容与镜像描述符模板的多重校验使用所有用户在应用的Deployment Template中选用该 chart注意其部署策略由 chart 模板自身决定定制超级管理员可为内置或自定义 chart 编辑 JSON 驱动的 GUI Schema让基础部署模板的表单化 UI 贴合团队的使用习惯。整套机制在源码中均有清晰落点——从ImageDescriptorTemplate的持久化与渲染pkg/deployment/manifest/ManifestCreationService.go、.tgz格式校验与按需解包pkg/deployment/manifest/deploymentTemplate/chartRef/ChartRefService.go到参考 chart 的文件规范scripts/devtron-reference-helm-charts均可作为你实现自定义 chart 时的权威对照。赞分享云原生DevOps运维【免费下载链接】devtronThe only Kubernetes dashboard you need项目地址https://gitcode.com/gh_mirrors/dev/devtron点击查看免费下载相关推荐大麦抢票脚本四步跑通从克隆仓库到开售提交订单大麦抢票脚本四步跑通从克隆仓库到开售提交订单 开票前 10 秒你还在手动刷新页面时ticket purchase 已经在替你完成点击。它基于 Seleniu云原生DevOps运维Agones Helm Chart 深度指南安装、CRD 定制与 Helm 校验 Schema 维护实践Agones Helm Chart 深度指南安装、CRD 定制与 Helm 校验 Schema 维护实践 Agones 是以 Kubernetes 为基础、面游戏开发云原生Pachyderm Helm Chart 完全指南从安装部署到 manifests 校验与 Schema 维护Pachyderm Helm Chart 完全指南从安装部署到 manifests 校验与 Schema 维护 导读 本文以 Pachyderm 官方 Hel数据工程后端云原生任务调度微服务上一篇终极加载体验指南用awesome-shadcn-ui打造流畅用户界面下一篇claude-howto 实战用 test-checker 子代理为 PR 做测试覆盖与质量审查创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考