我想知道如何将ConfigMap添加到由StatefulSet生成的特定pod中。
我查看了规范,但我无法弄清楚如何确保pod只安装带有特定标签的ConfigMap。 我已经以容器的形式准备好了解决方法。但是,我仍然想知道这是否可以开箱即用。
答案 0 :(得分:1)
您不能将同一StatefulSet中的pod作为特殊pod进行威胁。仅仅因为您只能指定一个对整个集合有效的PodSpec
。
你可以做什么,但它仍然是一个黑客,是在每个pod中安装所有版本的配置文件并运行一个入口点脚本,该脚本使用基于pod名称的不同配置文件。我没有示例,但它应该很容易
答案 1 :(得分:0)
基于 Mutating Webhook 的更优雅的解决方案可用 https://github.com/spoditor/spoditor 来解决这个确切的问题。
本质上,它在 PodSpec
模板上使用自定义注释,例如:
annotations:
spoditor.io/mount-volume: |
{
"volumes": [
{
"name": "my-volume",
"secret": {
"secretName": "my-secret"
}
}
],
"containers": [
{
"name": "nginx",
"volumeMounts": [
{
"name": "my-volume",
"mountPath": "/etc/secrets/my-volume"
}
]
}
]
}
现在,StatefulSet 的每个 Pod 中的 nginx
容器将尝试以 my-secret-{pod ordinal}
的模式挂载自己的专用密钥。
您只需要确保 my-secret-0
、my-secret-1
等存在于 StatefulSet 的同一命名空间中。
在项目文档中有更高级的注解用法。