【へるむ】

Helm とは?

💡 KubernetesのYAMI地獄を救う「アプリのパッケージマネージャー」
📌 このページのポイント
Helm Chart の仕組み values.yaml replicas: 3 image: nginx:1.25 templates/ deployment.yaml service.yaml + helm install Deployment replicas: 3 Service port: 80 ConfigMap 設定データ Helm パッケージ マネージャー
Helm Chartの仕組み:値とテンプレートからK8sリソースを生成
ひよこ ひよこ

HelmってKubernetesがあれば不要じゃないの?

ペンギン先生 ペンギン先生

KubernetesYAMLファイルで設定するんだけど、本番級のアプリだとDeployment・Service・ConfigMap・Ingress・HPA…と何十個ものYAMLファイルが必要になる。Helmはそれをまとめて1つのパッケージ(チャート)にして、インストールや更新を一括でできるようにするんだよ。

ひよこ ひよこ

開発環境と本番環境で設定を変えたいときはどうするの?

ペンギン先生 ペンギン先生

values.yamlというファイルに変数を書いておいて、環境ごとに違う値を渡せる。「本番ではレプリカを3つ、開発では1つ」みたいな切り替えをコマンドライン引数一つでできるんだよ。

ひよこ ひよこ

公開されているHelmチャートってそのまま使っていいの?

ペンギン先生 ペンギン先生

Artifact Hubにはnginx・PostgreSQLPrometheusなどの定番チャートが公開されていて、そのまま使えることが多い。ただし設定のデフォルト値がセキュリティ的に甘いことがあるから、values.yamlをカスタマイズするのが大事だよ。

ひよこ ひよこ

Helmのフック(pre-install・post-upgradeなど)って、失敗したらどうなるの?ロールバックはされるの?

ペンギン先生 ペンギン先生

Helmフックの失敗挙動は意外と複雑で、フックのJobが失敗してもデフォルトではデプロイ自体は続行されることがある。フックのannotationに「helm.sh/hook-delete-policy」を設定して失敗時の挙動を制御できる。また「--atomic」フラグをつけてdeployすると、フック含めていずれかが失敗したとき自動ロールバックしてくれるけど、大規模な更新ではロールバック自体が時間かかって別の問題になることもある。フックを使う場合は「失敗したらどうなるか」の設計を事前にちゃんと決めておく必要があるんだよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Helm」って出てきたら「Kubernetesアプリをパッケージでまとめてデプロイするツールのことだな」と思えればだいたいOK!
📖 おまけ:英語の意味
「Helm」 = 舵・操舵装置
💬 KubernetesがギリシャW語で「舵取り」の意味だから、その「舵(Helm)」を操るツール、というシャレた命名だよ
← 用語集にもどる