web-dev-qa-db-fra.com

Comment définir plusieurs valeurs avec Helm?

Utilisez helm install peut définir une valeur lors de l'installation d'un graphique comme:

helm install --set favoriteDrink=slurm ./mychart

Maintenant, voulez définir une valeur comme:

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

Mais a échoué:

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

Il semble que helm soit --set connaître la virgule , et vérifiez la chaîne suivante comme clé. Vous ne pouvez donc pas l'utiliser dans ce cas lorsque vous définissez une telle chaîne?


Testé de cette façon

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

Vous avez une erreur:

Error: This command needs 1 argument: chart name

De cette façon fonctionne

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

Référence

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

11
online

Selon https://github.com/kubernetes/helm/issues/1987#issuecomment-280497496 , vous définissez plusieurs valeurs à l'aide d'accolades, par exemple:

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

Donc, dans votre cas, ce serait comme ça

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

Le format CLI et les limitations peuvent varier en fonction de ce qui serait attendu dans une version YAML. Par exemple, si le manifeste YAML nécessite que fields soit rempli avec une liste de valeurs, le YAML ressemblera à ceci:

field:
  - value1
  - value2
  - value3 

Cela serait exprimé dans la CLI de la barre comme si

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

La documentation fait également référence à --set field={value1,value2,value3} travail. Dans certains cas, cela se traduit par Error: This command needs 1 argument: chart name c'est pourquoi je fais la suggestion ci-dessus

Il existe également des limitations quant aux caractères pouvant être utilisés selon la documentation :

Vous pouvez utiliser une barre oblique inverse pour échapper aux personnages; --set name="value1\,value2" va devenir:

name: "value1,value2"
3
Marc

Concernant ce commentaire Comment définir plusieurs valeurs avec Helm? J'ai utilisé des guillemets et cela a fonctionné:

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