在Kubernetes配置映射中使用敏感环境变量
我知道您可以在pod规范中使用ConfigMap属性作为环境变量,但是您可以在ConfigMap中使用pods规范中声明的环境变量吗 例如: 我有一个秘密密码,我希望在configmap application.properties中访问该密码。秘密看起来是这样的:在Kubernetes配置映射中使用敏感环境变量,kubernetes,openshift,amazon-eks,configmap,Kubernetes,Openshift,Amazon Eks,Configmap,我知道您可以在pod规范中使用ConfigMap属性作为环境变量,但是您可以在ConfigMap中使用pods规范中声明的环境变量吗 例如: 我有一个秘密密码,我希望在configmap application.properties中访问该密码。秘密看起来是这样的: apiVersion: v1 data: pw: THV3OE9vcXVpYTll== kind: Secret metadata: name: foo namespace: foo-bar type: Opaque
apiVersion: v1
data:
pw: THV3OE9vcXVpYTll==
kind: Secret
metadata:
name: foo
namespace: foo-bar
type: Opaque
因此,在pod规范中,我将机密引用为env变量。configMap将作为规范中的卷进行装载:
env:
- name: PASSWORD
valueFrom:
secretKeyRef:
name: foo
key: pw
...
然后,在我的configMap中,我可以引用机密值,如下所示:
apiVersion: v1
kind: ConfigMap
metadata:
name: application.properties
namespace: foo-bar
data:
application.properties: /
secret.password=$(PASSWORD)
我在网上找到的任何东西都是关于将configMap值作为env vars使用的,没有提到在configMap值中使用env vars。目前它不是Kubernetes功能。 有一个已关闭的问题要求提供此功能,这是一个有争议的话题,因为讨论在关闭几个月后仍在继续: 参考结束语: 最佳实践是不要在envvars中使用秘密值,而只将其作为挂载文件使用。如果希望将所有配置值保留在单个对象中,可以将所有值放置在一个秘密对象中,并以这种方式引用它们。 通过configmaps引用机密不是目标。。。它混淆了装载或注入配置映射的内容是否装载了机密值 我建议您阅读整个线程来理解他的原因,也许可以为您的环境找到另一种方法来获取这些变量
“好吧,但这是真实的生活,我需要让它发挥作用” 那么我向您推荐以下解决方法:
它使用容器入口点中的壳进行替换 为什么要将值从机密复制到configmap?你也可以直接将你的秘密装入吊舱。您能详细说明一下您的用例吗?@anmolagrawal我希望将敏感值安全地传递到我的configmap中。在configmap中保留敏感信息不是一个好做法。你总是用这个秘密。很抱歉,我仍然不理解这个用例。@anmolagrawal好的,我不知道如何才能让它更清楚,但谢谢你的评论。谢谢你的评论,以及“真实生活”小节。不幸的是,我们正在使用的代码是硬编码的,用于从app.properties文件中查找秘密值,因此不幸的是,我们需要这种变通方法。