Kubernetes Learning 第33章:Helm Chartの構成 ~Kubernetesアプリをパッケージ化する設計図~

Helmを使ってアプリケーションをデプロイするとき、Chart(チャート)という単位でまとめて管理します。

Chartは「Kubernetesリソース(YAML)をパラメータ化して、使い回しできるようにしたテンプレート群」とも言えます。
具体的には、以下のようなフォルダ構造になります。

mychart/
├── Chart.yaml
├── values.yaml
├── charts/
├── templates/
│   ├── deployment.yaml
│   ├── service.yaml
│   └── _helpers.tpl
└── README.md(任意)

それぞれ何を意味しているのか、詳しく見ていきましょう。


📘 Chart.yaml

Chartのメタ情報が書かれたファイルです。名前・バージョン・説明・依存チャートなどを定義します。

apiVersion: v2
name: mychart
description: A sample Helm chart for Kubernetes
version: 0.1.0
appVersion: "1.0.0"
  • name: チャート名(例:mychart)
  • version: チャート自体のバージョン(Helm用)
  • appVersion: アプリケーションのバージョン(Dockerイメージのタグなど)

🧾 values.yaml

ここにアプリケーションの**設定値(パラメータ)**を書きます。
テンプレートファイル内で .Values.xxx という形で参照されます。

replicaCount: 2

image:
  repository: nginx
  tag: "1.25"
  pullPolicy: IfNotPresent

service:
  type: ClusterIP
  port: 80

この values.yaml--values オプションで上書きすることで、環境ごとの違いに柔軟に対応できます。


🧩 templates/ ディレクトリ

ここに Kubernetes の各種マニフェストを テンプレート化して配置 します。

templates/
├── deployment.yaml   # Deploymentリソースのテンプレート
├── service.yaml      # Serviceリソースのテンプレート
└── _helpers.tpl      # 関数や共通変数の定義

たとえば、 deployment.yaml はこんなふうに書けます:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ .Release.Name }}-deployment
spec:
  replicas: {{ .Values.replicaCount }}
  template:
    spec:
      containers:
        - name: app
          image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"

このように、 {{ ... }} で Goテンプレートの構文を使い、柔軟な展開が可能です。


🧠 _helpers.tpl(任意)

共通関数や命名規則をまとめて定義できます。
例:

{{- define "mychart.fullname" -}}
{{ .Release.Name }}-{{ .Chart.Name }}
{{- end -}}

テンプレート側ではこのように呼び出せます:

metadata:
  name: {{ include "mychart.fullname" . }}

📦 charts/ ディレクトリ(依存チャート)

もしこのチャートが、他のチャート(例:RedisやMySQL)に依存している場合は、ここに依存チャートが配置されます。

依存関係は Chart.yaml に書いて管理できます:

dependencies:
  - name: mysql
    version: 9.3.0
    repository: https://charts.bitnami.com/bitnami

✅ まとめ:Chart構成の全体像

ファイル役割
Chart.yamlチャートの名前・バージョンなど
values.yaml設定値(パラメータ)のデフォルト
templates/Kubernetesリソースのテンプレート
charts/依存チャート
_helpers.tpl再利用用のテンプレート関数

🛠️ ハンズオンしてみたい方へ

helm create mychart

このコマンドで雛形が自動生成されるので、まずはここからカスタマイズしてみるのが一番早いです。

mh

Related Posts

Kubernetes Learning 第32章:Helmの基本操作(install, upgrade, rollback)~マニフェスト管理をもっと効率よく、自動化するために~

Kubernetes Learning 第31章:コンテナのセキュリティ対策(PodSecurityなど)~Kubernetes環境を守るために最低限知っておきたいこと~

You Missed

Kubernetes Learning 第33章:Helm Chartの構成 ~Kubernetesアプリをパッケージ化する設計図~

  • 投稿者 mh
  • 6月 8, 2025
  • 10 views

現場で使えるChrome DevTools実践ガイド 第12章:ワークスペース連携とファイルのライブ編集

  • 投稿者 mh
  • 6月 7, 2025
  • 20 views

Google Cloud Platform エンジニア向け教科書:実践から認定まで : 第6章:Cloud Shellの活用:GCPを「どこからでも手軽に操作できる秘密基地」

  • 投稿者 mh
  • 6月 6, 2025
  • 29 views

Kubernetes Learning 第32章:Helmの基本操作(install, upgrade, rollback)~マニフェスト管理をもっと効率よく、自動化するために~

  • 投稿者 mh
  • 6月 5, 2025
  • 35 views

現場で使えるChrome DevTools実践ガイド 第11章:アクセシビリティの確認

  • 投稿者 mh
  • 6月 5, 2025
  • 38 views

Google Cloud Platform エンジニア向け教科書:実践から認定まで : 第5章:Cloud SDKとgcloudコマンド:GCPを「キーボードから操る」魔法のツール

  • 投稿者 mh
  • 6月 4, 2025
  • 44 views