正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

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

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
  • ステータス: ベータ

GitLabのHelmチャートレジストリは開発中であり、機能が限られています。そのため、本番環境での使用には適していません。このエピックでは、本番環境で使用できるようになるまでの残りの作業とタイムラインについて詳しく説明します。

プロジェクトのパッケージレジストリにHelmパッケージを公開します。これにより、依存関係として使用する必要がある場合に、いつでもパッケージをインストールできるようになります。

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

Helmパッケージをビルドする

これらのトピックに関するHelmドキュメントの詳細については、次をご覧ください:

Helmリポジトリへの認証を行う

Helmリポジトリへの認証を行うには、次のいずれかが必要です:

パッケージを公開する

同じ名前またはバージョンのHelmチャートを公開できます。重複が存在する場合、GitLabは常に最新バージョンのチャートを返します。

curlまたはhelm cm-pushを使用して、ビルドが完了したら、目的のチャンネルにチャートをアップロードできます:

  • curlを使用する場合:

    curl --fail-with-body --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など)。

リリースチャンネル

GitLabのチャンネルにHelmチャートを公開できます。チャンネルは、Helmチャートリポジトリを区別するために使用できるメソッドです。たとえば、stabledevelをチャンネルとして使用して、develチャートが分離されている間に、ユーザーがstableリポジトリを追加できるようにします。

CI/CDを使用してHelmパッケージを公開する

GitLab CI/CDを使用して自動化されたHelmパッケージを公開するには、コマンドでパーソナルアクセストークンの代わりにCI_JOB_TOKENを使用できます。

次に例を示します:

stages:
  - upload

upload:
  image: curlimages/curl:latest
  stage: upload
  script:
    - 'curl --fail-with-body --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など)。

パッケージをインストールする

パッケージごとに、最新のパッケージファイルのみが返されます。

チャートの最新バージョンをインストールするには、次のコマンドを使用します:

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を使用するを参照してください。

トラブルシューティング

アップロード後、チャートがパッケージレジストリに表示されない

関連するエラーがないかSidekiqログを確認してください。Validation failed: Version is invalidが表示される場合は、Chart.yamlファイルのバージョンがHelmチャートのバージョニング仕様に従っていないことを意味します。エラーを修正するには、正しいバージョンの構文を使用し、チャートを再度アップロードしてください。

helm pushでエラーが発生する

Helm 3.7では、helm-pushプラグインに破壊的な変更が導入されました。helm cm-pushを使用するようにChart Museumプラグインを更新できます。