Helm: Soporte para objetos complejos en conjuntos

Creado en 3 mar. 2017  ·  3Comentarios  ·  Fuente: helm/helm

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:

  1. No tengo que preocuparme por pasar variables vacías a mi aplicación.
  2. Todas las variables se definen en una única ubicación, por lo que si cambiara el nombre de una variable, puedo configurarlo rápidamente y seguir mi camino.
  3. Nunca tengo que preocuparme por volver a implementar completamente algo como un objeto 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

feature

Comentario más útil

Esto ahora es posible usando la siguiente sintaxis:

helm install foo --set env[0].name="ROUTER",env[0].value="cake"

Esto está documentado aquí .

Todos 3 comentarios

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í .

¿Fue útil esta página
0 / 5 - 0 calificaciones