如何将 Configmap 添加到 StatefulSet 中的特定 Pod?
How to add a Configmap to a specific Pod In a StatefulSet?
我想知道如何将 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"
}
]
}
]
}
现在,StatefulSet 的每个 Pod 中的 nginx
容器将尝试以 my-secret-{pod ordinal}
.
的模式挂载其自己的专用密钥
您只需确保 my-secret-0
、my-secret-1
等存在于 StatefulSet 的同一命名空间中。
项目文档中有更多关于注解的高级用法。
我想知道如何将 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"
}
]
}
]
}
现在,StatefulSet 的每个 Pod 中的 nginx
容器将尝试以 my-secret-{pod ordinal}
.
您只需确保 my-secret-0
、my-secret-1
等存在于 StatefulSet 的同一命名空间中。
项目文档中有更多关于注解的高级用法。