Helm の目的
Helm は、チャート と呼ばれる Kubernetes パッケージを管理するためのツールです
- 最初から新しいチャートを作成する
- チャートをチャートアーカイブ (tgz) ファイルにパッケージ化する
- チャートが保存されているチャートリポジトリを操作する
- チャートを既存の Kubernetes クラスターにインストールおよびアンインストールする
- Helm でインストールされたチャートのリリースサイクルを管理する
Helm の概念
- Chart
- Kubernetesアプリケーションを構築するための一種のパッケージで、パッケージをインストールすることで、Kubernetesクラスターにアプリケーションを簡単にデプロイできる
- Config
- コンフィグは、チャート内にある設定情報をまとめたもので、デプロイ時に必要な設定やパラメータが含まれ、環境に合わせたデプロイができる
- リリースは、特定のコンフィグを適用してデプロイされたチャートが、Kubernetesクラスター上で実行されている状態
コンポーネント
Helm は、2つの異なる部分に実装される実行可能ファイルのこと
1.Helm クライアント
- ローカルチャート開発
- ローカル上でアプリケーションやサービスをKubernetesにデプロイするための準備作業をする
- リポジトリの管理
- チャートを公開したり、検索したり、取得したりするための場所を整理する
- リリースの管理
- チャートを使って新しいバージョンのアプリケーションをデプロイし、古いバージョンをアップグレードまたは削除する
- Helm ライブラリとのインターフェース
- HelmクライアントがHelmライブラリを介してKubernetesクラスターとやり取りし、アプリケーションのデプロイや管理をする
- インストールするチャートを送信する
- ユーザーが指定したチャートをKubernetesクラスターに送り、アプリケーションを展開する
2.Helmライブラリ
すべてのHelm操作を実行するためのロジックを提供し、Kubernetes APIサーバーと、以下の機能を提供する
- Helmはチャートと構成情報を組み合わせて、アプリケーションのリリースを構築し、Kubernetesクラスターにデプロイする
- Helmはユーザーが指定したチャートをKubernetesにデプロイし、その結果として生成されるリリースオブジェクトを提供する
- Kubernetes APIを利用し、チャートのアップグレードとアンインストールをする
Helmクライアントとは独立したHelmライブラリは、Helmのロジックを包括しているため、異なる種類のアプリケーションやツールがHelmの機能を利用できる
実装
Helmクライアントとライブラリは、Go言語で記載されている
ポストレンダリング
マニフェストが生成された後に、ユーザーが必要に応じてその内容を変更したり、検証したりできる仕組み
続きはまたあとで、まとめようと思います