Helm 是包管理器,适合分发和参数化复杂应用;Kustomize 是无模板的叠加工具,适合基于基础清单做环境差异。两者可以组合:Helm 渲染基础清单,Kustomize 再做环境覆盖。
| 维度 | Helm | Kustomize |
|---|---|---|
| 模型 | Chart 模板 + values | 基础 YAML + overlay |
| 模板 | Go template,灵活但复杂 | 无模板,patch/overlay |
| 依赖 | Chart dependencies | 无原生依赖管理 |
| 发布 | Release、回滚、历史 | 只生成清单,不管理发布 |
| 学习曲线 | 较高 | 较低 |
| 适用 | 第三方应用、复杂参数 | 自有应用、环境差异 |
helm template app ./chart -f values-prod.yaml
helm install app ./chart -n prod --create-namespace
kustomize build overlays/prod
kubectl apply -k overlays/prod
helm upgrade 不会自动清理已删除的资源;需要 --cleanup-on-fail 或手动处理。helm — Chart 管理kustomize — 清单叠加kubectl — 应用资源