パッケージレジストリのHelmチャート

GitLab 14.1 で導入されました

caution
GitLab 用 Helm チャートレジストリは開発中であり、機能が限られているため本番環境での使用にはまだ対応していません。このエピックでは、本番環境で使えるようにするための残りの作業とスケジュールについて詳しく説明します。

Helm パッケージをプロジェクトのパッケージレジストリに公開します。その後、依存関係として使用する必要があるときにパッケージをインストールしてください。

Helm パッケージマネージャークライアントが使用する API エンドポイントについてはHelm API ドキュメント を参照ください。

Helm パッケージのビルド

これらのトピックについては、Helmのドキュメントを参照してください:

Helm リポジトリへの認証

Helm リポジトリを認証するには、以下のどちらかが必要です:

パッケージの公開

note
名前やバージョンが重複しているHelmチャートを公開することができます。重複がある場合、GitLabは常に最新バージョンのチャートを返します。

一度ビルドしたチャートは、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 チャートのリポジトリを区別するために使える方法です。たとえば、stabledevel をチャンネルとして使い、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 など)。

パッケージのインストール

note
パッケージをリクエストするとき、GitLabは最近作成された1000個のパッケージのみを考慮します。各パッケージについて、最新のパッケージファイルのみが返されます。

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 を使用することができます。