HelmチャートのValues.yamlファイルのフォーマット
Helmチャートのvalues.yamlファイルをイメージタグ、リソース制限、Ingressルール、環境固有のオーバーライドの適切な構造でフォーマット・検証します。Helmチャートのベストプラクティスに従います。
Real-World
詳細な説明
Helm values.yamlフォーマット
HelmはKubernetesのパッケージマネージャーであり、values.yaml ファイルはHelmチャートの主要な設定インターフェースです。このファイルはテンプレートがKubernetesマニフェストを生成するために使用するデフォルト値を定義します。
values.yaml構造
# my-appチャートのデフォルト値
replicaCount: 3
image:
repository: my-registry.io/my-app
tag: "1.5.2"
pullPolicy: IfNotPresent
service:
type: ClusterIP
port: 80
ingress:
enabled: true
className: nginx
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
hosts:
- host: app.example.com
paths:
- path: /
pathType: Prefix
tls:
- secretName: app-tls
hosts:
- app.example.com
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 500m
memory: 256Mi
env:
- name: DATABASE_URL
valueFrom:
secretKeyRef:
name: app-secrets
key: database-url
autoscaling:
enabled: false
minReplicas: 2
maxReplicas: 10
targetCPUUtilizationPercentage: 80
フォーマットのベストプラクティス
- イメージタグをクォート —
tag: "1.5.2"(floatパースを防止)、tag: 1.5.2にしない - リソース値をクォート —
cpu: "100m"(mサフィックスの数値解釈を防止) - 関連する値をグループ化 — image設定、service設定、ingress設定を別セクションに
- セクションにコメント — テンプレートが参照する値の各セクションの目的を説明
- 一貫したブールスタイル —
true/false(小文字)を一貫して使用
環境固有のオーバーライド
Helmは異なる環境向けの値オーバーライドをサポートしています:
# values-production.yaml(デフォルトを上書き)
replicaCount: 5
resources:
requests:
cpu: 500m
memory: 512Mi
limits:
cpu: "1"
memory: 1Gi
autoscaling:
enabled: true
minReplicas: 3
maxReplicas: 20
よくある間違い
- 数値文字列のクォート忘れ —
100mのようなKubernetesリソース値や3.9のようなイメージタグは数値としてパースされる - ネストキーの競合 — 単一のネストキーのオーバーライドは、Helmのディープマージを使用しない限り、親マッピング全体を置き換える
- 未使用の値 — 大きなvalues.yamlファイルにはテンプレートが参照しないキーが蓄積される
- デフォルトの欠落 — テンプレートで参照されるすべての値にvalues.yamlでデフォルトがあるべき
ユースケース
Helm values.yamlフォーマットはKubernetesにアプリケーションをデプロイするチームにとって不可欠です。適切にフォーマットされたvaluesファイルにより、何が設定可能か理解しやすく、環境固有のオーバーライドの比較やプルリクエストでの変更レビューが容易になります。チャートメンテナーは複数チームが使用するチャートを管理する際に一貫したフォーマットの恩恵を受けます。