2

我想知道如何将 ConfigMap 添加到由 StatefulSet 生成的特定 pod。

我查看了规范,但无法弄清楚如何确保 pod 只安装具有特定标签的 ConfigMap。我已经准备好一个容器形式的解决方法。但是,我仍然想知道这是否可以开箱即用。

4

2 回答 2

1

您不能像特殊 pod 一样威胁同一 StatefulSet 中的 pod。仅仅因为您只能指定一个PodSpec对整个集合有效的单个。

你可以做的,但它仍然是一个 hack,是在每个 pod 中挂载所有版本的配置文件,并运行一个入口点脚本,该脚本使用基于 pod 名称的不同配置文件。我没有例子可以展示,但它应该很容易

于 2018-01-22T18:05:00.223 回答
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"
                  }
                ]
              }
            ]
          }

现在,nginxStatefulSet 的每个 Pod 中的容器都会尝试以my-secret-{pod ordinal}.

您只需要确保StatefulSet 的同一个命名空间中存在my-secret-0, my-secret-1, 等等。

项目文档中有更高级的注释用法。

于 2021-04-16T21:14:05.577 回答