Managing Chart Files

1. Reading File Content

Example: Inline file in ConfigMap

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ include "myapp.fullname" . }}-conf
data:
  app.conf: |-
    {{- .Files.Get "conf/app.conf" | nindent 4 }}

2. Listing Files

CallReturns
.Files.Glob "configs/*"Map of relative path → bytes
(.Files.Glob "configs/*").AsConfigConfigMap-style YAML map
(.Files.Glob "secrets/*").AsSecretsBase64-encoded Secret data

3. Reading Files as Bytes

Example: Binary file

data:
  logo.png: {{ .Files.GetBytes "files/logo.png" | b64enc }}

4. Using Files in ConfigMaps

Example: Glob to ConfigMap

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ include "myapp.fullname" . }}-configs
data:
  {{- (.Files.Glob "configs/*.yaml").AsConfig | nindent 2 }}

5. Using Files in Secrets

Example: Glob to Secret

apiVersion: v1
kind: Secret
metadata:
  name: {{ include "myapp.fullname" . }}-certs
type: Opaque
data:
  {{- (.Files.Glob "certs/*").AsSecrets | nindent 2 }}

6. Iterating Over Files

Example: Loop with range

{{- range $path, $bytes := .Files.Glob "scripts/*.sh" }}
  {{ base $path }}: |-
{{ $.Files.Get $path | indent 4 }}
{{- end }}

7. Checking File Existence

PatternBehavior
{{ if .Files.Get "x" }}…{{ end }}Empty string if missing
{{ if (.Files.Glob "configs/*") }}…{{ end }}Empty map if no matches

8. Encoding File Content

PipelineUse
.Files.Get "x" | b64encBase64 (for Secret data)
.Files.Get "x" | sha256sumChecksum for change-detection annotation
.Files.GetBytes "x" | b64encBinary-safe

9. Including Binary Files

Warning: Always use .Files.GetBytes (not Get) for binary files. Get performs UTF-8 sanitization and corrupts non-text bytes.

10. Organizing Static Files

DirectoryConvention
files/Generic static assets
configs/App config files for ConfigMap embedding
scripts/Shell/SQL scripts
dashboards/Grafana JSON dashboards
Note: Anything outside templates/, crds/, charts/ is accessible via .Files (subject to .helmignore).