Kubernetes 从ConfigMap使用正则表达式更新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一起使用 到目前为止,我成功地使用以下方法替换了单个值:

假设以下JSON:

{
“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并替换占位符的示例?答案基本相同,但范围在一个文件夹上。非常感谢你!我不知道这是怎么回事。我需要向我展示一些具有预期输出等的示例,但如果您为其创建一个新问题,则会更好。正确,我将使用您目前提供的解决方案。再次感谢