kubernetes - 如何在配置映射中读取 env 属性文件
问题描述
我在图表/属性文件夹中有一个属性文件。例如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"
解决方案
您可以按照 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 }}
推荐阅读
- c# - 异常处理中间件不处理异常 - 调用 Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware (ASP.NET Core WebAPI)
- unity3d - Unity 和 Blender 之间的角色渲染方式不同
- python - 如何按顺序将 Python 和 shell 控制台输出写入文件?
- python - Django prefetch_related 和 N+1 - 它是如何解决的?
- multipartform-data - 使用图像作为多部分表单数据运行 Newman 集合时,Bitbucket 管道失败
- python - 性别的用户输入不起作用
- javascript - 如何在 JavaScript 中获取点击的 div?
- mysql - MYSQL 查询给出与 nodejs 中的输入值相同的输出
- python - 如何在coverage 和.coveragerc 中生成两个不同的报告?
- postgresql - PostgreSQL - 如何使用四个表进行连接查询?