我有两个 ConfigMap
文件。一个应该是“秘密”值,另一个是常规值,应该导入秘密。
这是示例密钥 ConfigMap
:
kind: ConfigMap
metadata:
name: secret-cm
data:
MY_SEKRET: 'SEKRET'
以及常规的 ConfigMap
文件:
kind: ConfigMap
metadata:
name: regular-cm
data:
SOME_CONFIG: 123
USING_SEKRET: $(MY_SEKRET)
而我的部署如下:
kind: Deployment
spec:
template:
spec:
containers:
- name: my_container
envFrom:
- configMapRef:
name: secret-cm
- configMapRef:
name: regular-cm
我希望我的变量 USING_SEKRET
是 "SEKRET"
,因为 envFrom
文件被导入的顺序,但它们在 Pod 上只是显示为 "$(MY_SEKRET)"
。>
我也试过直接在 Deployment 中将因变量设置为 env
,但结果是同样的问题:
kind: Deployment
...
env:
- name: MY_SEKRET
# Not the expected result because the variable is openly visible but should be hidden
value: 'SEKRET'
我试图遵循基于 Define an environment dependent variable for a container 的文档指南,但我还没有看到与我想要做的类似的示例。
有没有办法做到这一点?
编辑:
为了解释我在这种结构背后的想法,secret-cm
整个文件将在存储库中加密,因此并非所有对等方都能够看到其内容。
另一方面,我仍然希望能够向所有人展示其变量的使用位置,因此对 regular-cm
的依赖。
这样,授权的对等方可以运行 kubectl
命令,secret-cm
的变量替换将正常工作,但对于其他所有人,该文件是隐藏的。
答案 0 :(得分:1)
您没有解释为什么要定义两个 configmap(一个从另一个获取值),但我假设您希望 confgimap 中定义的 env 参数名称独立于 pod 中容器使用的参数名称。如果是这种情况,则创建您的 configmap
kind: ConfigMap metadata: name: secret-cm data: MY_SEKRET: 'SEKRET'
然后在您的部署中使用 configmap 中的 env 变量
kind: Deployment
spec:
template:
spec:
containers:
- name: my_container
env:
- name: USING_SEKRET
valueFrom:
configMapKeyRef:
name: secret-cm
key: MY_SEKRET
现在当你访问环境变量 $USING_SEKRET 时,它会显示值为 'SEKRET'
如果您的要求不同,请忽略此回复并提供更多详细信息。