GitLabの新しいHelmチャートリポジトリの使い方
GitLab 14.1は、ソフトウェアの増え続けるサポートされているパッケージリポジトリ形式のリストにHelmチャートを追加しました。これで、別途Helmレジストリを用意することなく、自分のGitLabプロジェクトを使ってチャートを保存および共有できるようになりました。
Helmチャートは、単一パッケージとして配布されるKubernetesのYAMLマニフェストのコレクションです。これにより、複雑なアプリケーションをクラスターに迅速かつ容易にデプロイすることができます。GitLabをレジストリとして使用することで、チームはコードとともにチャートを組織が管理するリポジトリに保存できます。
GitLab Helm リポジトリの使用
GitLabインスタンスがバージョン14.1に更新されていることを確認してください。ホスト型のGitLab.comデプロイメントを使用している場合は、必要なすべてがすでに揃っています。
リポジトリにプッシュするためのシンプルなHelmチャートを準備します。実行中
helm create example
新しいひな型チャートが生成されます
example利用可能なものがない場合は、生成されたチャートは修正なしに直接GitLabにプッシュする準備が整います。
GitLabインスタンスに切り替えます。新しいプロジェクトを作成するか、既存のプロジェクトを見つけてください。左側のサイドバーを使用して、プロジェクト内の「パッケージとレジストリ」>「パッケージレジストリ」に移動します。これらのメニューが表示されない場合は、「設定」>「一般」に移動し、「可視性、プロジェクト機能、権限」という見出しを展開し、「パッケージ」のトグルを有効にしてください。
リポジトリをHelmに追加する
これで、パッケージリポジトリを使い始める準備が整いました。最初に、Helm クライアントにリポジトリを登録する必要があります。
helm repo add
--username <username>
--password <token>
example-repo
https://gitlab.example.com/api/v4/projects/<project>/packages/helm/stable
ローカルリポジトリはexample-repoと名付けられます。<username>はあなたのGitLabのユーザー名に置き換えてください。<token>の値は、パッケージをプッシュする権限を持つ個人アクセストークンである必要があります。
GitLabのインターフェースの右上にあるプロフィールアイコンをクリックすることで、新しいトークンを生成できます。メニューから「設定」を選択し、左のサイドバーから「アクセストークン」を選択します。apiスコープを持つ新しいアクセストークンを追加してください。write_repositoryスコープは正しいように見えるかもしれませんが、実際には機能しません。それはHTTP経由でGitを使用するためのアクセスを容易にするだけで、HelmはAPI統合が必要です。
リポジトリのURL内の<project>を、プッシュしたいGitLabプロジェクトのIDに置き換えてください。このIDは、そのプロジェクトのホームページの名前の下にあります。
リポジトリへのプッシュ
リポジトリが追加されると、有効な Helm チャートを持つ任意のディレクトリを GitLab インスタンスにプッシュできます。通常、ネイティブの helm push コマンドを追加する helm-push プラグインをインストールするのが最も簡単です。
まだパッケージングしていない場合は、チャートをパッケージしてください:
helm package example-chartこれにより、あなたのチャートを含むgzipped tarアーカイブ、example-chart.tgzが作成されます。
helm-pushプラグインを追加してください:
helm plugin install https://github.com/chartmuseum/helm-push.git最後に、プラグインを使ってチャートをGitLabリポジトリにプッシュします:
helm push example-chart.tgz example-repoGitLabのウェブインターフェースに戻り、プロジェクトの「パッケージとレジストリ」>「パッケージレジストリ」画面に移動します。そこで、あなたのチャートが表示されるはずです。
チャートの名前をクリックすると、その詳細を表示できます。この画面ではチャートの履歴を追跡したり、パッケージファイルをダウンロードしたり、古いリリースを表示したりできます。「削除」ボタンは右上にありますので、そこからチャートを削除できます。
リポジトリ内でのチャートの使用
あなたのリポジトリにあるチャートを使用して、それをKubernetesクラスターに展開できます。helm installコマンドはすぐに動作するはずです。
load the contents of repositories
helm repo update
install the chart
helm install example-repo/example-chart
これにより、アクティブなクラスターへの新しいチャートのデプロイメントが開始されます。必要に応じて、適切なKubernetesの設定ファイルを選択し、デプロイ先の名前空間を指定するために、--kubeconfigおよび--namespace Helmフラグを使用してください。
CIパイプラインにおけるGitLabのリポジトリへのアクセス
他のパッケージ形式と同様に、GitLabのHelmリポジトリはソフトウェアのCI/CDシステムとの組み込み統合の恩恵を受けています。あなたのパイプラインは、チャート公開プロセスを簡素化するプリセットの環境変数を受け取ります。認証を設定するためにカスタムCI変数を設定する必要はありません。
これはチャートを作成し、それをリポジトリに公開する例のパイプラインです:
stages:
- helm-publish
helm-publish:
stage: helm-publish
image:
name: alpine/helm:latest
entrypoint: [""]
script:
- helm repo add --username $CI_REGISTRY_USER --password $CI_REGISTRY_PASSWORD my-repo $CI_REGISTRY
- helm package my-chart
- helm push my-chart.tgz my-repo
$CI_REGISTRY 変数は、レジストリに新しいパッケージをプッシュできるように設定されています。これらの変数は、npm、Composer、NuGet、Mavenなど、GitLab の他のリポジトリに認証するときに再利用できます。
要約
GitLabは、コードと一緒にKubernetesマニフェストを保存できる統合されたHelmチャートリポジトリを持つようになりました。プロジェクトのリポジトリに対する読み取り権限を持つ人は誰でも、これを自分のHelmクライアントに追加し、Kubernetesクラスターにチャートをデプロイできるようになります。
新しいチャートバージョンが公開されたら、helm repo updateを実行し、次にhelm upgradeを使用して、デプロイされたインストールを新しいリリースに移行してください。チャートバージョンはGitLab内から管理でき、ディスクスペースを無駄にしている古いリリースを削除することができます。




