values.yaml 文件中的配置来动态决定 ConfigMap 的 data 字段内容。
在 Helm Chart 中,可以通过
values.yaml 文件中的配置来动态决定 ConfigMap 的 data 字段内容。以下是实现方法:修改 values.yaml 文件
在
values.yaml 文件中添加一个字段,用于指定要使用的配置路径。例如:yaml复制
confPath: "env/conf"
或者
yaml复制
confPath: "tee/conf"
修改 ConfigMap 的模板文件
在 ConfigMap 的模板文件中,使用
{{ .Values.confPath }} 来动态拼接路径。修改后的模板文件如下:yaml复制
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Values.nameOverride }}
data:
{{ (.Files.Glob (printf "%s/*conf" .Values.confPath)).AsConfig | indent 2 }}
解释
-
{{ .Values.confPath }}:从values.yaml文件中获取confPath的值。 -
(printf "%s/*conf" .Values.confPath):将confPath的值拼接到路径模式中,例如"env/conf/*conf"或"tee/conf/*conf"。 -
(.Files.Glob (printf "%s/*conf" .Values.confPath)).AsConfig:根据拼接后的路径模式,获取对应的文件内容并转换为 ConfigMap 的数据格式。 -
| indent 2:对生成的内容进行缩进,以符合 YAML 的格式要求。
使用示例
values.yaml 文件
yaml复制
nameOverride: my-configmap
confPath: "env/conf"
ConfigMap 模板文件
yaml复制
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Values.nameOverride }}
data:
{{ (.Files.Glob (printf "%s/*conf" .Values.confPath)).AsConfig | indent 2 }}
文件结构
复制
my-chart/
├── Chart.yaml
├── values.yaml
├── templates/
│ └── configmap.yaml
└── env/
└── conf/
└── example.conf
└── tee/
└── conf/
└── example.conf
部署时的命令
bash复制
helm install my-release ./my-chart
🔍 搜一下再回答
浙公网安备 33010602011771号