Kubernetes 从ConfigMap使用正则表达式更新JSON文件占位符
假设以下JSON:Kubernetes 从ConfigMap使用正则表达式更新JSON文件占位符,kubernetes,kubernetes-helm,Kubernetes,Kubernetes Helm,假设以下JSON: { “A”:{ “A_键”:“%PLACEHOLDER_1%”, “B_键”:“%PLACEHOLDER_2%” } } 以及以下值。yaml: 占位符: 占位符1:你好 占位符2:世界 我想使用Configmap将这个JSON加载到我的pod中。但是,根据键自动将占位符替换为values.yaml下的值。 考虑编写一个简单的正则表达式,搜索两个%之间的单词,并将该单词与.Values.placeholder.$1一起使用 到目前为止,我成功地使用以下方法替换了单个值:
{
“A”:{
“A_键”:“%PLACEHOLDER_1%”,
“B_键”:“%PLACEHOLDER_2%”
}
}
以及以下值。yaml:
占位符:
占位符1:你好
占位符2:世界
我想使用Configmap将这个JSON加载到我的pod中。但是,根据键自动将占位符替换为values.yaml
下的值。
考虑编写一个简单的正则表达式,搜索两个%
之间的单词,并将该单词与.Values.placeholder.$1
一起使用
到目前为止,我成功地使用以下方法替换了单个值:
apiVersion:v1
种类:配置地图
元数据:
名称:config
数据:
config.json:|-
{{-regexReplaceAll“%PLACEHOLDER_1%”(.Files.Get“config.json”).Values.PLACEHOLDER.PLACEHOLDER_1|nindent 4}
最终目标是用单个正则表达式替换占位符_1和占位符_2
所需的JSON:
{
“A”:{
“A_键”:“你好”,
“B_键”:“世界”
}
}
任何帮助都会非常感激。以下是我的建议:
apiVersion: v1
kind: ConfigMap
metadata:
name: config
data:
config.json: |-
{{- $file := .Files.Get "config.json" }}
{{- range $k, $v := .Values.placeholders }}
{{- $file = regexReplaceAll (printf "%%%s%%" $k) $file $v }}
{{- end }}
{{- print $file | nindent 4 }}
我将配置文件内容加载到
$file
变量中,然后从values.yaml文件迭代所有placeholers.keys并逐个替换它们,将输出保存回同一变量。最后,$file
变量替换了所有字段,所以我只打印它。我已经在上面呆了很久了,谢谢!您是否有从文件夹加载多个JSON并替换占位符的示例?答案基本相同,但范围在一个文件夹上。非常感谢你!我不知道这是怎么回事。我需要向我展示一些具有预期输出等的示例,但如果您为其创建一个新问题,则会更好。正确,我将使用您目前提供的解决方案。再次感谢