我想知道如何将 ConfigMap 添加到由 StatefulSet 生成的特定 pod。
我查看了规范,但无法弄清楚如何确保 pod 只安装具有特定标签的 ConfigMap。我已经准备好一个容器形式的解决方法。但是,我仍然想知道这是否可以开箱即用。
我想知道如何将 ConfigMap 添加到由 StatefulSet 生成的特定 pod。
我查看了规范,但无法弄清楚如何确保 pod 只安装具有特定标签的 ConfigMap。我已经准备好一个容器形式的解决方法。但是,我仍然想知道这是否可以开箱即用。
您不能像特殊 pod 一样威胁同一 StatefulSet 中的 pod。仅仅因为您只能指定一个PodSpec
对整个集合有效的单个。
你可以做的,但它仍然是一个 hack,是在每个 pod 中挂载所有版本的配置文件,并运行一个入口点脚本,该脚本使用基于 pod 名称的不同配置文件。我没有例子可以展示,但它应该很容易
一个基于 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"
}
]
}
]
}
现在,nginx
StatefulSet 的每个 Pod 中的容器都会尝试以my-secret-{pod ordinal}
.
您只需要确保StatefulSet 的同一个命名空间中存在my-secret-0
, my-secret-1
, 等等。
项目文档中有更高级的注释用法。