見出し画像

【簡単解説】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

通常のYAML

しかし、Helm ではテンプレートに次のように記載されており、

replicas: {{ .Values.replicaCount }}
image: {{ .Values.image }}

Helm:templates

この変数部分({{ .Values.replicaCount }}、{{ .Values.image }})にvalues.yamlで指定した値を埋め込みます。

replicaCount: 3
image: nginx:latest

Helm:values.yaml

Helm によるデプロイ

デプロイ時の内部処理は下記のようになっています。

  1. templates を読み込む

  2. values.yaml の値を埋め込む

  3. 値が埋め込まれたvalues.yamlをもとにYAMLを生成

  4. Kubernetesに送る

  5. KubernetesがYAMLを受け取ってリソースを作成

最後に〜Helm の有用性〜

マニフェストの場合は完成済みのYAMLを使用するのに対し、Helm の場合は「差分(設定値)」と「本体(テンプレート)」を分離しているため、同じアプリを、設定だけ変えて何度でも簡単にデプロイすることができるのです。

完成済みYAML

KubernetesがYAMLを受け取ってリソース作成

マニフェストの場合

テンプレート + 値

YAML生成

KubernetesがYAMLを受け取ってリソース作成

Helmの場合

EOF

いいなと思ったら応援しよう!