如何使用helm设置多个值?

onl*_*ine 15 string shell command-line-interface kubernetes kubernetes-helm

使用helminstall可以在安装图表时设置值,如:

helm install --set favoriteDrink=slurm ./mychart
Run Code Online (Sandbox Code Playgroud)

现在想要设置如下值:

helm install --set aws.subnets="subnet-123456, subnet-654321" ./mychart
Run Code Online (Sandbox Code Playgroud)

但失败了:

Error: failed parsing --set data: key " subnet-654321" has no value
Run Code Online (Sandbox Code Playgroud)

似乎helm--set认识逗号,,并检查下一个字符串作为重点.所以在这种情况下设置这样的字符串时不能使用?


以这种方式测试

helm install charts/mychart \
    --set aws.subnets={subnet-123456,subnet-654321}
Run Code Online (Sandbox Code Playgroud)

得到错误:

Error: This command needs 1 argument: chart name
Run Code Online (Sandbox Code Playgroud)

这种方式有效

helm install charts/mychart \
    --set aws.subnets="subnet-123456\,subnet-654321"
Run Code Online (Sandbox Code Playgroud)

参考

https://github.com/kubernetes/helm/blob/master/docs/using_helm.md#the-format-and-limitations-of---set

Ami*_*dav 9

合并此更改后,Helm现在支持使用多个--set命令与helm install命令。

\n

摘自上述链接:

\n
\n

手动测试,看起来棒极了!

\n
\n
\xe2\x87\x92  helm install --dry-run --debug docs/examples/alpine \\\n  --set foo=bar \\\n  --set bar=baz,baz=lurman \\\n  --set foo=banana\n\nSERVER: "localhost:44134"\nCHART PATH: /Users/mattbutcher/Code/Go/src/k8s.io/helm/docs/examples/alpine\nNAME:   masked-monkey\nREVISION: 1\nRELEASED: Thu Jan 12 17:09:07 2017\nCHART: alpine-0.1.0\nUSER-SUPPLIED VALUES:\nbar: baz\nbaz: lurman\nfoo: banana\n\nCOMPUTED VALUES:\nName: my-alpine\nbar: baz\nbaz: lurman\nfoo: banana\n...\n
Run Code Online (Sandbox Code Playgroud)\n
\n

正如预期的那样,最后一个 --set 覆盖了第一个 --set。

\n
\n

PS:升级您的 Helm 版本,以防这对您不起作用。它与Helm-v3.0.1完美配合。

\n


Mar*_*arc 8

CLI 格式和限制可能会有所不同,具体取决于 YAML 版本中的预期内容。例如,如果 YAML 清单需要fields填充一个值列表,YAML 将如下所示:

field:
  - value1
  - value2
  - value3 
Run Code Online (Sandbox Code Playgroud)

这将在 helm CLI 中这样表达

--set field[0]=value1 --set field[1]=value2 --set field[2]=value3
Run Code Online (Sandbox Code Playgroud)

该文档还涉及--set field={value1,value2,value3}工作。在某些情况下,Error: This command needs 1 argument: chart name这就是我提供上述建议的原因

对于每个文档可以使用的字符也有限制:

您可以使用反斜杠来转义字符;--set name="value1\,value2"会变成:

name: "value1,value2"
Run Code Online (Sandbox Code Playgroud)


Jav*_*ron 7

根据https://github.com/kubernetes/helm/issues/1987#issuecomment-280497496的说明,您可以使用花括号设置多个值,例如:

--set foo={a,b,c}
Run Code Online (Sandbox Code Playgroud)

所以,在您的情况下,就像这样

--set aws.subnets={subnet-123456,subnet-654321}
Run Code Online (Sandbox Code Playgroud)