Helm は『k8s のパッケージマネージャ』
Kubernetes 上のアプリケーションを Chart 単位でパッケージ化する Helm は、本番運用の標準ツールです。本記事では編集部の視点で、実務での使い方を公開情報をもとに整理します。Kubernetes 本番運用 もご参考に。
Helm の基本
(1) Chart:k8s マニフェストのテンプレート集。(2) values.yaml:設定値。(3) helm install/upgrade:デプロイ。(4) helm rollback:前バージョンへ。(5) Helm Repo:Chart 公開・取得。
Chart の構造
(1) Chart.yaml:メタデータ。(2) values.yaml:デフォルト値。(3) templates/:マニフェストテンプレート。(4) _helpers.tpl:共通ヘルパー。(5) charts/:依存 Chart。
values の階層管理
(1) values.yaml:デフォルト。(2) values-dev/staging/prod.yaml:環境別。(3) --set:CLI 上書き。(4) secrets:sealed-secrets / external-secrets。(5) 必須項目検証:required ヘルパー。Secrets 管理 もご参考に。
テンプレート活用
(1) Go テンプレート構文。(2) {{ .Values.xxx }}:値参照。(3) 条件分岐 if/else。(4) ループ range。(5) include で共通化。
本番運用
(1) helm diff:差分確認。(2) helm test:デプロイ後テスト。(3) helmfile:複数 Chart 管理。(4) ArgoCD/Flux:GitOps 連携。(5) OCI Registry:Chart 配布。CI/CD 実践 もご参考に。
失敗しがちなパターン
(1) 過剰な共通化:可読性低下。(2) values 構造の不整合。(3) Chart のバージョン管理欠如。(4) helm upgrade で resource 破壊。(5) Secrets を平文で values。対策は、(1)KISS、(2)1構造で統一、(3)semver 必須、(4)helm diff、(5)sealed-secrets、です。