Циклический перебор файлов с помощью range и .Files.Glob
Создание ConfigMaps из каталога файлов
«Циклический перебор файлов с помощью range и .Files.Glob» — бесплатный урок Helm Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Helm Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Helm Academy содержит 4 уроков всего.
Добавление файлов в чарт
Чарты могут поставляться с дополнительными файлами вместе с шаблонами. Объект .Files предоставляет шаблонам доступ для чтения этих встроенных файлов.
Поиск файлов с помощью Glob
Метод .Files.Glob возвращает файлы, пути которых соответствуют шаблону, например все файлы в каталоге конфигурации.
{{ $files := .Files.Glob "configs/*.conf" }}Перебор найденных файлов
Объедините Glob с range, чтобы перебрать каждый найденный файл, получая внутри цикла его путь и необработанные байты.
{{ range $path, $bytes := .Files.Glob "configs/*" }}Создание ConfigMap
Классический вариант использования — создать один ConfigMap, в котором ключами данных будут имена файлов, а значениями — содержимое файлов.
Сокращённая запись AsConfig
Именно для этого случая AsConfig сразу преобразует результат glob-поиска в готовый блок данных для ConfigMap.
data: {{ (.Files.Glob "configs/*").AsConfig | nindent 2 }}Секреты с помощью AsSecrets
Его парный метод, AsSecrets, кодирует каждый файл в Base64, чтобы результат glob-поиска можно было использовать для заполнения ресурса Secret.
data: {{ (.Files.Glob "secret/*").AsSecrets | nindent 2 }}Использование базового имени
Внутри цикла часто нужен только файл в качестве ключа, поэтому примените функцию base, чтобы убрать часть пути с каталогом.
{{ base $path }}: |Чтение содержимого каждого файла
Переменная цикла содержит необработанные байты, поэтому передайте её через toString или nindent, чтобы аккуратно разместить содержимое под соответствующим ключом.
{{ $content | toString | nindent 4 }}Шаблоны Glob задаются относительно
Шаблоны Glob разрешаются относительно корня чарта, а скрытые файлы пропускаются, поэтому храните встроенные ресурсы в каталогах с понятными именами.
Сохранение корректности вывода
Отступы важны: используйте nindent для каждого блока, чтобы созданные ключи и содержимое правильно располагались внутри data.
Чтение одного файла
Если нужен только один файл, а не набор файлов, .Files.Get напрямую возвращает его содержимое без какого-либо перебора.
{{ .Files.Get "configs/app.conf" }}Быстрая проверка
Быстрая проверка поиска файлов по шаблону.
Итоги
Вы научились выбирать встроенные файлы с помощью .Files.Glob, перебирать их с помощью range и создавать ConfigMaps через AsConfig или AsSecrets. 🎉
Часто задаваемые вопросы
Урок «Циклический перебор файлов с помощью range и .Files.Glob» бесплатный?
Да — полный текст урока «Циклический перебор файлов с помощью range и .Files.Glob» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Helm Academy, подпишись на CoddyKit PRO. Курс Helm Academy содержит 4 уроков всего.
Чему я научусь в уроке «Циклический перебор файлов с помощью range и .Files.Glob»?
Создание ConfigMaps из каталога файлов Ты практикуешь Helm Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Helm Academy?
Предыдущий опыт не требуется. Helm Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Циклический перебор файлов с помощью range и .Files.Glob»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Helm Academy?
Да. Каждый урок Helm Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Глубокое объединение с mergeOverwrite и dict
- tpl: рендеринг строк из значений
- Циклический перебор файлов с помощью range и .Files.Glob
- fail и пользовательские проверки