クラウド・インフラ

Helmチャート へるむちゃーと

Kubernetesパッケージ管理テンプレートデプロイチャートvalues.yaml
Helmチャートって何?

簡単に言うとこんな感じ!

KubernetesのYAMLファイルって複数種類が必要で管理が大変なんだけど、Helmはそれを「アプリ1セット分のパッケージ(チャート)」にまとめるツールだよ。npmやaptみたいなパッケージマネージャーのKubernetes版、って思えばわかりやすいかな!


Helmチャートとは

HelmはKubernetesのパッケージマネージャーです。そしてHelmチャートとは、Kubernetes上にアプリをデプロイするために必要なリソース定義(YAML)をまとめたパッケージのことです。1つのアプリをKubernetesにデプロイするには、Deployment・Service・ConfigMap・Secret・IngressなどのYAMLファイルを複数用意する必要があります。Helmはこれらを1つのチャートにまとめ、バージョン管理・テンプレート化・環境ごとの設定変更を容易にします。

Helmチャートの強みはテンプレートエンジンです。チャート内のYAMLはGo templateで書かれており、環境ごとの差異(レプリカ数・イメージタグ・ドメイン名など)はvalues.yamlファイルで切り替えられます。開発環境・ステージング・本番で同じチャートを使いつつ、値だけを変えてデプロイできます。

また、Helm Hub(Artifact Hub)には公式・サードパーティのチャートが多数公開されており、PrometheusやGrafanaなどのOSSツールをコマンド1行でKubernetesに導入できます。デプロイの履歴管理とロールバック機能も備えており、問題発生時に1コマンドで前バージョンに戻せます。


Helmチャートのディレクトリ構造

ファイル・ディレクトリ役割
Chart.yamlチャートのメタ情報(名前・バージョン・説明)
values.yamlデフォルト設定値(環境ごとにオーバーライド可能)
templates/Kubernetes YAMLのテンプレート群
templates/deployment.yamlDeploymentリソースのテンプレート
templates/service.yamlServiceリソースのテンプレート
charts/依存チャート(サブチャート)を格納
.helmignoreチャートパッケージ時に除外するファイルのパターン

歴史と背景

  • 2015年:KubernetesのDeployment管理ツールとしてHelmがGoogleとDeisによって開発・OSSとして公開
  • 2016年:CNCF(Cloud Native Computing Foundation)に寄贈
  • 2019年:Helm 3.0リリース。Tiller(サーバーサイドコンポーネント)を廃止しクライアントのみに。セキュリティが大幅改善
  • 2020年:CNCF Graduated projectに昇格。Artifact Hubが公式チャートリポジトリに
  • 2022年〜:HelmとArgo CD・Flux CDを組み合わせたGitOpsパターンがスタンダードに

Helmを使ったデプロイの流れ

# 1. チャートリポジトリを追加
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts

# 2. values.yamlで設定をカスタマイズ(環境別の値ファイルを作成)
#    my-values.yaml:
#      replicaCount: 3
#      image:
#        tag: "v2.45.0"

# 3. インストール(初回デプロイ)
helm install my-prometheus prometheus-community/prometheus \
  -f my-values.yaml \
  --namespace monitoring

# 4. アップグレード(更新デプロイ)
helm upgrade my-prometheus prometheus-community/prometheus \
  -f my-values.yaml

# 5. ロールバック(前バージョンに戻す)
helm rollback my-prometheus 1

関連する規格・RFC

規格・RFC番号内容
OCI Distribution SpecificationHelmチャートをOCIレジストリ(コンテナレジストリ)に保存する仕様
Artifact HubHelmチャートのOSSカタログ。公式・サードパーティのチャートを検索・利用可能

関連用語

  • Kubernetes — Helmチャートのデプロイターゲットとなるコンテナオーケストレーター
  • コンテナイメージ — Helmチャートが参照するアプリの実行パッケージ
  • GitOps — HelmチャートのバージョンをGitで管理し、自動デプロイする運用手法
  • CI/CDパイプライン — Helmチャートのテスト・デプロイを自動実行するパイプライン
  • IaC(Infrastructure as Code) — Helmチャートもインフラをコードで管理するIaCの一形態
  • オブザーバビリティ — PrometheusやGrafanaなど監視ツールの多くがHelmチャートで配布されている
  • Docker — Helmチャートがデプロイするコンテナの実行基盤