Helm chart とは?Kubernetes アプリのパッケージング
Helm chart は、テンプレート化された Kubernetes manifest とデフォルト value を含む再利用可能なパッケージです - Kubernetes アプリの「apt パッケージ」です。
実際のアプリを Kubernetes に deploy するということは、関連する manifest の山を意味します: Deployment、Service、ConfigMap、Ingress など。これらを環境をまたいで手作業で保守するのは面倒でエラーを招きやすいです。Helm chart はそれらを設定可能な value を持つテンプレートとしてまとめるため、アプリを 1 つのバージョン管理された単位として install・upgrade できます。
chart の中身
Chart.yaml- 名前、バージョン、メタデータ。templates/- テンプレートのプレースホルダを含む Kubernetes manifest。values.yaml- デフォルトの設定 value。- 他の chart への任意の依存関係。
テンプレートと value
テンプレートは {{ .Values.image.tag }} のようなプレースホルダを使います。install 時に、Helm はあなたの value でテンプレートをレンダリングし、具体的な manifest を生成します。異なる環境は異なる value を供給するだけです。
release
chart を install すると、名前付きの「release」が作成されます。helm upgrade がそれを更新し、helm rollback が元に戻し、helm history が過去のリビジョンを表示します - アプリ全体のバージョン管理されたライフサイクル管理です。
典型的なコマンド
helm upgrade --install web ./chart --set image.tag=1.4 は web release を install または upgrade し、イメージのタグを出荷したい build に上書きします。
CD における Helm chart
デリバリ pipeline は、CI がちょうど生成したイメージのタグまたは digest で chart をレンダリングまたは upgrade します。chart は環境の違いを value ファイルに保つため、同じ chart が staging から prod へきれいに昇格します。
重要なポイント
- Helm chart はテンプレート化された Kubernetes manifest とデフォルト value をパッケージします。
- value は環境ごとに 1 つの chart をカスタマイズし、release がライフサイクルを追跡します。
- CD は新しくビルドされたイメージのタグまたは digest で chart を upgrade します。