Kubernetes

Helm へるむ

パッケージマネージャーチャートKubernetesリリース管理テンプレートマニフェスト
Helmについて教えて

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

HelmはKubernetesの「アプリインストーラー」だよ!スマホのAppStoreみたいに、複雑なアプリをコマンド1本でKubernetesに入れたり消したりできるんだ。手作業で大量の設定ファイルを管理しなくていいから、ミスが減って超ラクになるってこと!


Helmとは

Helmは、Kubernetes上へのアプリケーションのデプロイを自動化・簡略化するパッケージマネージャーです。LinuxにおけるaptやyumのようなツールをKubernetes向けに実現したもの、と考えるとイメージしやすいでしょう。

Kubernetesにアプリをデプロイするには、Deployment・Service・ConfigMapなど複数の**マニフェスト(設定ファイル)を組み合わせる必要があります。規模が大きくなるほどファイル数は増え、手作業での管理はミスや手間のもとになります。Helmはこれらをまとめてチャート(Chart)**という単位でパッケージ化し、バージョン管理・インストール・更新・ロールバックを一元的に扱えるようにします。

実務では「オープンソースの監視ツールをKubernetesに入れたい」というときにHelmチャートを使うことが多く、コミュニティが公開している既製チャートを利用すれば、複雑な設定を0から書かずに済みます。クラウドネイティブなシステム開発では、今や欠かせないツールのひとつです。


Helmの3つの主要概念

概念読み方役割
Chart(チャート)チャートアプリを構成するマニフェスト群のパッケージ。設計図のようなもの
Release(リリースリリースチャートをクラスターに実際にインストールした「インスタンス」。同じチャートから複数のリリースを作れる
Repository(リポジトリ)リポジトリチャートを配布・共有する場所。AppStoreに相当

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

my-app/
├── Chart.yaml        # チャートのメタ情報(名前・バージョンなど)
├── values.yaml       # デフォルト設定値(カスタマイズの起点)
└── templates/        # マニフェストのテンプレート群
    ├── deployment.yaml
    ├── service.yaml
    └── configmap.yaml

values.yaml に環境ごとの設定値(本番・ステージングなど)を切り替えて渡せるのが大きな特徴です。

よく使うHelmコマンド早見表

コマンド何をする?
helm installチャートをクラスターにインストール
helm upgradeインストール済みのリリースを更新
helm rollback以前のバージョンに戻す
helm uninstallリリースを削除
helm repo addチャートリポジトリを追加
helm search repoリポジトリからチャートを検索

覚え方:「チャート・リリース・リポ」で船旅をイメージ

Helmは英語で「船の舵」。**Chart(海図)**を使って航海を計画し、**Repository(港)からチャートを取り出し、クラスターという海にRelease(出航)**する——というイメージで覚えると頭に入りやすいですよ。


歴史と背景

  • 2015年 — Deis社(後にMicrosoftが買収)がHelmの初期バージョンを開発。Kubernetesのデプロイが複雑すぎるという課題から生まれた
  • 2016年 — Kubernetes公式のサブプロジェクトとしてCNCF(Cloud Native Computing Foundation)に採択
  • 2018年 — Helm 2が広く普及。ただしクラスター内に「Tiller」というサーバーコンポーネントが必要で、セキュリティ上の懸念があった
  • 2019年 — Helm 3リリース。Tillerが廃止され、よりシンプルかつセキュアなアーキテクチャに刷新
  • 2020年 — CNCFの卒業プロジェクト(最高位ステータス)に昇格。エンタープライズでの採用が加速
  • 現在 — ArtifactHub(https://artifacthub.io/)を中心にコミュニティチャートが集約され、主要OSSのほぼすべてにHelmチャートが存在する

HelmとKubernetesの関係・他ツールとの比較

Helmは「何を」デプロイするかを管理するツールです。関連ツールとの役割分担を整理しましょう。

Helmを中心としたKubernetesエコシステム 開発者 Chart.yaml values.yaml Helm CLI install / upgrade rollback / uninstall Kubernetesクラスター Pod / Service Deployment など Chart Repository ArtifactHub など チャートを取得 kubectl 単一リソースを直接操作 バージョン管理なし Kustomize マニフェストの差分管理 テンプレート機能なし ArgoCD GitOpsによる継続的デリバリー Helmチャートと連携可能 ──── 関連ツールとの比較 ────

ツール比較まとめ

ツール主な用途Helmとの関係
kubectlKubernetesリソースの直接操作Helmの内部でも使われる低レイヤーツール
Kustomizeマニフェストの環境別差分管理テンプレート機能はないが組み合わせることも可能
ArgoCDGitOpsベースの継続的デリバリーHelmチャートをArgoCDで自動デプロイするケースが多い
Helmアプリのパッケージ管理・バージョン管理上記ツールと補完関係にある

関連する規格・仕様

規格・仕様内容
Helm Chart仕様Chart.yamlのスキーマやディレクトリ構造の公式仕様(helm.sh)
OCI(Open Container Initiative)Helm 3.8以降、チャートをOCIレジストリ(DockerHubなど)に保存可能に
CNCF Graduated ProjectCloud Native Computing Foundationの最高位承認ステータス

関連用語

  • Kubernetes — コンテナの自動デプロイ・管理を行うオーケストレーションプラットフォーム
  • コンテナ — アプリとその実行環境をまとめたパッケージ。Helmでデプロイされる単位
  • マニフェスト — Kubernetesへの指示書となるYAML形式の設定ファイル
  • ArgoCD — GitリポジトリとKubernetesを同期するGitOpsツール。Helmと組み合わせて使われる
  • [CI/CD