🦔

Helmチャートの.Files.Globを使ってファイル追加を動的に反映させる方法

2024/11/04に公開

.Files.Glob

As your chart grows, you may find you have a greater need to organize your files more, and so we provide a Files.Glob(pattern string) method to assist in extracting certain files with all the flexibility of glob patterns.

特定パターンのファイルを読み取って自動的に拡張する。という趣旨。
以下の場合、filesディレクトリにどんどん.yamlを追加していけば、configmap側も自動的に読み込んで拡張してくれるというもの。

ディレクトリ構造

.
├── Chart.yaml
├── charts
├── files
│   ├── test1.yaml
│   ├── test2.yaml
│   └── test3.yaml
├── templates
│   └── configmap.yaml
└── values.yaml

files/test1.yaml

name: aaa

files/test2.yaml

name: bbb

files/test3.yaml

name: ccc

template/configmap.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: test-config
data:
{{- $currentScope := . -}}
{{- range $path, $_ := .Files.Glob "files/**.yaml" }}
  {{ (base $path) }}: |-
{{ tpl ($currentScope.Files.Get $path) $currentScope | indent 4 }}
{{- end }}

helm templateコマンド実行

---
# Source: charts/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: test-config
data:
  test1.yaml: |-
    name: aaa

  test2.yaml: |-
    name: bbb

  test3.yaml: |-
    name: ccc

参考

https://helm.sh/docs/chart_template_guide/accessing_files/#glob-patterns

Discussion