我是kubernetes的新手,我必须为现有的带有硬记录密码的配置映射实现kubernete机密。
我为每个pod有2个配置映射,1个settings.yaml和其他settings_override.yaml。我必须让override文件读取我保存base64机密的环境变量。我已经创造了秘密,可以在printenv之后的pod中看到它们。
请建议我如何使我的settings_override.yaml文件读取这些环境机密。
注意:如果我只是从settings_override.yaml文件中删除key:value对,那么它将从settings.yaml中拾取值,而不是从我的env变量中拾取值。
设置和设置覆盖文件以供参考:
apiVersion: v1
data: setting.json: | {
"test": {
"testpswd": "test123",
"testPort": "123",
},
}
apiVersion: v1
data: setting_override.json: | {
"test": {
"testpswd": "test456",
"testPort": "456",
},
}
据我所知,您试图实现的目标在Kubernetes中是不可能的。
一般提醒:Secrets
代表机密数据,ConfigMaps
代表非机密数据。
不能将Secret
导入ConfigMap
,反之亦然。
但是,您可以从Secret
(secretKeyRef
(或ConfigMap
(configMapKeyRef
(中填充环境变量,如下所示:
env:
- name: FOO
valueFrom:
configMapKeyRef:
name: nonconfidentialdatahere
key: nonconfidentialdatahere
- name: BAR
valueFrom:
secretKeyRef:
name: confidentialdatahere
key: confidentialdatahere
因此,我建议您将ConfigMap
中的端口和Secret
中的密码读取到pod/部署声明中的环境变量中,然后通过传递这些环境变量来启动您想要的任何服务。