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:
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
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 .
Comentários muito úteis
Isso agora é possível usando a seguinte sintaxe:
Isso está documentado aqui .