利用 Kustomize 渲染 Helm Charts 并使用 ArgoCD 进行部署

利用 Kustomize 渲染 Helm Charts 并使用 ArgoCD 进行部署

💡 原文中文,约1400字,阅读约需4分钟。
📝

内容提要

本文介绍了使用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的主要好处是什么?

主要好处是可以更方便地控制参数和版本,简化部署流程,提升效率。

🏷️

标签

➡️

继续阅读