Helm - Configmap - 只替换文件的内容而不是文件名
Helm - Configmap - Replace only the contents of file and not File Names
我已经在配置目录中定义了 application.properties 个文件。配置目录在下面的结构中。
config
application.properties
application-test.properties
application-dev.properties
application-prod.properties
我已经创建了一个 helm chart 来创建 configmap。 Helm 图表定义如下
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
由于这些是环境变量,因此它们必须是大写字母和 .应替换为_。所以,我修改了我的图表如下
data:
{{- (.Files.Glob "config/*").AsConfig | nindent 2 | upper | replace "." "_" }}
生成的configmap如下
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 }}
我已经在配置目录中定义了 application.properties 个文件。配置目录在下面的结构中。
config
application.properties
application-test.properties
application-dev.properties
application-prod.properties
我已经创建了一个 helm chart 来创建 configmap。 Helm 图表定义如下
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
由于这些是环境变量,因此它们必须是大写字母和 .应替换为_。所以,我修改了我的图表如下
data:
{{- (.Files.Glob "config/*").AsConfig | nindent 2 | upper | replace "." "_" }}
生成的configmap如下
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 }}