Параметризация образа контейнера
Свяжите репозиторий и метку образа со значениями
«Параметризация образа контейнера» — бесплатный урок Helm Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Helm Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Helm Academy содержит 4 уроков всего.
Зачем делать образ настраиваемым
Жёстко заданный образ привязывает каждого пользователя к одной версии. Если связать образ со значениями, пользователи смогут выбрать нужные репозиторий и тег.
Разделите репозиторий и тег
По соглашению чарты хранят образ в двух полях: репозитории и теге. Раздельное хранение упрощает обновление версий.
# values.yaml
image:
repository: nginx
tag: "1.27"Считывайте вложенные значения
Обращайтесь к вложенным ключам, соединяя их точками. Здесь .Values.image.repository открывает карту образа, которую Вы только что определили.
image: {{ .Values.image.repository }}Объедините репозиторий и тег
Ссылка на образ состоит из репозитория, затем двоеточия и тега. Соберите её внутри шаблона, чтобы отрендерированная строка была одной корректной строкой.
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"Всегда заключайте тег в кавычки
Тег вроде 1.27 YAML может распознать как число. Заключайте теги в кавычки в значениях, чтобы они оставались строками и никогда не теряли завершающий ноль.
tag: "1.27.0"Задайте разумный тег по умолчанию
Функция default подставляет резервное значение, если значение пусто. Часто в качестве тега по умолчанию используют appVersion чарта.
{{ .Values.image.tag | default .Chart.AppVersion }}Сделайте политику загрузки настраиваемой
Позвольте пользователям управлять моментом повторной загрузки образа Kubernetes, сделав настраиваемой и imagePullPolicy. IfNotPresent — безопасное значение по умолчанию.
imagePullPolicy: {{ .Values.image.pullPolicy }}Задайте политику загрузки по умолчанию
Задайте значение политики загрузки по умолчанию в values.yaml, чтобы установка работала без переопределений. При необходимости пользователи всё равно смогут его изменить.
image:
pullPolicy: IfNotPresentПолный блок контейнера
Теперь контейнер полностью управляется данными: образ и политика загрузки поступают из .Values.image, а в шаблоне не осталось заданных напрямую значений.
containers:
- name: app
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}Переопределите значение во время установки
Пользователи изменяют одно вложенное значение с помощью --set. Точки в ключе напрямую соответствуют дереву значений, поэтому редактировать файлы не требуется.
helm install web . --set image.tag=1.28Проверьте отрендерированный образ
Выполните рендеринг с переопределением, чтобы проверить работу связи от начала до конца. В строке образа должен отображаться выбранный Вами тег.
helm template web . --set image.tag=1.28Быстрая проверка
Вы хотите установить другой тег образа, не редактируя файлы. Как это сделать?
Итоги: настраиваемый образ
Вы разделили образ на репозиторий и тег, добавили политику загрузки и позволили пользователям переопределять каждый параметр с помощью --set. Заключайте теги в кавычки для безопасности.
Часто задаваемые вопросы
Урок «Параметризация образа контейнера» бесплатный?
Да — полный текст урока «Параметризация образа контейнера» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Helm Academy, подпишись на CoddyKit PRO. Курс Helm Academy содержит 4 уроков всего.
Чему я научусь в уроке «Параметризация образа контейнера»?
Свяжите репозиторий и метку образа со значениями Ты практикуешь Helm Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Helm Academy?
Предыдущий опыт не требуется. Helm Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Параметризация образа контейнера»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Helm Academy?
Да. Каждый урок Helm Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Минимальный шаблон развёртывания
- Параметризация образа контейнера
- Добавление шаблона Service
- Установка и доработка чарта