Helm - 配置映射 - 仅替换文件内容,而不替换文件名



我已经在配置目录中定义了application.properties文件。

config
application.properties
application-test.properties
application-dev.properties
application-prod.properties

我创建了一个舵图来创建配置图。舵图定义如下

apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-configmap
data:
{{- (.Files.Glob "config/*").AsConfig | nindent 2 }}

我看到配置映射已创建。

我们使用envFrom属性通过正在运行的容器中的环境变量使用 ConfigMap。(这在我的部署 yaml 文件中)

spec:
containers:
- envFrom:
- configMapRef:
name: nginx-configmap

我看到这些值存储为环境变量。但是,变量为小写。

server.port=8080
server.name=localhost

由于这些是 env 变量,因此它们必须是大写的,并且 . 应替换为 _。所以,我修改了我的图表,如下所示

data:
{{- (.Files.Glob "config/*").AsConfig | nindent 2 | upper | replace "." "_" }}

生成的配置映射如下

APPLICATION_PROPERTIES: |
SERVER_PORT = 8080
SERVER_NAME = LOCALHOST

下面是容器内的 env 变量

APPLICATION_PROPERTIES=SERVER_PORT = 8080
SERVER_NAME = LOCALHOST

我的要求是只有文件的内容应该是大写的,. 应该替换为 _。 不应转换文件名。文件名应按原样显示。

这能实现吗?

试试这个:

apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-configmap
data:
{{ $root := . }}
{{ range $path, $bytes := .Files.Glob "config/*" }}
{{ base $path }}: '{{ $root.Files.Get $path | nindent 2 | upper | replace "." "_"  }}'
{{ end }}

最新更新