我是kubernetes的新手,我必须使用硬编码的密码为现有configmap实现kubernetes秘密。
我为每个Pod提供2个配置映射,其中1个settings.yaml和其他settings_override.yaml。我必须让覆盖文件读取保留了base64机密的环境变量。 我创建了秘密,可以在printenv之后在豆荚中看到它们。
请建议我如何让我的settings_override.yaml文件读取这些环境秘密。
注意:如果我只是从settings_override.yaml文件中删除key:value对,则它是从settings.yaml中选择值,而不是从我的env变量中选择。
设置和setting_override文件供参考:
apiVersion: v1
data: setting.json: | {
"test": {
"testpswd": "test123",
"testPort": "123",
},
}
apiVersion: v1
data: setting_override.json: | {
"test": {
"testpswd": "test456",
"testPort": "456",
},
}
答案 0 :(得分:1)
据我所知,在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 / deployment声明中的环境变量,然后通过传递这些环境变量来启动所需的任何服务。