如何通过循环嵌套的 helm 值来创建 k8s configmap

How to create a k8s configmap by looping over nested helm values

helm 值如下例所示。这里 appdata 可以扩展到任何数字,但将包含相同的键集。

data:
  appdata:
    config0:
      url: 'https://example1.com'
      port: '80'
    config1:
      url: 'https://example2.com'
      port: '8673'
    someotherconfig:
      url: 'https://example3.com'
      port: '9887'
    ...
    ...

这就是我目前所拥有的。这会不断从 someotherconfig 键更新最后一个配置的数据,而且我希望配置映射名称包含每次迭代的配置名称,例如 {{ template "app" $ }}-config0, {{ template " app" $ }}-config1 等基于迭代。

{{- range $Mydata := $.Values.data.appdata }}
apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ template "app" $ }}
  labels:
data:
  url: {{ $Mydata.url }}
  port: {{ $Mydata.port }}
{{- end }}

你快到了。您需要使用 key/value 表示法来获取键名。请尝试以下操作。

{{- range $configuration, $Mydata := $.Values.data.appdata }}
apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ template "app" $ }}-{{ $configuration }}
data:
  url: {{ $Mydata.url }}
  port: {{ $Mydata.port }}
{{- end }}