Как установить несколько значений с помощью руля?
Использование 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"
Ответ 3
Что касается этого комментария Как установить несколько значений с помощью helm? Я использовал кавычки, и это сработало:
--set aws.subnets="{subnet-123456,subnet-654321}"