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との関係 |
|---|---|---|
| kubectl | Kubernetesリソースの直接操作 | Helmの内部でも使われる低レイヤーツール |
| Kustomize | マニフェストの環境別差分管理 | テンプレート機能はないが組み合わせることも可能 |
| ArgoCD | GitOpsベースの継続的デリバリー | HelmチャートをArgoCDで自動デプロイするケースが多い |
| Helm | アプリのパッケージ管理・バージョン管理 | 上記ツールと補完関係にある |
関連する規格・仕様
| 規格・仕様 | 内容 |
|---|---|
| Helm Chart仕様 | Chart.yamlのスキーマやディレクトリ構造の公式仕様(helm.sh) |
| OCI(Open Container Initiative) | Helm 3.8以降、チャートをOCIレジストリ(DockerHubなど)に保存可能に |
| CNCF Graduated Project | Cloud Native Computing Foundationの最高位承認ステータス |
関連用語
- Kubernetes — コンテナの自動デプロイ・管理を行うオーケストレーションプラットフォーム
- コンテナ — アプリとその実行環境をまとめたパッケージ。Helmでデプロイされる単位
- マニフェスト — Kubernetesへの指示書となるYAML形式の設定ファイル
- ArgoCD — GitリポジトリとKubernetesを同期するGitOpsツール。Helmと組み合わせて使われる
- [CI/CD