Helm とは何か? Kubernetes のパッケージマネージャーを解説
Helm は Kubernetes のパッケージマネージャーです。アプリケーションの manifest を、バージョン管理されパラメータ化された chart にまとめ、単一のコマンドでインストールおよびアップグレードできます。
アプリを Kubernetes に deploy するには、数十もの YAML manifest を管理することになりかねません。Helm はそれらをテンプレート化された値を持つ「chart」にパッケージ化するため、アプリケーションのインストールやアップグレードが、バージョン管理と rollback を備えた、単一で繰り返し実行可能なコマンドになります。
Helm とは
Helm は Kubernetes のパッケージマネージャーです。Helm chart は、テンプレート化された Kubernetes manifest と、設定用の値ファイルをまとめたものです。"helm" CLI は自分の値でテンプレートをレンダリングし、その結果を cluster に適用して、各インストールをバージョン管理された release として追跡します。
chart、値、release
テンプレートは values.yaml から埋められる placeholder を使うため、1 つの chart が値を差し替えるだけで多くの環境に対応します。chart をインストールすると Helm が追跡する release が作成され、"helm upgrade" が変更を適用し、"helm rollback" が以前のリビジョンに戻します。公開 chart リポジトリは、一般的なソフトウェア向けの既製 chart を提供します。
使用例
カスタム値を使って release をインストールおよびアップグレードします。
# install a chart as a named release
helm install myapp ./chart -f values-prod.yaml
# upgrade it later
helm upgrade myapp ./chart -f values-prod.yamlCI/CD での役割
CI/CD では、Helm は Kubernetes アプリの deploy ステップです。pipeline がイメージを build して push し、その後 "helm upgrade --install" を実行して環境固有の値で新バージョンを展開します。"helm template" は PR でのレビューや diff のために manifest をレンダリングでき、"helm lint" は chart を検証します。release と rollback により、deploy は監査可能かつ元に戻せるものになります。
代替ツール
Kustomize(kubectl に組み込み)は、テンプレート化せずにベース manifest に overlay を重ねます。単純なケースでは素の kubectl apply で十分です。Argo CD や Flux のような GitOps ツールは、Helm chart を宣言的に deploy できます。Helm は依然として、Kubernetes アプリケーションをパッケージ化して deploy する最も一般的な方法です。
重要なポイント
- Helm は Kubernetes の manifest を、バージョン管理されテンプレート化された chart にパッケージ化する。
- 値は chart を環境ごとにカスタマイズし、release により rollback が可能になる。
- CI では deploy ステップとなり、"helm upgrade --install" で新バージョンを展開する。