1 分で読了 #devops
このページの目次

Helm 操作マニュアル

Helm は Kubernetes のパッケージマネージャーです。主要な概念: chart(アプリケーションテンプレート)、release(chart のインストールインスタンス)、repository(chart リポジトリ)、values(設定の上書き)。

確認

helm list -A                                              # 全 namespace の release
helm list -n <ns>
helm status <release> -n <ns>                             # 現在のステータス + デプロイされたリソース
helm history <release> -n <ns>                            # バージョン履歴 (リビジョン番号)
helm get values <release> -n <ns>                         # 現在使用されている values
helm get values <release> -n <ns> --revision 3           # 過去のバージョンの values
helm get manifest <release> -n <ns>                       # 最終的に生成される K8s YAML
helm get notes <release> -n <ns>                          # release の説明 (デプロイ後のメッセージ)

# リポジトリ
helm repo list
helm search repo <keyword>                                # chart を検索
helm search repo nginx --versions                        # すべてのバージョンを表示
helm show values bitnami/nginx                            # chart のデフォルト values

操作

# インストール
helm install <name> <chart> -n <ns> --create-namespace
helm install <name> <chart> -n <ns> -f values.yaml        # カスタム設定
helm install <name> <chart> -n <ns> --set replicaCount=3  # コマンドラインで単一値を上書き

# アップグレード
helm upgrade <name> <chart> -n <ns> -f values.yaml
helm upgrade --install <name> <chart> -n <ns>             # 存在しない場合は install(冪等性)
helm upgrade <name> <chart> -n <ns> --dry-run             # 模擬実行(何が変わるかの確認)

# ロールバック
helm rollback <name> <revision> -n <ns>
helm rollback <name> 1 -n <ns>                            # 最初のバージョンにロールバック

# アンインストール
helm uninstall <name> -n <ns>
helm uninstall <name> -n <ns> --keep-history              # 履歴を保持

# リポジトリ管理
helm repo add <name> <url>
helm repo update                                           # ローカルキャッシュを更新
helm repo remove <name>

Chart デバッグ

# ローカルレンダリング(K8s に接続しない)
helm template <name> <chart> -f values.yaml | less        # 最終的な YAML を確認
helm template <name> <chart> -f values.yaml | kubectl diff -f -   # 実際の状態と比較

# 構文チェック
helm lint <chart>

# Helm がデプロイした K8s リソースの一覧表示
helm get manifest <release> -n <ns> | kubectl get -f - -o wide