内容提要
本文介绍了使用Kustomize和Helm配合解决对Helm的不满,通过编译时加上--enable-helm参数渲染Helm charts,然后在ArgoCD上开启Kustomize的Helm支持,只需修改版本即可更新charts。
延伸解读
Kustomize 渲染 Helm Charts 的机制
Kustomize 通过内置的 HelmChartInflationGenerator 直接渲染 Helm Charts,无需先拉取整个 Chart 再手动修改 values.yaml。在 kustomization.yaml 中声明 helmCharts 字段,指定 name、repo、version、releaseName、namespace 和 valuesFile 即可。渲染时需在编译命令中加入 --enable-helm 参数启用 Helm 支持。这种方式将 Helm Chart 作为 Kustomize
ArgoCD 中启用 Kustomize 的 Helm 支持
在 ArgoCD 上使用 Kustomize 渲染 Helm Charts,需要在 argocd-cm 这个 ConfigMap 中添加 kustomize.buildOptions: --enable-helm。这样 ArgoCD 在执行 Kustomize 构建时会自动带上该参数,从而支持 Helm Chart 的渲染。配置完成后,ArgoCD 就能直接部署由 Kustomize 渲染出的 Helm 资源,无需额外安装 Helm 或手动执行 helm 命令。
部署 Dragonfly 的简化示例
以部署 Dragonfly 为例,只需三个文件:kustomization.yaml 定义 helmCharts 信息,values.yaml 提供自定义参数,argo.yaml 定义 ArgoCD Application。kustomization.yaml 中指定 chart 名称、仓库地址、版本、releaseName 和 namespace,并引用 values.yaml。argo.yaml 则配置目标集群、命名空间、Git 仓库路径等。这种结构清晰且易于维护,更新时只需修改 chart 版本。
版本更新与参数控制
使用 Kustomize 渲染 Helm Charts 后,更新 charts 只需修改 kustomization.yaml 中的 version 字段,无需重新拉取或修改整个 Chart。所有参数通过 values.yaml 控制,保持了 Helm 的灵活性,同时避免了直接修改上游 Chart 的麻烦。这种方式让版本管理和参数定制更加集中和可控,适合在 GitOps 流程中与 ArgoCD 配合使用。
Q&A
如何使用Kustomize渲染Helm Charts?
可以通过在编译时加上--enable-helm参数来启用Helm支持,从而直接渲染Helm charts。
部署Dragonfly项目需要哪些文件?
部署Dragonfly项目需要三个文件:kustomization.yaml、values.yaml和argo.yaml。
在ArgoCD中如何开启Kustomize的Helm支持?
在ArgoCD中,需要在argocd-cm这个ConfigMap中添加kustomize.buildOptions: --enable-helm。
更新Helm charts的版本有什么简单的方法?
更新Helm charts的版本只需直接修改charts的版本即可,所有参数都可以控制。
Kustomize如何简化Helm的部署流程?
Kustomize支持直接渲染Helm charts,避免了手动拉取和修改values.yaml的繁琐步骤。
使用Kustomize和Helm的主要好处是什么?
主要好处是可以更方便地控制参数和版本,简化部署流程,提升效率。