Helm 3 は、Helm チャートをパッケージ化して配布するための Open Container Initiative (OCI) アーティファクト形式をサポートしています。このトピックでは、Container Registry (ACR) での認証、OCI アーティファクトとしてのチャートのプッシュ、および Kubernetes クラスターへのインストールについて説明します。
前提条件
開始する前に、以下が準備されていることを確認してください:
Helm 3.8 以降。
helm versionを実行して確認します。 OCI サポートは Helm 3.8 で一般利用可能になりました。少なくとも 1 つの名前空間が作成済みの ACR インスタンス。
インストールおよび設定済みの Docker またはその他の OCI 互換クライアント。
レジストリの認証情報 (ユーザー名とパスワード、またはアクセストークン)。
ACR での認証
OCI アーティファクトをプッシュまたはプルする前に、Helm クライアントでレジストリにログインします。
helm registry login <registry-domain> \
--username <username> \
--password <password>
プレースホルダーを、お使いのレジストリの詳細で置き換えてください:
|
プレースホルダー |
説明 |
例 |
|
|
ACR エンドポイント |
|
|
|
Alibaba Cloud アカウントのユーザー名または RAM ユーザー |
|
|
|
アカウントのパスワードまたはアクセストークン |
— |
期待される出力:
Login Succeeded
一時的なアクセストークンを使用する場合、トークンには有効期間があります。自動化パイプラインでの認証エラーを避けるため、有効期限が切れる前に更新してください。
Helm チャートのパッケージ化
レジストリにプッシュする前に、ローカル Helm チャートを .tgz アーカイブにパッケージ化します。
helm package <chart-directory>
期待される出力:
Successfully packaged chart and saved it to: /path/to/<chart-name>-<version>.tgz
たとえば、チャートディレクトリが my-chart で、バージョンが 0.1.0 の場合、出力ファイルは my-chart-0.1.0.tgz になります。
レジストリへのチャートのプッシュ
パッケージ化したチャートを ACR の名前空間にプッシュします。
helm push <chart-name>-<version>.tgz oci://<registry-domain>/<namespace>
期待される出力:
Pushed: <registry-domain>/<namespace>/<chart-name>:<version>
Digest: sha256:<digest-hash>
ダイジェスト値を記録しておきます。後でこの値を使用してダイジェストでチャートをインストールすると、整合性をより高く保証できます。
OCI レジストリ URL の形式
OCI レジストリホストは、URL スキームやパスなしで指定する必要があります。次の表に、有効な形式と無効な形式を示します。
|
形式 |
有効 |
注 |
|
|
はい |
ホスト名のみ |
|
|
はい |
ポート付きホスト名 |
|
|
いいえ |
スキームは許可されていません |
|
|
いいえ |
ホストにパスを含めることはできません |
Helm コマンドに渡す際は、常に完全な OCI 参照の先頭に oci:// を付けます:
oci://registry.cn-hangzhou.aliyuncs.com/my-namespace/my-chart
レジストリからのチャートのプル
レジストリからローカルマシンにチャートをダウンロードします。
helm pull oci://<registry-domain>/<namespace>/<chart-name> --version <version>
現在のディレクトリに同じ名前のアーカイブがすでに存在する場合、helm pull は警告なしでそれを上書きします。
レジストリからのチャートのインストール
タグによるインストール
helm install <release-name> oci://<registry-domain>/<namespace>/<chart-name> \
--version <version>
ダイジェストによるインストール
ダイジェストはイミュータブル (不変) であり、参照されるアーティファクトが気付かないうちに置き換えられることがないため、ダイジェストベースのインストールはタグベースのインストールよりも安全です。
helm install <release-name> \
oci://<registry-domain>/<namespace>/<chart-name>@sha256:<digest-hash>
チャートをプッシュしたときに出力されたダイジェストを使用してください。
次のステップ
CI/CD パイプラインでチャートのプッシュを自動化するには、ビルドワークフローに
helm registry loginコマンドとhelm pushコマンドを組み込みます。ACR での Helm チャートと OCI アーティファクトの管理に関する詳細は、ACR のドキュメントをご参照ください。
独自の Helm チャートを作成および開発するには、Helm チャートテンプレートガイドをご参照ください。