Helm アーキテクチャ

Helm アーキテクチャ

このドキュメントでは、Helm のアーキテクチャの概要について説明します。

Helm の目的

Helm は、_チャート_と呼ばれる Kubernetes パッケージを管理するためのツールです。 Helm は以下のことができます。

  • ゼロから新しいチャートを作成する
  • チャートをチャートアーカイブ (tgz) ファイルにパッケージ化する
  • チャートが格納されているチャートリポジトリと対話する
  • 既存の Kubernetes クラスタにチャートをインストールおよびアンインストールする
  • Helm でインストールされたチャートのリリースサイクルを管理する

Helm には、3 つの重要な概念があります。

  1. _チャート_は、Kubernetes アプリケーションのインスタンスを作成するために必要な情報のバンドルです。
  2. _設定_には、パッケージ化されたチャートにマージしてリリース可能なオブジェクトを作成できる設定情報が含まれています。
  3. _リリース_は、特定の_設定_と組み合わせた_チャート_の実行中のインスタンスです。

コンポーネント

Helm は、2 つの異なる部分に実装された実行可能ファイルです。

**Helm クライアント**は、エンドユーザー向けのコマンドラインクライアントです。 クライアントは以下を担当します。

  • ローカルチャート開発
  • リポジトリの管理
  • リリースの管理
  • Helm ライブラリとのインターフェース
    • インストールするチャートの送信
    • 既存のリリースのアップグレードまたはアンインストールの要求

**Helm ライブラリ**は、すべての Helm 操作を実行するためのロジックを提供します。 Kubernetes API サーバーとインターフェースし、以下の機能を提供します。

  • チャートと設定を組み合わせてリリースをビルドする
  • Kubernetes にチャートをインストールし、後続のリリースオブジェクトを提供する
  • Kubernetes と対話してチャートをアップグレードおよびアンインストールする

スタンドアロンの Helm ライブラリは Helm ロジックをカプセル化しているため、異なるクライアントで活用できます。

実装

Helm クライアントとライブラリは、Go プログラミング言語で記述されています。

ライブラリは Kubernetes クライアントライブラリを使用して Kubernetes と通信します。 現在、そのライブラリは REST+JSON を使用しています。 情報は Kubernetes 内にある Secrets に格納されます。 独自のデータベースは必要ありません。

設定ファイルは、可能な場合は YAML で記述されます。