Helm
技術

Helm

Kubernetes のパッケージマネージャー

Helm は Kubernetes のパッケージマネージャーです。Kubernetes マニフェストの集合を、多くの場合、設定可能な値でパラメーター化して、チャートと呼ばれる、バージョン管理された 1 つのパッケージにまとめます。そのため、複雑なアプリケーションのインストール、アップグレード、ロールバックが、個別の kubectl apply の山ではなく、1 つのコマンドになります。

仕組み

チャートは、テンプレート化された YAML マニフェストと、デフォルト値の values.yaml ファイルを含むディレクトリ(またはパッケージ化されたアーカイブ)です。helm install を実行すると、それらのテンプレートを指定された値でレンダリングし、結果を、追跡される「リリース」としてクラスターに適用します。Helm は各リリースのリビジョン履歴を保持しており、それが helm rollback を可能にしています。

主要な概念

  • Chart(チャート) — Kubernetes マニフェストとそのデフォルト設定を、バージョン管理してパッケージ化したものです。
  • Release(リリース) — クラスター内のチャートの、特定のデプロイ済みインスタンスで、名前で識別されます。
  • Values(値) — チャートのテンプレートに渡される設定で、そのデフォルトを上書きします。
  • Repository(リポジトリ) — 検出とインストールのためにチャートをインデックスする HTTP(S) の場所で、パッケージレジストリに似ています。

チームが Helm を採用する理由

  • 再利用可能なパッケージング。 数十のリソースを持つ複雑なアプリケーションが、1 つのコマンドと 1 組のパラメーターでインストールできます。
  • アップグレードとロールバックが組み込み。 すべてのリリースがバージョン管理されているため、前へも後ろへも 1 つのコマンドで進めます。
  • 既存の大規模なエコシステム。 人気のオープンソースのインフラ、つまり ingress コントローラー、データベース、可観測性スタックのほとんどが、公式の Helm チャートを提供しています。
  • 新しい言語を必要としないテンプレート。 チャートは Go テンプレートを使うため、YAML と Go テンプレートの構文以上に学ぶ独自の DSL はありません。

はじめに

helm CLI をインストールし、チャートリポジトリを追加して、リリース名と、環境に必要な値の上書きを指定して helm install を実行します。以降のガイドでは、チャートのインストール、独自チャートの作成、アップグレードの管理を説明します。