如何解决Kubernetes:使用“envFrom”定义依赖于其他环境变量的环境变量
我有两个 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
的变量替换将正常工作,但对于其他所有人,该文件是隐藏的。
解决方法
您没有解释为什么要定义两个 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'
如果您的要求不同,请忽略此回复并提供更多详细信息。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。