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.yaml | Deploymentリソースのテンプレート |
templates/service.yaml | Serviceリソースのテンプレート |
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 Specification | HelmチャートをOCIレジストリ(コンテナレジストリ)に保存する仕様 |
| Artifact Hub | HelmチャートのOSSカタログ。公式・サードパーティのチャートを検索・利用可能 |
関連用語
- Kubernetes — Helmチャートのデプロイターゲットとなるコンテナオーケストレーター
- コンテナイメージ — Helmチャートが参照するアプリの実行パッケージ
- GitOps — HelmチャートのバージョンをGitで管理し、自動デプロイする運用手法
- CI/CDパイプライン — Helmチャートのテスト・デプロイを自動実行するパイプライン
- IaC(Infrastructure as Code) — Helmチャートもインフラをコードで管理するIaCの一形態
- オブザーバビリティ — PrometheusやGrafanaなど監視ツールの多くがHelmチャートで配布されている
- Docker — Helmチャートがデプロイするコンテナの実行基盤