Skip to content
Latchkey

Helm vs kpt: テンプレート化 vs 構成パッケージ

Helm はバージョン管理された chart をテンプレート化しリリースします。kpt はテンプレート言語なしで、Git から取得したパッケージとして構成を管理し、関数で変換します。

Helm は Kubernetes の主流なパッケージマネージャーで - マニフェストをバージョン管理された chart にテンプレート化し、リリースを追跡します。kpt(Google)は異なるアプローチを取ります。Git から構成パッケージを取得し、関数を介して宣言的な変換を適用し、テンプレート言語をレンダリングするのではなく実際の YAML を編集します。

Helmkpt
アプローチテンプレート化 + リリース構成パッケージ + 関数
ソース形式Go templatesプレーンな YAML
リリース追跡はい(helm history)Git ベース
エコシステム巨大な chart エコシステムより小規模
最適な用途アプリのパッケージ化と配布GitOps の構成変換

CI で

Helm はアプリのインストールと配布のための安全なデフォルトです - 膨大な chart エコシステム、リリース追跡、簡単なロールバック。kpt は Helm のテンプレート化を避けて、プレーンな YAML と GitOps フローでのプログラム的な変換を好むチームに適します。多くの人は、サードパーティ製アプリには Helm を、自分たちの構成には kpt や Kustomize を使います。

高速化する

CI でマニフェストをレンダリングまたはハイドレートし、取得した依存関係を cache します。どちらも CI runner 上で動作します。より高速な managed runner はレンダリングと検証のステップを短縮します。

結論

巨大な chart エコシステムとリリースを持つ標準的なパッケージャーが欲しい場合: Helm。GitOps で関数によって変換されるプレーンな YAML の構成パッケージが欲しい場合: kpt。アプリの配布では Helm が依然としてデフォルトです。

関連ガイド