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 第40章:Kubernetesのアップグレードとバージョン管理 ~安全にバージョンを上げるための基本知識~

Kubernetes Learning 第39章:CRD(Custom Resource Definition)とは?~Kubernetesに“自分専用のリソース”を追加する仕組み~

You Missed

Kubernetes Learning 第40章:Kubernetesのアップグレードとバージョン管理 ~安全にバージョンを上げるための基本知識~

  • 投稿者 mh
  • 6月 24, 2025
  • 56 views

Google Cloud Platform エンジニア向け教科書:実践から認定まで : 第13章:ストレージとデータベースの基礎 : オブジェクトストレージ: Cloud Storage(バケット、オブジェクト、ストレージクラス)- あなたの「データ置き場」

  • 投稿者 mh
  • 6月 23, 2025
  • 73 views

Kubernetes Learning 第39章:CRD(Custom Resource Definition)とは?~Kubernetesに“自分専用のリソース”を追加する仕組み~

  • 投稿者 mh
  • 6月 21, 2025
  • 72 views

Google Cloud Platform エンジニア向け教科書:実践から認定まで : 第12章:Cloud CDN(Content Delivery Network):あなたのWebサイトを「世界中のユーザーに超高速で届ける宅配便ネットワーク」

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

Kubernetes Learning 第38章:Operatorとは? ~Kubernetesに「運用の自動化ロボット」を組み込む仕組み~

  • 投稿者 mh
  • 6月 19, 2025
  • 79 views

Google Cloud Platform エンジニア向け教科書:実践から認定まで : 第11章:Cloud Load Balancing:あなたのGCPリソースを「賢く振り分ける交通整理の達人」

  • 投稿者 mh
  • 6月 18, 2025
  • 95 views