Helm は、Kubernetes 上でアプリケーションを簡単にデプロイ・管理するためのツールです。
マニフェストをテンプレート化して再利用できるだけでなく、公開されている「Chart」を使って素早くアプリを導入できるのが魅力です。
この記事では特に、
👉 「Helm Repository(リポジトリ)」とは何か?
👉 helm repo add
の内部で何が起きているのか?
を具体的なファイル構成をもとに解説していきます。
🪶 Helm とは?
Helm は「Kubernetes のパッケージマネージャー」と呼ばれるツールです。
- Kubernetes マニフェストをテンプレート化して再利用できる
- アプリケーションを Chart(チャート)という単位で管理できる
- バージョン管理やリリースのロールバックが簡単
つまり、「chart を作って installすれば、Kubernetes へアプリをデプロイできる」という仕組みです 👑
さらに、他の開発者や OSS コミュニティが公開しているチャートをRepository(リポジトリ) から取得して利用できます。
たとえば Bitnami や Grafana などの公式チャートを使えば、品質の高いアプリを短時間で導入することができます。
🗺️ Helm の全体イメージ
CLI を通してリポジトリからチャートを取得し、Kubernetes クラスタにインストールしてリソースを作成します。
もちろん、リポジトリを使わずに自作チャートを helm install ./mychart
することも可能です 💪
📦 Repository とは?
Helm の Repository は、チャートを管理・公開・共有するための場所です。
HTTP(S)でアクセスできる静的なサーバで、以下の 2 種類のファイルが置かれています
-
index.yaml
— チャートのメタデータ一覧 -
.tgz
— 実際のパッケージファイル
例)有名なrepogitory
名前 | URL |
---|---|
Grafana | https://grafana.github.io/helm-charts |
Bitnami | https://charts.bitnami.com/bitnami |
Prometheus | https://prometheus-community.github.io/helm-charts |
🪄 helm repo add
でrepogitoryを使用する
helm repogitoryを使用するには、作業端末でhelm repo add
を実施する必要があります
helm repo add grafana https://grafana.github.io/helm-charts
このコマンドを実行するとrepogitoryが使用できるようになりますが、どのような処理がなされているのでしょうか?
簡単にまとめると以下の処理がなされます。
-
https://grafana.github.io/helm-charts/index.yaml
をダウンロードする - ローカルにキャッシュ (
grafana-index.yaml
) と検索キャッシュ(grafana-charts.txt
) を作成する - 登録情報を
repositories.yaml
に保存する
🧭実際に確認してみよう
まずは、helmの環境変数(HELM_REPOSITORY_CACHE
と HELM_REPOSITORY_CONFIG
)を確認してください。
# 環境変数を確認
helm env
これらの環境変数に、helm repo add
した結果が保存されます。
🧩 HELM_REPOSITORY_CONFIG
このファイルには、helm repo add
したrepogitoryが保存されています。
repositories:
- name: grafana
url: https://grafana.github.io/helm-charts
caFile: ""
certFile: ""
insecure_skip_tls_verify: false
💾 HELM_REPOSITORY_CACHE
リポジトリのキャッシュが保存されるディレクトリです。中を見るとこんなファイルが作られています 👇
grafana-charts.txt
grafana-index.yaml
🧠 grafana-charts.txt
と grafana-index.yaml
の違い
ファイル 役割 内容
grafana-index.yaml
は公式リポジトリから取得したindex.yaml
の複製です。Chartのメタデータ(バージョン、URL、依存関係など)が書かれています。
grafana-charts.txt
はHelm が自動生成しており、helm repo search
の時に 検索ように使用します。
の高速化用)
🔍 grafana-charts.txt
の中身
alloy
grafana-sampling
lgtm-distributed
phlare
promtail
tempo
loki
grafana
loki-distributed
...
この一覧は index.yaml
から抽出されたチャート名です。Helm はこのテキストを利用して、helm search repo
の検索速度を上げています。
📘 grafana-index.yaml
の中身
apiVersion: v1
entries:
grafana:
- version: 8.7.2
appVersion: 10.4.1
urls:
- https://github.com/grafana/helm-charts/releases/download/grafana-8.7.2/grafana-8.7.2.tgz
description: The leading tool for querying and visualizing metrics
loki:
- version: 5.46.0
appVersion: 2.9.1
urls:
- https://github.com/grafana/helm-charts/releases/download/loki-5.46.0/loki-5.46.0.tgz
これは、Grafana Helm Charts リポジトリの gh-pages
ブランチ にあるindex.yaml
の内容そのものです。
🧾 まとめ
項目 | 内容 |
---|---|
Helm Repository | チャートを保管・共有するサーバ |
index.yaml | リポジトリのメタ情報を記述したファイル |
charts.txt | ローカルに生成される検索キャッシュ |
helm repo add | index.yaml をダウンロードし、ローカルに登録 |
helm search repo | charts.txt と index.yaml を元にチャート一覧を検索 |
🚀 さいごに
helm repo add
は一見シンプルなコマンドですが、裏では「index.yaml の取得 → ローカルキャッシュ →検索最適化」という処理が行われています。
これを理解すると、Helm がどのようにチャートを扱っているかが一気に見えてきます。