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)
合并此更改后,Helm现在支持使用多个--set命令与helm install命令。
\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...\nRun Code Online (Sandbox Code Playgroud)\n\n\n正如预期的那样,最后一个 --set 覆盖了第一个 --set。
\n
PS:升级您的 Helm 版本,以防这对您不起作用。它与Helm-v3.0.1完美配合。
\nCLI 格式和限制可能会有所不同,具体取决于 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"会变成:Run Code Online (Sandbox Code Playgroud)name: "value1,value2"
根据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)