En el chat, pregunté sobre la capacidad de definir un objeto como este a través de --set
y me enfrenté con tristeza a la verdad:
env:
- name: ROUTER
value: cake
- name: PASSWORD
value: derp
Me gusta usar estrofas como estas en mi values.yaml
para definir las necesidades de variables env completas para una especificación de contenedor en particular, de modo que en la especificación solo necesito:
env:
{{ toYaml .Values.env | indent 10 }}
Hay muchas razones por las que esto es útil:
deployment
solo porque quiero pasar algunas otras variables al proceso principal.Lamentablemente, actualmente no se admite el paso de este tipo de objetos. Usar declaraciones if directamente en mis plantillas de la mejor manera para evitar esto por ahora, pero sería increíble definir grandes muestras de información potencialmente dinámica sobre mi aplicación directamente en values.yaml
De hecho, acabo de encontrar otra forma de hacer esto observando kube-lego
:
{{- range $key, $value := .Values.config }}
- name: "{{ $key }}"
value: "{{ $value }}"
{{- end }}
Mi problema es similar.
Queremos usar el gráfico aws-cluster-autoscaler en:
https://github.com/kubernetes/charts/tree/master/stable/aws-cluster-autoscaler
Nos gustaría pasar el nombre de autoscalingGroups []. A través de la línea de comando, usando --set
, y la otra información a través de un archivo params.yaml:
autoscalingGroups:
- minSize: 2
maxSize: 8
awsRegion: eu-west-1
Cuando intentamos configurar el nombre del grupo de autoescalado con:
$ helm upgrade cluster-autoscaler stable/aws-cluster-autoscaler -f params.yaml --set "autoscalingGroups[].name"="nodes.k8s.test.eu-west-1.aws.redacted.net"
Pero eso no funciona.
Al leer la documentación , esto se sabe, pero aún así sería bueno poder hacer esto.
Esto ahora es posible usando la siguiente sintaxis:
helm install foo --set env[0].name="ROUTER",env[0].value="cake"
Esto está documentado aquí .
Comentario más útil
Esto ahora es posible usando la siguiente sintaxis:
Esto está documentado aquí .