【簡単解説】Kubernetesで使用するツール「Helm」とは?概念や使い方のイメージを理解する
概要
Helm は Kubernetes のパッケージマネージャー で、アプリのデプロイや更新を “チャート(Chart)” という形式で一元管理できるツールです。複雑なマニフェスト(YAML群)をまとめて扱えるため、Kubernetes 運用の標準ツールとして広く使われています。
ツールの位置付け
HelmはもともとKubernetesの「サブプロジェクト」として扱われていましたが、その後CNCF(Cloud Native Computing Foundation:オープンソースプロジェクトを支援・管理する、Linux Foundation傘下の非営利団体)に移管され、Kubernetes 運用の標準ツールとして広く使われるようになりました。
Helm Chartとは
Kubernetes アプリケーションを “ひとまとめのパッケージ” として扱える仕組みで、複数の YAML マニフェストを再利用可能なテンプレートとして整理したものです。複雑な構成でも 1 回の helm install (コマンド)でデプロイできるのが最大の特徴です。
Helm Chartの中身
主な構成要素は下記の通りとなっています。
chart/
├ templates/ ← YAMLのテンプレート
├ values.yaml ← 設定値
└ Chart.yaml ← メタ情報通常のYAML(マニフェスト)では、次のように構成を記載します。
replicas: 2
image: nginx:1.25
しかし、Helm ではテンプレートに次のように記載されており、
replicas: {{ .Values.replicaCount }}
image: {{ .Values.image }}
この変数部分({{ .Values.replicaCount }}、{{ .Values.image }})にvalues.yamlで指定した値を埋め込みます。
replicaCount: 3
image: nginx:latest
Helm によるデプロイ
デプロイ時の内部処理は下記のようになっています。
templates を読み込む
values.yaml の値を埋め込む
値が埋め込まれたvalues.yamlをもとにYAMLを生成
Kubernetesに送る
KubernetesがYAMLを受け取ってリソースを作成
最後に〜Helm の有用性〜
マニフェストの場合は完成済みのYAMLを使用するのに対し、Helm の場合は「差分(設定値)」と「本体(テンプレート)」を分離しているため、同じアプリを、設定だけ変えて何度でも簡単にデプロイすることができるのです。
完成済みYAML
↓
KubernetesがYAMLを受け取ってリソース作成
テンプレート + 値
↓
YAML生成
↓
KubernetesがYAMLを受け取ってリソース作成
EOF
