kubernetes 如何用postgress helm3.0设置多个参数

eit6fx6z  于 2023-01-16  发布在  Kubernetes
关注(0)|答案(2)|浏览(202)

我想将slave.extraVolumes设置为如下所示。

helm install my-db --set replication.enabled=true,slave.extraVolumes={"db-disk-1","db-disk-2"} bitnami/postgresql -n development

但上面写着错误

Error: expected at most two arguments, unexpected arguments: bitnami/postgresql

已经测试的方法:

helm install my-db --set replication.enabled=true,slave.extraVolumes={db-disk-1,db-disk-2} bitnami/postgresql -n development
Error: expected at most two arguments, unexpected arguments: bitnami/postgresql

helm install my-db --set replication.enabled=true,slave.extraVolumes="db-disk-1\,db-disk-2" bitnami/postgresql -n development
Error: YAML parse error on postgresql/templates/statefulset-slaves.yaml: error converting YAML to JSON: yaml: line 115: could not find expected ':'
zrfyljdw

zrfyljdw1#

(至少)有三件事正在发生:

  • slave.extraVolumesVolume结构的一个列表,因此只提供两个名称是无法完成的
  • 您正在使用对shell有意义的字符,而没有将它们引起来
  • 但最终这并不重要,因为您不能仅使用--set语法来表示复杂的结构,您需要使用--values来替换文件或进程
helm install my-db \
   --set replication.enabled=true \
   --values <(echo '{
      "slave": {
        "extraVolumes": [
          {
            "name": "db-disk-1",
            "emptyDir": {}
          },
          {
            "name": "db-disk-2",
            "emptyDir": {}
          }
        ]
      }
   }') \
   bitnami/postgresql -n development
7fhtutme

7fhtutme2#

对于来自Google的其他人来说,他们希望解决这个问题,而不是接受答案中模糊的postgresql特定的答案,几乎可以肯定,问题是mdaniel的第2点(“您使用的字符对shell有意义,而没有引用它们”),至少对现代的bash来说是这样。
这个答案解释了发生了什么-Stop shell wildcard character expansion?-以及如何修复它。这里你只需要转义花括号,就像这样:

helm install my-db --set replication.enabled=true,slave.extraVolumes='{"db-disk-1","db-disk-2"}' bitnami/postgresql -n development

helm install my-db --set replication.enabled=true,slave.extraVolumes=\{"db-disk-1","db-disk-2"\} bitnami/postgresql -n development

这正是您所需要的。helm帮助在这一点上沉默得令人恼火。

相关问题