技術
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 を実行します。以降のガイドでは、チャートのインストール、独自チャートの作成、アップグレードの管理を説明します。