Helm: Suporte para objetos complexos em conjuntos

Criado em 3 mar. 2017  ·  3Comentários  ·  Fonte: helm/helm

No chat, perguntei sobre a capacidade de definir um objeto como este por meio de --set e, infelizmente, fui confrontado com a verdade:

env:
  - name: ROUTER
    value: cake
  - name: PASSWORD
    value: derp

Eu gosto de usar estrofes como essas em meu values.yaml para definir as necessidades de variáveis ​​env inteiras para uma especificação de contêiner em particular, de modo que na especificação eu só preciso:

        env:
{{ toYaml .Values.env | indent 10 }}

Existem muitos motivos pelos quais isso é útil:

  1. Não preciso me preocupar em passar variáveis ​​vazias para meu aplicativo.
  2. As variáveis ​​são todas definidas em um único local, portanto, se o nome de uma variável mudar, posso configurá-la rapidamente e partir.
  3. Nunca preciso me preocupar em reimplantar completamente algo como um objeto deployment só porque quero passar algumas outras variáveis ​​para o processo principal.

Infelizmente, a transmissão desses tipos de objetos não é compatível no momento. Usando instruções if diretamente em meus modelos da melhor maneira de contornar isso por agora, mas seria incrível definir grandes amostras de informações potencialmente dinâmicas sobre meu aplicativo em values.yaml

feature

Comentários muito úteis

Isso agora é possível usando a seguinte sintaxe:

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

Isso está documentado aqui .

Todos 3 comentários

Na verdade, acabei de encontrar outra maneira de fazer isso observando kube-lego :

          {{- range $key, $value := .Values.config }}
            - name: "{{ $key }}"
              value: "{{ $value }}"
          {{- end }}

Meu problema é semelhante.
Queremos usar o gráfico aws-cluster-autoscaler em:
https://github.com/kubernetes/charts/tree/master/stable/aws-cluster-autoscaler

Gostaríamos de passar o autoscalingGroups []. Name por meio da linha de comando, usando --set , e as outras informações por meio de um arquivo params.yaml:

autoscalingGroups:
- minSize: 2
  maxSize: 8
awsRegion: eu-west-1

Quando tentamos definir o nome do grupo de escalonamento automático com:

$ helm upgrade cluster-autoscaler stable/aws-cluster-autoscaler -f params.yaml --set "autoscalingGroups[].name"="nodes.k8s.test.eu-west-1.aws.redacted.net"

Mas isso não funciona.

Lendo a documentação , isso é conhecido, mas ainda assim seria bom poder fazer isso.

Isso agora é possível usando a seguinte sintaxe:

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

Isso está documentado aqui .

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

bq1756 picture bq1756  ·  3Comentários

adam-sandor picture adam-sandor  ·  3Comentários

hobti01 picture hobti01  ·  3Comentários

technosophos picture technosophos  ·  3Comentários

danielcb picture danielcb  ·  3Comentários