KubernetesのHelmとは?チャートの使い方入門

インフラ・クラウド

Helmは、Kubernetesのマニフェストをテンプレート化・パッケージ管理するためのツールです。複雑な構成を「チャート」として再利用でき、運用効率が大幅に向上します。本記事では、Helmの基本概念とチャートの使い方を入門レベルで解説します。

Helmとは

Helmは「Kubernetesのパッケージマネージャ」と呼ばれるツールです。npmやapt-getのように、よく使う構成(Nginx、Prometheus、Grafana等)を1コマンドでインストールでき、独自アプリも「Chart」としてパッケージ化できます。

Helmの構成要素

  • Chart:マニフェストのテンプレート集
  • Values:Chartに渡すパラメータ
  • Release:ChartをValuesで適用したインスタンス
  • Repository:Chartを配布するレジストリ(Artifact Hub等)

インストールと基本コマンド

brew install helm
helm version

# リポジトリ追加
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update

# Chart検索
helm search repo nginx

# 既存Chartでインストール
helm install my-nginx bitnami/nginx

# 一覧
helm list

# 削除
helm uninstall my-nginx

独自Chartを作る

helm create my-app
# my-app/
# ├── Chart.yaml
# ├── values.yaml
# └── templates/
#     ├── deployment.yaml
#     ├── service.yaml
#     └── ...

templates/配下にはGoテンプレート構文を含むYAMLが入ります。values.yamlで値を切り替えられます。

テンプレート例

# templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ .Release.Name }}
spec:
  replicas: {{ .Values.replicaCount }}
  template:
    spec:
      containers:
        - name: app
          image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
# values.yaml
replicaCount: 3
image:
  repository: my-app
  tag: "1.0.0"

環境別の値ファイル

helm install my-app ./my-app -f values.prod.yaml
helm upgrade my-app ./my-app -f values.stg.yaml

GitOpsとの組み合わせ

ArgoCDやFlux等のGitOpsツールと組み合わせれば、ChartのバージョンをGitで管理し、自動デプロイが可能になります。HelmファイルをGitリポジトリで一元管理する運用が定石です。

注意点

  • テンプレートが複雑になると保守難度が上がる
  • secretの取り扱いはhelm-secretsやexternal-secretsで補強
  • 大規模ではKustomizeとの使い分けも検討

まとめ

Helmは、Kubernetesマニフェストを「再利用可能なパッケージ」に進化させる強力なツールです。Chart + Values + Repositoryの3つを押さえれば、本番運用での再現性・効率性が一段上がります。まずはBitnami等の公開Chartを試して感覚を掴むのがおすすめです。