Helm Chartの依存関係はChartCenterに
ChartCenterはHelmコミュニティが公開されているKubernetesアプリの変更不可で安全な信頼性の高いChartを見つけるために構築された無償のHelm chartセントラル・リポジトリです。ChartCenterを使用すると常に利用可能な1つの場所からすべての公開Chartをプロキシし、信頼できる唯一の情報源とすることができます。
ChartCenterを使用しない場合、インストールとアップデートするKubernetesアプリごとに各Helm chartリポジトリをHelmクライアントに追加する必要があります。HelmクライアントにChartCenterのリポジトリを追加すればChartCenterにプロキシされている250以上(今も増え続けています)のパブリックなKubernetesアプリのHelm chartにすぐにアクセスできるようになります。そのため、多くの公開Helmリポジトリを使うのではなく、1つのリポジトリだけを使うことができます。
独自のHelm chartを作成する場合、依存関係として使用するパブリックChartが変更不可で、ChartCenterでそれらのプロキシを参照することで、常に利用可能であることを確認することもできます。これにより、後でChartの元のリポジトリで強制プッシュや削除が行われた場合に発生する可能性がある不慮の事故を避けることができます。ChartCenterを経由する際には常に何を得ているかを知ることができます。ChartCenterの依存関係、統計、セキュリティに関する豊富なメタデータがあればなおさらです。
依存関係のあるChartからChartCenterを参照する方法と、それを可能にするHelm用の小さなプラグインを見てみましょう。
ChartCenterの利用
ChartCenterをセントラルHelmリポジトリとして設定するのは非常に簡単です:
$ helm repo add center https://repo.chartcenter.io
$ helm repo update
これでHelmクライアントはChartCenterで利用可能な30,000以上のバージョンがあるHelm chartにアクセスすることができ、またChartCenterのホームページには多くの人気アプリのChartが掲載されているため、容易に検索することができます。
しかしChartCenterは同じKubernetesアプリのHelm chartの複数の異なるセットを保持している可能性があり、その中には特殊版、重複版、非推奨版のchartが含まれている可能性があります。
たとえばChartCenterでPostgreSQLデータベースアプリケーションを検索した場合、いくつかの一致が見つかります:
ChartCenterでは名前空間はHelm chartのバージョンが見つかったHelmリポジトリを識別します。例えばPostgreSQL用の公式Bitnami Helm chartをbitnami/postgresqlとして参照します。
helmコマンドラインからPostgreSQLをインストールする:
$ helm install postgresql center/bitnami/postgresql
依存関係ChartにChartCenterを利用する
上の例ではHelmリポジトリhttps://repo.chartcenter.ioからbitnami/postgresqlをインストールしており、問題なく動作しています。
しかしhelmクライアントのコマンドラインからPostgreSQLをインストールするのではなく、自作のHelm chartの依存関係を利用してインストールするには以下のように実施します。
Helm chartにBitnami PostgreSQLを含めるために、chartのrequirements.yamlまたはChart.yamlファイルがdependenciesの下にBitnamiリポジトリからのchartを指定しているかもしれません:
dependencies:
- name: postgresql
version: 9.2.1
repository: https://charts.bitnami.com/bitnami
condition: postgresql.enabled
しかし、ChartCenterにあるBitnami chartの変更不可なプロキシを使うようにします。この場合、repositoryはChartCenterのリポジトリURLを指定することになりますが、chartのnameには名前空間も含まれていなければなりません。
dependencies:
- name: bitnami/postgresql
version: 9.2.1
repository: https://repo.chartcenter.io
condition: postgresql.enabled
bitnamiの名前空間を使うことで、ChartCenterで正しいchartを指定できるようになりましたが、まだhelm packageコマンドがそれを理解していないのが問題です。
Helm v3 クライアントがhelm packageコマンドで追加の名前空間をサポートするためのGitHub issueがオープンされていますが、これが解決されるまでしばらく時間がかかりそうです。Helm v2 クライアントは新機能を受付けていません。
その間、どのようにして問題を解決すればいいのでしょうか?
ChartCenterプラグインの利用
Helmクライアントがネームスペースを認識できるようにするために、Helm v3またはv2クライアントで使用できるHelm用のChartCenterプラグインを開発しました。
最新バージョンのプラグインをインストールします:
$ helm plugin install https://github.com/jfrog/chartcenter-plugin
このプラグインはhelm dependency updateとhelm packageコマンドをhelm centerコマンドに置き換えます。
$ helm center <CHART_NAME>
この新しいコマンドはhelm dependency updateを実行し、ChartCenter Helmリポジトリからサブchartを取得し、メインchartとサブchartを.tgzファイルにパッケージ化し、任意のHelmリポジトリにアップロードできるようにします。
ChartCenterのhelmリポジトリから依存関係のあるchartをパッケージ化するツールとしてChartCenterプラグインを使用するための簡単な方法です。
Happy ChartCenter charting