0Pricing
DevOps Bootcamp · Урок

Ограничение области видимости блока с with

Сужайте точку до поддерева и учитывайте подводные камни

«Ограничение области видимости блока с with» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.

Перестаньте повторять длинные пути

Постоянное повторение .Values.image.repository делает шаблон перегруженным. Действие with сужает область действия точки до поддерева, позволяя записывать более короткие пути.

Действие with

Блок with начинается с {{ with SOMETHING }} и завершается {{ end }}. Внутри него точка сбрасывается на переданное значение.

{{ with .Values.image }}
repository: {{ .repository }}
tag: {{ .tag }}
{{ end }}

Точка перемещается внутрь

Внутри блока .repository означает .Values.image.repository. Ключевое слово with заново привязывает точку к поддереву, сокращая все пути внутри него.

image:
  repository: nginx
  tag: "1.27"

Одновременно это защита

Если значение является пустым или отсутствует, with пропускает весь свой блок. Таким образом, with одновременно задаёт область видимости точки и работает как if. 🛡️

Добавление ветви else

Как и if, with принимает ветвь else. Ветвь else отображается, когда значение пусто, предоставляя аккуратный запасной вариант для необязательной конфигурации.

{{ with .Values.resources }}
resources:
{{ toYaml . | indent 2 }}
{{ else }}
# no resources set
{{ end }}

Проблема с областью видимости

Вот ловушка: внутри with точка больше не обозначает корень. Поэтому .Release.Name не работает: Release находится не в этом поддереве.

Обращение к корню через $

Чтобы использовать корневые значения внутри with, добавляйте перед ними $. Символ доллара всегда указывает на исходный корневой контекст, независимо от глубины вложенности.

{{ with .Values.image }}
name: {{ $.Release.Name }}
image: {{ .repository }}
{{ end }}

Делайте блоки небольшими

Поскольку with перехватывает точку, большие блоки быстро становятся непонятными. Делайте разделы with короткими, чтобы было очевидно, на что указывает точка.

with и if

Используйте if, когда нужно только проверить флаг, а with — когда нужно также перейти внутрь этого значения. with изменяет точку, а if оставляет её без изменений.

Просмотр области видимости

Не уверены, что содержит точка? Выполните рендеринг с помощью helm template и изучите результат или выведите область видимости при отладке сложного блока with.

helm template ./mychart

Вложенные блоки with

Можно вложить with в другой with, чтобы перейти на более глубокий уровень. Каждый уровень перемещает точку ещё на один шаг вниз, поэтому следите за текущим контекстом.

{{ with .Values.image }}
{{ with .pullSecrets }}
# . is now pullSecrets
{{ end }}
{{ end }}

Быстрая проверка

Внутри блока {{ with .Values.image }} вы пытаетесь прочитать .Release.Name, но значение оказывается пустым.

Итоги

Теперь вы умеете задавать область видимости точки с помощью with, автоматически проверять пустые значения, добавлять запасной вариант else и обращаться к корню через $. Более чистые шаблоны! 🎯

Часто задаваемые вопросы

Урок «Ограничение области видимости блока с with» бесплатный?

Да — полный текст урока «Ограничение области видимости блока с with» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.

Чему я научусь в уроке «Ограничение области видимости блока с with»?

Сужайте точку до поддерева и учитывайте подводные камни Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать DevOps Bootcamp?

Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Ограничение области видимости блока с with»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке DevOps Bootcamp?

Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Условные блоки с if и else
  2. Истинность и операторы в условиях
  3. Циклы по спискам и отображениям с range
  4. Ограничение области видимости блока с with
← Назад к DevOps Bootcamp