最近、Kubernetes環境でアプリケーションを管理する機会が増えてきて、Helm chartの管理について考えることが多くなってきました。
今回は、GitHub Container Registry (GHCR) を使ってHelm chartをホストする方法を紹介します。GHCRは無料でプライベートレジストリも作れるので、個人や小規模チームのプロジェクトにぴったりです。
前提条件
まずは以下のツールが必要です:
- Helm
- GitHubアカウント(Classic Personal Access Token が必要です)
-
write:packages
スコープを持つトークンを作成してください - 注意:Fine-grained permissions は現時点でGHCRではサポートされていません
-
今回使用するチャートについて
今回は超シンプルな例として、hello-world
という名前空間を作成するだけのチャートを使います。
構成はこんな感じ:
charts/hello-world/
├── Chart.yaml
├── templates/
│ └── namespace.yaml
# Chart.yaml
apiVersion: v2
name: hello-world
description: A simple Helm chart that creates hello-world namespace
type: application
version: 0.1.0
appVersion: "1.0.0"
# templates/namespace.yaml
apiVersion: v1
kind: Namespace
metadata:
name: hello-world
GHCRにチャートを公開する手順
1. GitHub Container Registryにログイン
まずはGitHub CLIでログインします:
helm registry login ghcr.io -u あなたのGitHubユーザー名
パスワードを求められたら、先ほど作成したPATを入力してください。
2. チャートをパッケージング
helm package charts/hello-world
実行すると、hello-world-0.1.0.tgz
というファイルが作成されます。
3. GHCRにプッシュ
helm push hello-world-0.1.0.tgz oci://ghcr.io/あなたのGitHubユーザー名
これで完了です!簡単!
作成したチャートを使ってみる
GHCRからチャートをインストールするには:
helm install hello-world oci://ghcr.io/あなたのGitHubユーザー名/hello-world --version 0.1.0
お掃除
テスト後は以下のコマンドでクリーンアップできます:
# Helmリリースをアンインストール
helm uninstall hello-world
# 作成された名前空間を削除
kubectl delete namespace hello-world
# ローカルのパッケージファイルを削除
rm hello-world-0.1.0.tgz
まとめ
今回は、GitHub Container RegistryにHelm chartを公開する方法を紹介しました。
GHCRの利点をまとめると:
- 無料でプライベートレジストリが作れる
- GitHubと統合されているので管理が楽
- OCI標準に対応
みなさんもぜひ試してみてください!