Skip to content
Latchkey

Helm vs Kustomize: CIでのKubernetesにはどちらか

HelmはKubernetesアプリをパッケージ化してテンプレート化し、KustomizeはオーバーレイでプレーンなYAMLにパッチを当てます - 多くのチームは両方を使います。

HelmはKubernetesのパッケージマネージャーで、マニフェストをバージョン管理されたリリース可能なchartにテンプレート化します。Kustomizeはテンプレート化せずにベースYAMLに環境固有のオーバーレイを重ね、kubectlに組み込まれています。

HelmKustomize
アプローチテンプレート化 + パッケージングYAMLへのオーバーレイ / パッチ
パッケージング / リリースchart、バージョン管理されたリリースネイティブなパッケージングなし
テンプレート化Goテンプレートなし(宣言的なパッチ)
kubectlに組み込みいいえはい (kubectl -k)
最適な用途配布可能なアプリ、複雑な設定既知のYAMLへの環境固有の調整

CIでは

Helmは、アプリをパッケージ化して配布する場合や、バージョン管理されたリリースとロールバックが必要な場合に適しています。chartは複雑でパラメータ化された設定をカプセル化します。Kustomizeは、プレーンなYAMLを維持し、環境ごとのクリーンなオーバーレイだけが必要な場合に適しており、学ぶべきテンプレート言語がなく、kubectlのネイティブサポートがあります。よくあるCIのパターン: helm templateまたはkustomize buildでレンダリングし、結果のマニフェストを適用します。

パイプライン向けの選択

サードパーティのアプリを配布する、またはリリース追跡を伴う複雑なパラメータ化された設定を管理する: Helm。環境ごとに自分の既知のマニフェストをカスタマイズする: Kustomize。これらはうまく組み合わさります - パッケージングにHelm、ラストマイルのオーバーレイにKustomize。

結論

アプリのパッケージング/リリースや大量のパラメータ化: Helm。環境ごとに自分のYAMLにオーバーレイ: Kustomize。これらは相互排他的ではなく - 多くのパイプラインは両方を使います。

関連ガイド