Helm アーキテクチャ
Kubernetes Helm アーキテクチャ
このドキュメントでは、Helm アーキテクチャの概要について説明します。
Helm の目的
Helm は、チャート と呼ばれる Kubernetes パッケージを管理するためのツールです。 Helm は次のことができます。
- 最初から新しいチャートを作成する
 - チャートをチャートアーカイブ (tgz) ファイルにパッケージ化する
 - チャートが保存されているチャートリポジトリを操作する
 - チャートを既存の Kubernetes クラスターにインストールおよびアンインストールする
 - Helm でインストールされたチャートのリリースサイクルを管理する
 
Helm には、3つの重要な概念があります。
- チャート は、Kubernetes アプリケーションのインスタンスを作成するために必要な 情報のバンドルです
 - コンフィグ には、リリース可能なオブジェクトを作成するためにパッケージ化された チャートにマージできる構成情報が含まれています
 - リリース は、特定の コンフィグ と組み合わせた チャート の 実行中のインスタンスです
 
コンポーネント
Helm は、2つの異なる部分に実装される実行可能ファイルです。
Helm クライアント は、エンドユーザー向けのコマンドラインクライアントです。 クライアントは次のことを担当します。
- ローカルチャート開発
 - リポジトリの管理
 - リリースの管理
 - Helm ライブラリとのインターフェース
- インストールするチャートを送信する
 - 既存のリリースのアップグレードまたはアンインストールの要求
 
 
Helm ライブラリ は、すべての Helm 操作を実行するためのロジックを提供します。 Kubernetes API サーバーとインターフェースし、次の機能を提供します。
- チャートと構成を組み合わせてリリースを構築する
 - チャートを Kubernetes にインストールし、後続のリリースオブジェクトを提供する
 - Kubernetes との対話によるチャートのアップグレードとアンインストール
 
スタンドアロンの Helm ライブラリは Helm ロジックをカプセル化しているため、 さまざまなクライアントが活用できます。
実装
Helm クライアントとライブラリは、Go プログラミング言語で記述されています。
ライブラリは、Kubernetes クライアントライブラリを使用して Kubernetes と通信します。 現在、そのライブラリは REST + JSON を使用しています。 Kubernetes 内にあるシークレットに情報を保存します。独自のデータベースは必要ありません。
構成ファイルは、可能な場合は YAML で作成されます。