Preservando o ponto raiz dentro de range
Use uma referência capturada à raiz dentro de loops.
Preservando o ponto raiz dentro de range é uma aula grátis de DevOps Bootcamp no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de DevOps Bootcamp, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de DevOps Bootcamp inclui 4 aulas no total.
O ponto pode mudar
Dentro de um laço range, o ponto deixa de significar a raiz do gráfico e passa a apontar para o item atual. Isso confunde muitos autores iniciantes.
Por que isso é um problema
Quando o ponto é redefinido, expressões como .Values ou .Release deixam de funcionar dentro do laço, pois o contexto raiz já não é o ponto.
Capture a raiz primeiro
A correção é simples: antes do laço, salve o ponto raiz em uma variável. Depois, acesse o contexto original por meio dela dentro de range.
{{ $root := . }}Use a raiz salva
Dentro do laço, faça qualquer caminho que abranja todo o gráfico passar pela sua variável. Escreva $root.Values em vez de .Values para sair do ponto local.
{{ range .Values.items }}
release: {{ $root.Release.Name }}
{{ end }}O ponto local continua funcionando
Para o próprio item do laço, continue usando o ponto simples. Dentro de range, o ponto é o elemento atual, exatamente o que você precisa nesse caso.
{{ range .Values.ports }}
- port: {{ . }}
{{ end }}Combinando item e raiz
Modelos reais precisam dos dois ao mesmo tempo: o item obtido pelo ponto e um valor do gráfico obtido pela raiz. Capturar $root permite referenciar cada um deles com clareza.
{{ $root := . }}
{{ range .Values.hosts }}
host: {{ . }}.{{ $root.Values.domain }}
{{ end }}Uma escolha comum de nome
Muitos gráficos dão a essa variável o nome $root ou $top, mas o nome é escolha sua. O importante é capturar o ponto antes que range o redefina.
range com índice e valor
A forma com duas variáveis associa diretamente o índice e o valor, deixando o ponto livre. Ainda assim, capturar a raiz continua sendo o hábito mais seguro.
{{ range $i, $v := .Values.ports }}
- {{ $i }}: {{ $v }}
{{ end }}A mesma armadilha dentro de with
O bloco with também redefine o ponto para uma subárvore. O mesmo truque de capturar a raiz recupera suas referências ao gráfico inteiro dentro dele.
Teste a saída do laço
Renderize o gráfico e inspecione o laço. helm template mostra se cada iteração resolveu os valores da raiz da maneira esperada.
helm template ./mychartCapture antes de entrar
A ordem importa: atribua $root := . fora do laço. Se você capturá-lo dentro de range, o ponto já terá sido redefinido e você salvará o valor errado.
Verificação rápida
Dentro de um laço range, {{ .Values.port }} de repente não retorna nada.
Recapitulação
Você aprendeu que range redefine o ponto, que $root := . salva o contexto original e que o ponto local continua sendo o item do laço. 🔁
Perguntas Frequentes
A aula “Preservando o ponto raiz dentro de range” é grátis?
Sim — o texto completo de “Preservando o ponto raiz dentro de range” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de DevOps Bootcamp, atualize para CoddyKit PRO. O curso de DevOps Bootcamp inclui 4 aulas no total.
O que vou aprender em “Preservando o ponto raiz dentro de range”?
Use uma referência capturada à raiz dentro de loops. Você pratica DevOps Bootcamp com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar DevOps Bootcamp?
Nenhuma experiência prévia é necessária. DevOps Bootcamp no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Preservando o ponto raiz dentro de range”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de DevOps Bootcamp?
Sim. Cada aula de DevOps Bootcamp inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Atribuindo variáveis de modelo
- Preservando o ponto raiz dentro de range
- nindent versus indent na prática
- Depurando espaços em branco renderizados