Skip to content
Latchkey

Helmfile vs Kustomize: 多数の release の管理

Helmfile は環境をまたいで多数の Helm release を宣言的に管理し、Kustomize はオーバーレイで素のマニフェストにパッチを当て、Helm を使いません。

Helmfile は Helm の上に位置し、release の集合全体(chart、values、環境)を一つのファイルで宣言します。Kustomize はまったく別のモデルで、chart もテンプレートもなく、ベースマニフェストにオーバーレイパッチを加えるだけです。

HelmfileKustomize
基盤Helmプレーン YAML
スコープ多数の release をオーケストレーション一連のマニフェストにパッチ
テンプレート化Helm chart 経由なし
環境ファーストクラス(environments)オーバーレイ経由
適する場面調整すべき chart が多い自前のマニフェスト、Helm なし

Helmfile が優れている点

多数の Helm chart(自分のアプリとサードパーティソフトウェア)を deploy し、どの release、values、環境を適用するかについて一つの宣言的な信頼できる情報源が欲しいなら、Helmfile は集合全体の diff と sync を含めてこれをきれいに調整します。Helm release の群れのために作られています。

Kustomize が優れている点

Helm もテンプレートもまったく使いたくないなら、Kustomize はマニフェストをプレーンでレビュー可能な YAML としてオーバーレイパッチで保ち、kubectl に組み込まれています。自前のマニフェストを書き、Go テンプレートを好まないチームにはよりシンプルです。

CI では

Helmfile は Helm 中心のパイプライン(helmfile diff、helmfile apply)と組み合わさり、Kustomize は kubectl apply -k または GitOps コントローラと組み合わさります。この判断は主に、スタックが Helm ベースかマニフェストベースかに従います。

結論

多数の Helm release を宣言的にオーケストレーションするには Helmfile を、プレーン YAML のオーバーレイで Helm を使いたくないなら Kustomize を使いましょう。この選択は deploy が chart ベースかどうかに追随します。

関連ガイド