文章目录
一、概述
helm3中可通过.Files对象并结合方法获取文件内容,包含文件名称和文件具体内容。
通过这样的方式获取的文件内容不能是chart包创建后默认生成的文件内容,以下文件中的内容都无法获取到
mychart/
├── charts/
├── templates/
├── Chart.yaml
└── values.yaml
在chart包内手动创建的文件夹,里面的文件内容可被获取
mychart/
├── charts/
├── templates/
├── files/ # 只有这里的文件可以被 .Files.Get 访问
│ ├── config.json
│ └── data.txt
├── Chart.yaml
└── values.yaml
引用文件时,文件目录是相当路径,相当chart/
二、获取文件内容
1. 使用方法
获取文件内容的方法
yaml
data: {{ .Files.Get "文件目录" }} 注意为相对目录
按找行获取文件内容
yaml
data: {{ .Files.Lines "文件目录" }}
获取文件路径和内容
yaml
# 获取目录下所有文件路径
{{ .Files.Glob "目录/*" }}
## 递归匹配
{{ .Files.Glob "目录/**" }}
2. 示例
.Files.Get获取文件内容
创建chart包
bash
[root@k8s-master m1]# helm create chart
[root@k8s-master m1]# cd chart/
[root@k8s-master chart]# rm -rf templates/*
[root@k8s-master chart]# echo "" > values.yaml
创建文件
bash
[root@k8s-master chart]# mkdir file
[root@k8s-master chart]# cat file/test.txt
test
获取文件所有内容
bash
[root@k8s-master chart]# cat templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}
data:
file: {{ .Files.Get "file/test.txt" }}
试运行查看结果
bash
# Source: chart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: chart
data:
file: test
.Files.Lines获取文件内容
逐行遍历文件内容
yaml
[root@k8s-master m1]# cat chart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}
data:
{{- range $index,$line := .Files.Lines "file/test.txt" }}
{{ if $line }}
{{ $index }}: {{ $line | quote }}
{{- end }}
{{- end }}
[root@k8s-master m1]# cat chart/file/test.txt
test1
test2
test3
test4
试运行结果
yaml
# Source: chart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: chart
data:
0: "test1"
1: "test2"
2: "test3"
3: "test4"
.Files.Glob获取文件路径
bash
[root@k8s-master m1]# touch chart/file/test{2..4}.txt
[root@k8s-master m1]# mkdir -p chart/file/file1/test{1..3}.txt
获取文件路径
yaml
[root@k8s-master m1]# cat chart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}
data:
{{- range $path,$content := .Files.Glob "file/*" }}
{{ $path }}: {{ $content }}
{{- end }}
# 如果只想要路径,可以如下
{{- range $path,$_ := .Files.Glob "file/*" }}
path: {{ $path }}
{{- end }}
试运行结果
bash
# Source: chart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: chart
data:
file/test.txt: "test1\ntest2\ntest3\ntest4\n"
file/test2.txt: ""
file/test3.txt: ""
file/test4.txt: ""
学习内容参考:helm3实战