Reputation: 5507
Use helm
install can set value when install a chart like:
helm install --set favoriteDrink=slurm ./mychart
Now want to set value like:
helm install --set aws.subnets="subnet-123456, subnet-654321" ./mychart
But failed:
Error: failed parsing --set data: key " subnet-654321" has no value
It seems that helm
's --set
know comma ,
and check the next string as a key. So can't use in this case when set such string?
helm install charts/mychart \
--set aws.subnets={subnet-123456,subnet-654321}
Got error:
Error: This command needs 1 argument: chart name
helm install charts/mychart \
--set aws.subnets="subnet-123456\,subnet-654321"
https://helm.sh/docs/intro/using_helm/#the-format-and-limitations-of---set
Upvotes: 38
Views: 119151
Reputation: 11
As previously mentioned, if you're trying to set a list you can use:
--set aws.subnets="{subnet-123456,subnet-654321}"
be careful not to put any space between items. And check the type you're trying to set and make sure you're using the correct format.
You can also use:
--set-json='aws.subnets=["subnet-123456", "subnet-654321"]'
More information and examples can be found here: https://helm.sh/docs/helm/helm_install/#options
Upvotes: 1
Reputation: 4994
With this change being merged, Helm now supports using multiple --set
command with helm install
command.
Manually tested, and looks awesome!
⇒ helm install --dry-run --debug docs/examples/alpine \
--set foo=bar \
--set bar=baz,baz=lurman \
--set foo=banana
SERVER: "localhost:44134"
CHART PATH: /Users/mattbutcher/Code/Go/src/k8s.io/helm/docs/examples/alpine
NAME: masked-monkey
REVISION: 1
RELEASED: Thu Jan 12 17:09:07 2017
CHART: alpine-0.1.0
USER-SUPPLIED VALUES:
bar: baz
baz: lurman
foo: banana
COMPUTED VALUES:
Name: my-alpine
bar: baz
baz: lurman
foo: banana
...
As expected, the last --set overrode the first --set.
P.S: Upgrade your Helm version in case this doesn't work for you. It worked perfectly for me with Helm-v3.0.1.
Upvotes: 10
Reputation: 71
Regarding this comment How to set multiple values with helm? I used quotes and this worked:
--set aws.subnets="{subnet-123456,subnet-654321}"
Upvotes: 4
Reputation: 5508
The CLI format and limitations can vary depending on what would be expected in a YAML version. For example, if the YAML manifest requires fields
to be populated with a list of values the YAML would look like this:
field:
- value1
- value2
- value3
This would be expressed in the helm CLI like so
--set field[0]=value1 --set field[1]=value2 --set field[2]=value3
The documentation also refers to --set field={value1,value2,value3}
working. In some cases that results in Error: This command needs 1 argument: chart name
which is why I provide the above suggestion
There are also limitations to what characters may be used per the documentation:
You can use a backslash to escape the characters;
--set name="value1\,value2"
will become:name: "value1,value2"
Upvotes: 16
Reputation: 8827
According to https://github.com/kubernetes/helm/issues/1987#issuecomment-280497496, you set multiple values using curly braces, for example:
--set foo={a,b,c}
So, in your case it would be like this
--set aws.subnets={subnet-123456,subnet-654321}
Upvotes: 21