如何读取配置映射中的 env 属性 文件

How to read env property file in the config map

我在 chart/properties 文件夹中有一个 属性 文件。例如 chart/properties/dev 是文件 它的内容如下所示

var1=somevalue1
var2=somevalue2


var3=somepwd=

var4=http://someurl.company.com

属性 文件中的一些值字符串有一个 =。 属性 文件中也有一些空行。

chart/configmap.yaml 如下所示

apiVersion: v1
kind: ConfigMap
metadata:
  name: env-configmap
  namespace: {{ .Release.Namespace }}
data:
{{ range .Files.Lines "properties"/.Values.env.required.environment }}
  {{ . | replace "=" ": " }}
{{ end }}

生成的yaml文件:

---
# Source: app/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: env-configmap
  namespace: default
data:

  var1: somevalue1

  var2: somevalue2
  
  var3: somepwd:

  var4: http://someurl.company.com

生成的输出 属性 条目在值中缺少双引号,因此当值字符串包含特殊字符时部署会抱怨它。

我期望 configmap.yaml 数据块是一个正确的 yaml(缩进 2),如具有上述更改的文件。通过上述更改,yaml 文件中每个 属性 条目后都有额外的行。当没有空行并且没有带 = 的值字符串时,我让这个部分工作。需要帮助才能正常工作。

预期的 yaml 文件:

---
# Source: app/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: env-configmap
  namespace: default
data:
  var1: "somevalue1"
  var2: "somevalue2"
  var3: "somepwd="
  var4: "http://someurl.company.com"

由于我的名声,我无法对你的问题发表评论。如果您的情况可行,您可以将配置映射用作文件。我认为阅读代码中的 属性 文件更容易。

https://kubernetes.io/docs/concepts/configuration/configmap/#using-configmaps-as-files-from-a-pod

您可以按照 go 模板语法来执行此操作。我更新config.yaml喜欢以下作品

apiVersion: v1
kind: ConfigMap
metadata:
  name: env-configmap
  namespace: {{ .Release.Namespace }}
data:
  {{ range .Files.Lines "properties"/.Values.env.required.environment }}
    {{- if ne . "" -}}
    {{- $parts := splitn "=" 2 . -}} # details about split function http://masterminds.github.io/sprig/string_slice.html
    {{ $parts._0 }}: {{ $parts._1 | quote }}
    {{end}}
  {{ end }}