@int128

int128.hatenablog.com

Helmfile supports inlined values in YAML

HelmfileはKubernetesクラスタのHelm releasesを管理するツールです。 helmfile.yaml にデプロイしたいHelm chartを書いて helmfile sync を実行するだけでインストールやアップグレードを冪等にやってくれるので便利です。

例えば、Kubernetes DashboardとHeapsterをクラスタに配置したい場合は以下のYAMLを書くだけでOKです。

releases:
  - name: kubernetes-dashboard
    namespace: kube-system
    chart: stable/kubernetes-dashboard
  - name: heapster
    namespace: kube-system
    chart: stable/heapster
    values:
      - rbac:
          create: true

設定値を変更したい場合はYAMLを変更して helmfile sync を実行すると反映されます。

これまで、Helm chartに設定値を渡したい場合は設定値をkey=valueの形式で記述する必要がありました。Helmコマンドは設定値をYAMLで書けるのに、Helmfileではkey=valueのリストで書く必要がありました。例えばこんな感じです。

releases:
  - name: kubernetes-dashboard-proxy
    namespace: kube-system
    chart: int128.github.io/kubernetes-dashboard-proxy
    set:
      - name: ingress.enabled
        value: true
      - name: ingress.hosts[0]
        value: {{ requiredEnv "KUBE_DASHBOARD_DOMAIN" }}

Helmfile 0.16.0から設定値をインラインで書けるようになりました。これによりYAMLの可読性が大きく改善しました。

releases:
  - name: kubernetes-dashboard-proxy
    namespace: kube-system
    chart: int128.github.io/kubernetes-dashboard-proxy
    values:
      - ingress:
          enabled: true
          hosts:
            - {{ requiredEnv "KUBE_DASHBOARD_DOMAIN" }}

もしHelmコマンドとvalues.yamlファイルで構成管理を行っている場合、それらを1つの helmfile.yaml にまとめると管理しやすくなります。ぜひ試してみてください。

See also


入門 Kubernetes

入門 Kubernetes

コンテナ・ベース・オーケストレーション Docker/Kubernetesで作るクラウド時代のシステム基盤

コンテナ・ベース・オーケストレーション Docker/Kubernetesで作るクラウド時代のシステム基盤