Helm 操作マニュアル

8 分で読了
このページの目次

Helm は release 履歴、Kubernetes は稼働リソースを管理する。クラスタ、namespace、release、chart 版、values の出所を記録する。例の ./chart は審査済みの chart に置換する。

やりたいこと参照先
現在の release を確認版と設定の出所
values を変更して展開描画してから展開
更新失敗・ロールバック履歴と復元範囲

四つの設定表示を区別

バージョンと対象を固定する

# ローカル Helm のメジャーバージョンを確認する
helm version --short

以下の your-context/default/web は context/namespace/release の例。各コマンドで明示する。context は kubectl config get-contexts で確認し、chart 名と release 名を混同しない。

# failed・pending も含め release を列挙する
helm list --kube-context your-context -n default --all

NAME・REVISION・STATUS・CHART・APP VERSION を読む。chart とアプリのバージョンは別である。

# release の状態と説明を読む
helm status web --kube-context your-context -n default

deployed は Helm の状態で、Pod や業務の正常性は別に確認する。pending なら継続中の公開処理を先に調べる。

確認したい内容に応じて設定の表示を選ぶ

# 今回の chart の既定値を読む
helm show values ./chart

./chart は公開候補のローカル chart。release の現在の実効値ではない。

# release に保存されたユーザー指定値を読む
helm get values web --kube-context your-context -n default

上書きがなければ空の場合がある。統合後の値は次の --all を選ぶ。

# 既定値と指定値を統合した結果を読む
helm get values web --all --kube-context your-context -n default

対象フィールドの最終値を確認する。コントローラー内部の現在値ではない。機密設定を含む場合は共有前に確認する。

# release に保存されたレンダリング結果を読む
helm get manifest web --kube-context your-context -n default

同じ範囲の kubectl get deployment web -o yaml などと照合する。既定値適用・制御処理・手動変更で差が生じる。実際の名前は manifest から取得する。

出所分かること
helm show values ./chartchart の既定値
helm get values RELEASE保存済み上書き値。--all は合成結果
helm get manifest RELEASErevision に保存されたマニフェスト
kubectl get ... -o yaml既定値・コントローラー・手動編集を経た現在の API オブジェクト

values の優先順位と展開確認

図を準備しています
値の出所と list 全体の置換

有効な values 層が順に defaults を上書きし CLI が最後。object は key 単位で merge、list は全体置換。

今回の values の来源を決める

chart の既定値と今回の values.yaml を --reset-values で適用する。旧値が必要なら先に出力・確認して意図的に入力へ含める。chart と非機密 values は版管理し、機密値はプロジェクトの方式で扱う。

# chart と今回の values を lint する
helm lint ./chart -f values.yaml

テンプレート・構造エラーを先に直す。集群での受理や正常起動までは証明しない。

# レンダリング結果を確認用ファイルへ保存する
helm template web ./chart -n default -f values.yaml > rendered.yaml

出力先は上書きされるので今回の作業ディレクトリを使う。イメージ・ポート・namespace・ストレージ・Secret を確認する。

# 公開候補と現在の API オブジェクトの差分を読む
kubectl --context your-context -n default diff -f rendered.yaml

通常、1 は差分あり。ここでは比較だけに kubectl を使い、実際の更新は Helm に統一する。

# 確認済み入力を公開し、待機条件を満たすまで待つ
helm upgrade --install web ./chart \
  --kube-context your-context -n default \
  -f values.yaml --reset-values --wait --timeout 5m

namespace は事前作成が必要。--install は初回導入も許可し、--wait/--timeout は待機を制御する。業務テストや自動 rollback ではない。status・イベント・実リクエストで確認する。

chart 既定値と今回の values を明示的に使い、旧 release 値を意図せず継承しない。後の -f が優先し、--set はさらに優先する。配列は通常全体置換。repository/OCI では版と出所を固定して確認する。

template はローカル描画で、API 対応・admission・稼働を保証しない。lookup などはクラスタ依存。dry-run の形式と機密出力に注意する。Helm 3 の --atomic と Helm 4 の失敗時復元オプションは異なるため upgrade --help を確認する。

release の復元は全業務状態の復元ではない

rollback 前に履歴と入力を読む

# revision の時刻・状態・chart 版を特定する
helm history web --kube-context your-context -n default

revision 2 が正常とは決めつけず、以前に業務確認した版を探す。

# 候補 revision のユーザー指定値を読む
helm get values web --revision 2 --kube-context your-context -n default

同じ範囲で helm get manifest web --revision 2 も読み、イメージと対象を確認する。データ復旧は別途計画する。

# 確認した revision を元に復旧リリースを作る
helm rollback web 2 --kube-context your-context -n default --wait --timeout 5m

2 は確認値に置き換える。追加された履歴、status、Pod、業務を確認する。失敗時はイベントや hook Job を調べ、release の保存オブジェクトを直接削除しない。

revision 2 は例なのでイメージと values を先に確認する。復元は新 revision を作るが、PVC データ、外部サービス、hook の副作用、DB 移行は自動で戻らない。pending では実行中処理・Job/Pod Events・履歴を調べ、release Secret を安易に消さない。

chart の版と利用手順を調べる

# 従来型 chart リポジトリと URL を確認する
helm repo list

helm repo update はローカル索引更新で、release は更新しない。OCI 参照はこの索引に依存しない。

# 利用可能な chart の版を探し固定する
helm search repo web --versions

repo/chart 導入では一覧から --version VERSION を指定し、同じ版の values/template を先に確認する。

# 現在の release の利用案内を読む
helm get notes web --kube-context your-context -n default

案内のアドレスや資格情報取得方法は実リソースと照合する。正常性の証明ではない。

uninstall はリソース削除の独立した作業

# 廃止すると確認した release 管理リソースを削除する
helm uninstall web --kube-context your-context -n default --wait --timeout 5m

事前に manifest・hook・PVC/CRD・バックアップを確認する。後で helm list --all と残存リソースを調べる。--keep-history は履歴保持で、データ保持ではない。

uninstall は namespace と context を固定し、PVC・CRD・hook・外部リソースの扱いを先に確認する。--keep-history が残すのは release 履歴で、全リソースやデータではない。

helm upgrade · helm rollback · Values files