パッケージレジストリのHelmチャート
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
- ステータス: ベータ
GitLabのHelmチャートレジストリは開発中であり、機能が限られています。そのため、本番環境での使用には適していません。このエピックでは、本番環境で使用できるようになるまでの残りの作業とタイムラインについて詳しく説明します。
プロジェクトのパッケージレジストリにHelmパッケージを公開します。これにより、依存関係として使用する必要がある場合に、いつでもパッケージをインストールできるようになります。
Helmパッケージマネージャーのクライアントが使用する特定のAPIエンドポイントのドキュメントについては、Helm APIドキュメントを参照してください。
Helmパッケージをビルドする
これらのトピックに関するHelmドキュメントの詳細については、次をご覧ください:
Helmリポジトリへの認証を行う
Helmリポジトリへの認証を行うには、次のいずれかが必要です:
- スコープが
apiに設定されたパーソナルアクセストークン。 - スコープが
read_package_registryとwrite_package_registryのどちらか、または両方に設定されたデプロイトークン。 - CI/CDジョブトークン。
パッケージを公開する
同じ名前またはバージョンの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チャートリポジトリを区別するために使用できるメソッドです。たとえば、stableとdevelをチャンネルとして使用して、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プラグインを更新できます。