Helm アーキテクチャ

Kubernetes 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 内にあるシークレットに情報を保存します。独自のデータベースは必要ありません。

構成ファイルは、可能な場合は YAML で作成されます。