Как установить несколько значений с помощью руля?

Использование helm install может установить значение при установке диаграммы, например:

helm install --set favoriteDrink=slurm ./mychart

Теперь хочу установить значение как:

helm install --set aws.subnets="subnet-123456, subnet-654321" ./mychart

Но не удалось:

Error: failed parsing --set data: key " subnet-654321" has no value

Кажется, что helm --set знать запятую , и проверьте следующую строку в качестве ключа. Так что нельзя использовать в этом случае, когда установлена такая строка?


Проверено таким образом

helm install charts/mychart \
    --set aws.subnets={subnet-123456,subnet-654321}

Получил ошибку:

Error: This command needs 1 argument: chart name

Этот способ работает

helm install charts/mychart \
    --set aws.subnets="subnet-123456\,subnet-654321"

Ссылка

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

Ответ 1

Согласно https://github.com/kubernetes/helm/issues/1987#issuecomment-280497496, вы устанавливаете несколько значений с помощью фигурных скобок, например:

--set foo={a,b,c}

Итак, в вашем случае это будет так

--set aws.subnets={subnet-123456,subnet-654321}

Ответ 2

Формат и ограничения CLI могут варьироваться в зависимости от того, что ожидается в версии YAML. Например, если манифест YAML требует заполнения fields списком значений, YAML будет выглядеть следующим образом:

field:
  - value1
  - value2
  - value3 

Это было бы выражено в CLI руля как

--set field[0]=value1 --set field[1]=value2 --set field[2]=value3

В документации также --set field={value1,value2,value3} работает. В некоторых случаях это приводит к Error: This command needs 1 argument: chart name, поэтому я предоставляю приведенное выше предложение

Существуют также ограничения на то, какие символы могут использоваться в документации:

Вы можете использовать обратную косую черту для экранирования символов; --set name="value1\,value2" станет:

name: "value1,value2"