【发布时间】:2021-08-31 18:03:52
【问题描述】:
我的deployment 中有一组使用EnvFrom 和configMapRef 的环境变量。这些 configMaps 中保存的环境变量是由 kustomize 最初从 json 文件设置的。
spec.template.spec.containers[0].
envFrom:
- secretRef:
name: eventstore-login
- configMapRef:
name: environment
- configMapRef:
name: eventstore-connection
- configMapRef:
name: graylog-connection
- configMapRef:
name: keycloak
- configMapRef:
name: database
问题是我无法直接访问特定的环境变量。
这是在 pod 中运行 printenv 的结果:
...
eventstore-login={
"EVENT_STORE_LOGIN": "admin",
"EVENT_STORE_PASS": "changeit"
}
evironment={
"LOTUS_ENV":"dev",
"DEV_ENV":"dev"
}
eventstore={
"EVENT_STORE_HOST": "eventstore-cluster",
"EVENT_STORE_PORT": "1113"
}
graylog={
"GRAYLOG_HOST":"",
"GRAYLOG_SERVICE_PORT_GELF_TCP":""
}
...
这意味着我需要从我的 nodejs 应用程序中执行类似的操作
> process.env.graylog
'{\n "GRAYLOG_HOST":"",\n "GRAYLOG_SERVICE_PORT_GELF_TCP":""\n}\n'
这仅返回与我的原始 json 文件对应的 json 字符串。但我希望能够做这样的事情:
process.env.GRAYLOG_HOST
检索我的环境变量。但我不想修改我的部署看起来像这样:
env:
- name: NODE_ENV
value: dev
- name: EVENT_STORE_HOST
valueFrom:
secretKeyRef:
name: eventstore-secret
key: EVENT_STORE_HOST
- name: EVENT_STORE_PORT
valueFrom:
secretKeyRef:
name: eventstore-secret
key: EVENT_STORE_PORT
- name: KEYCLOAK_REALM_PUBLIC_KEY
valueFrom:
configMapKeyRef:
name: keycloak-local
key: KEYCLOAK_REALM_PUBLIC_KEY
每个变量都被显式声明。我可以这样做,但维护起来更痛苦。
【问题讨论】:
-
你能显示其中一个相关 ConfigMap 的内容吗?那个 pod 规格对我来说似乎是正确的。
标签: node.js kubernetes kustomize