我有一个关于Helm Chart的技术问题。我想我的ConfigMap模板导入yaml文件在我的文件目录,这些yaml文件是Java SpringBoot配置文件从我的应用程序,我可以导入文件,但他们是未格式化的。
Java SpringBoot配置文件示例
spring:
jpa:
hibernate:
ddl-auto: none
naming:
implicit-strategy: org.hibernate.boot.model.naming.ImplicitNamingStrategyComponentPathImpl
database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
#database-platform: org.hibernate.dialect.PostgreSQL95Dialect
datasource:
#### MYSQL ####
url: jdbc:mysql://mysql:3306/database
username: user
password: useabetteruserpassword
driver-class-name: com.mysql.cj.jdbc.Driver
ConfigMap模板
{{- if .Values.configMap.enabled -}}
apiVersion: v1
kind: ConfigMap
metadata:
name: configmap-local
data:
{{ (.Files.Glob "files/*").AsConfig | indent 2 }}
{{- end }}
舵机-干转输出
apiVersion: v1
kind: ConfigMap
metadata:
name: configmap-local
data:
test.yaml: "spring:rn jpa:rn hibernate:rn ddl-auto: nonern
naming:rn implicit-strategy: org.hibernate.boot.model.naming.ImplicitNamingStrategyComponentPathImplrn
database-platform: org.hibernate.dialect.MySQL5InnoDBDialectrn #database-platform:
org.hibernate.dialect.PostgreSQL95Dialectrn datasource:rn #### MYSQL ####rn
url: jdbc:mysql://mysql:3306/databasern username: userrn password:
useabetteruserpasswordrn driver-class-name: com.mysql.cj.jdbc.Driverrnrn
#### POSTGRES ####rn #url: jdbc:postgresql://postgres:5432/ver_infocenterrn
#username: ver_userrn #password: useabetteruserpasswordrn #driver-class-name:
org.postgresql.Driverrn"
谢谢@zer0。谢谢你的回答。我正在使用另一种解决方案,它满足了我的需求。
{{- if .Values.configMap.enabled -}}
apiVersion: v1
kind: ConfigMap
metadata:
name: configmap-local
data:
info-center-docker.yaml: |-
{{- .Files.Get "files/info-center-docker.yaml" | nindent 4 -}}
info-center-writer-docker.yaml: |-
{{- .Files.Get "files/info-center-writer-docker.yaml" | nindent 4 -}}
topic-configuration-3p.yaml: |-
{{- .Files.Get "files/topic-configuration-3p.yaml" | nindent 4 -}}
{{- end }}
这根本不是问题。这就是Kubernetes处理给定二进制数据流的方式。您将注意到,所有n
和t
字符都保留在配置映射中附加到键test.yaml
的数据blob中。
我说这不是问题,因为当这个ConfigMap
将提供给pod时,pod将能够从文件中读取这个值,并且这些文字字符将被翻译成空白,并且pod永远不会知道它们是这样存储的。
只是为了检查,您可以创建一个pod,并将这个ConfigMap
挂载到其中。然后进入pod并cat
这个文件,就会看到输出被格式化了。因此,您可以放心,应用程序的配置文件将以正确的形式收到。