パッケージレジストリのHelmチャート
GitLab 14.1 で導入されました。
Helm パッケージをプロジェクトのパッケージレジストリに公開します。その後、依存関係として使用する必要があるときにパッケージをインストールしてください。
Helm パッケージマネージャークライアントが使用する API エンドポイントについてはHelm API ドキュメント を参照ください。
Helm パッケージのビルド
これらのトピックについては、Helmのドキュメントを参照してください:
Helm リポジトリへの認証
Helm リポジトリを認証するには、以下のどちらかが必要です:
- スコープが
api
に設定されたパーソナルアクセストークン。 -
read_package_registry
、write_package_registry
、またはその両方にスコープが設定されたデプロイトークン。 - CI/CD ジョブトークン。
パッケージの公開
一度ビルドしたチャートは、curl
またはhelm cm-push
で任意のチャンネルにアップロードできます:
-
curl
:curl --request POST \ --form 'chart=@mychart-0.1.0.tgz' \ --user <username>:<access_token> \ https://gitlab.example.com/api/v4/projects/<project_id>/packages/helm/api/<channel>/charts
-
<username>
GitLab ユーザー名またはデプロイトークンユーザー名。 -
<access_token>
個人アクセストークンかデプロイトークン。 -
<project_id>
: プロジェクト ID (42
のような) またはプロジェクトのURL エンコードされたパス (group%2Fproject
のような)。 -
<channel>
チャンネル名 (stable
など)。
-
-
helm cm-push
プラグイン:helm repo add --username <username> --password <access_token> project-1 https://gitlab.example.com/api/v4/projects/<project_id>/packages/helm/<channel> helm cm-push mychart-0.1.0.tgz project-1
-
<username>
GitLab ユーザー名またはデプロイトークンユーザー名。 -
<access_token>
個人アクセストークンかデプロイトークン。 -
<project_id>
プロジェクトID(42
など)。 -
<channel>
チャンネル名 (stable
など)。
-
リリースチャンネル
HelmチャートはGitLabのChannelに公開することができます。チャンネルは、Helm チャートのリポジトリを区別するために使える方法です。たとえば、stable
とdevel
をチャンネルとして使い、stable
リポジトリをユーザーが追加できるようにする一方で、devel
チャートは隔離しておくことができます。
CI/CDを使ったHelmパッケージの公開
GitLab CI/CD を使って自動化した Helm パッケージを公開するには、コマンドの個人アクセストークンの代わりにCI_JOB_TOKEN
を使います。
使用例:
image: curlimages/curl:latest
stages:
- upload
upload:
stage: upload
script:
- 'curl --request POST --user gitlab-ci-token:$CI_JOB_TOKEN --form "chart=@mychart-0.1.0.tgz" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/helm/api/<channel>/charts"'
-
<username>
GitLab ユーザー名またはデプロイトークンユーザー名。 -
<access_token>
個人アクセストークンかデプロイトークン。 -
<channel>
チャンネル名 (stable
など)。
パッケージのインストール
Chartの最新バージョンをインストールするには、以下のコマンドを使います:
helm repo add --username <username> --password <access_token> project-1 https://gitlab.example.com/api/v4/projects/<project_id>/packages/helm/<channel>
helm install my-release project-1/mychart
-
<username>
GitLab ユーザー名またはデプロイトークンユーザー名。 -
<access_token>
個人アクセストークンかデプロイトークン。 -
<project_id>
プロジェクトID(42
など)。 -
<channel>
チャンネル名 (stable
など)。
リポジトリが以前に追加されている場合、実行する必要があるかもしれません:
helm repo update
Helm クライアントを最新のチャートで更新するには、以下を実行してください。
詳しくはHelmを使うをご覧ください。
トラブルシューティング
アップロード後、パッケージレジストリにChartが表示されません。
Sidekiqログに関連するエラーがないか確認してください。Validation failed: Version is invalid
が表示された場合は、Chart.yaml
ファイルのバージョンがHelm Chart のバージョン指定に従っていないことを意味します。エラーを修正するには、正しいバージョン構文を使用し、チャートを再度アップロードしてください。
UI でパッケージ処理エラーのより良いエラーメッセージを提供するサポートは、イシュー330515 で提案されています。
helm push
の結果はエラーになります。
Helm 3.7 でhelm-push
プラグインが変更されました。Chart Museum プラグインを更新してhelm cm-push
を使用することができます。