Im Chat fragte ich nach der Möglichkeit, ein Objekt wie dieses über --set
und wurde leider mit der Wahrheit konfrontiert:
env:
- name: ROUTER
value: cake
- name: PASSWORD
value: derp
Ich verwende gerne Zeilengruppen wie diese in meinen values.yaml
, um den gesamten Bedarf an env-Variablen für eine bestimmte Containerspezifikation zu definieren, sodass ich in der Spezifikation nur Folgendes benötige:
env:
{{ toYaml .Values.env | indent 10 }}
Es gibt viele Gründe, warum dies nützlich ist:
deployment
Objekt vollständig neu bereitzustellen, nur weil ich ein paar andere Variablen an den Hauptprozess übergeben möchte.Leider wird die Übergabe dieser Objekttypen derzeit nicht unterstützt. Verwenden Sie if-Anweisungen direkt in meinen Vorlagen, um dies im Moment am besten zu umgehen, aber es wäre großartig, große Mengen potenziell dynamischer Informationen über meine App direkt in values.yaml
Ich habe gerade einen anderen Weg gefunden, dies zu tun, indem ich kube-lego
:
{{- range $key, $value := .Values.config }}
- name: "{{ $key }}"
value: "{{ $value }}"
{{- end }}
Mein Problem ist ähnlich.
Wir möchten den Chart aws-cluster-autoscaler verwenden bei:
https://github.com/kubernetes/charts/tree/master/stable/aws-cluster-autoscaler
Wir möchten die autoscalingGroups[].name über die Befehlszeile mit --set
und die anderen Informationen über eine Datei params.yaml übergeben:
autoscalingGroups:
- minSize: 2
maxSize: 8
awsRegion: eu-west-1
Wenn wir versuchen, den Namen der Autoscaling-Gruppe festzulegen mit:
$ helm upgrade cluster-autoscaler stable/aws-cluster-autoscaler -f params.yaml --set "autoscalingGroups[].name"="nodes.k8s.test.eu-west-1.aws.redacted.net"
Aber das geht nicht.
Wenn man die Dokumentation liest, ist dies bekannt, aber es wäre trotzdem schön, dies tun zu können.
Dies ist nun mit folgender Syntax möglich:
helm install foo --set env[0].name="ROUTER",env[0].value="cake"
Dies ist hier dokumentiert.
Hilfreichster Kommentar
Dies ist nun mit folgender Syntax möglich:
Dies ist hier dokumentiert.