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

フォーマットのベストプラクティス

  1. イメージタグをクォートtag: "1.5.2"(floatパースを防止)、tag: 1.5.2 にしない
  2. リソース値をクォートcpu: "100m"m サフィックスの数値解釈を防止)
  3. 関連する値をグループ化 — image設定、service設定、ingress設定を別セクションに
  4. セクションにコメント — テンプレートが参照する値の各セクションの目的を説明
  5. 一貫したブールスタイル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ファイルにより、何が設定可能か理解しやすく、環境固有のオーバーライドの比較やプルリクエストでの変更レビューが容易になります。チャートメンテナーは複数チームが使用するチャートを管理する際に一貫したフォーマットの恩恵を受けます。

試してみる — YAML Formatter & Validator

フルツールを開く