我在配置目录中定义了应用程序属性文件。配置目录位于以下结构中。
config
application.properties
application-test.properties
application-dev.properties
application-prod.properties
我已经定义了 configmap 如下
{{ range $path, $bytes := .Files.Glob "config/*" }}
{{ base $path }}: '{{- $.Files.Get $path | nindent 2 | upper | replace "." "_" }}'
{{- end }}
我们正在使用 envFrom 属性通过正在运行的容器中的环境变量来使用 ConfigMap。(这在我的部署 yaml 文件中)
spec:
containers:
- envFrom:
- configMapRef:
name: nginx-configmap
运行后helm install
,我看到生成了 configmap。
kubectl describe cm sample-configmap
Data
====
----
SERVER_PORT = 8080 SERVER_NAME = LOCALHOST SERVER_GREETING = GREETING-SERVICE
----
在 configmap 中,内容不会生成为单个字符串而不是键/值对。
甚至,在容器内部,值也不会存储为键/值对。它们存储为字符串。
kubectl exec -it <pod> sh
/data # env | grep application.properties
application.properties= SERVER_PORT = 8080 SERVER_NAME = LOCALHOST SERVER_GREETING = GREETING-SERVICE SAMPLE_GROUPA_PARAM1 = VALUE1BASE SAMPLE_GROUPA_PARAM2 = VALUE2BASE SAMPLE_HIGHERPARAM = VALUEHIGHERBASE
/data # echo $application.properties
.properties
/data # echo $SERVER_PORT
我也试过
data:
{{- (.Files.Glob "config/*").AsConfig | nindent 2 | upper | replace "." "_" }}
观察同样的问题。
是否可以在容器内的 env 中将 application.properties 的内容作为键/值对公开?