如何使现有的配置映射使用kubernetes机密



我是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/部署声明中的环境变量中,然后通过传递这些环境变量来启动您想要的任何服务。

最新更新