Запуск Pipeline с ScheduledTrigger
Для ознакомления с архитектурой, мотивацией и основами дизайна ScheduledTrigger смотрите страницу ScheduledTrigger Concepts.
Содержание
ОбзорПоддерживаемые типы ресурсовТипичный рабочий процессБазовая структура манифестаПошаговая настройка1. Выберите расписание и часовой пояс2. Укажите TriggerTemplate3. Передайте параметры4. Примените манифест5. Проверьте ресурсУправление ScheduledTrigger со временемПример встроенного шаблонаПример с учётом часового пояса для еженедельного запускаСсылкиОбзор
ScheduledTrigger позволяет выполнять TriggerTemplate по расписанию в стиле cron без необходимости использования входящих вебхуков. Каждый такт расписания рендерит шаблон, подставляет любые статические или временные параметры и создаёт определённые вами ресурсы Tekton (например, PipelineRuns). В этом руководстве показано, как подготовить необходимые условия, написать манифест и проверить автоматизацию от начала до конца.
Поддерживаемые типы ресурсов
В настоящее время ScheduledTrigger поддерживает следующие ресурсы Tekton Pipelines в TriggerTemplate:
Рекомендация: используйте
tekton.dev/v1для следующих ресурсов;tekton.dev/v1beta1всё ещё принимается, но устарел и будет удалён в будущих релизах.
Типичный рабочий процесс
- Убедитесь, что TriggerTemplate, который вы хотите запускать периодически, готов (повторно используемая ссылка или встроенная спецификация).
- Определите расписание, часовой пояс и любые контекстные параметры, необходимые для автоматизации.
- Создайте манифест
ScheduledTrigger, который связывает шаблон с расписанием. - Примените манифест и отслеживайте статус/события ресурса, чтобы убедиться, что запуски происходят.
Базовая структура манифеста
Пошаговая настройка
1. Выберите расписание и часовой пояс
- Используйте стандартный синтаксис cron (минуты часы день-месяца месяц день-недели). Пример:
15 1 * * 1-5— запуск в 01:15 с понедельника по пятницу. - Укажите
spec.timeZoneстрокой Olson (например,Europe/Paris). Если не указано, контроллер использует свой часовой пояс. - Предпочитайте явное указание часового пояса, если рабочие часы отличаются от часового пояса кластера или важны переходы на летнее/зимнее время.
2. Укажите TriggerTemplate
Вы можете ссылаться на повторно используемый шаблон через spec.triggerTemplate.ref или встроить полный шаблон в spec.triggerTemplate.spec. Ссылки позволяют синхронизировать несколько ScheduledTrigger, а встроенные спецификации делают каждый манифест автономным.
3. Передайте параметры
- Используйте
spec.paramsдля передачи статических значений в шаблон ($(tt.params.<name>)). Контекстные плейсхолдеры (например,$(context.date)и$(context.datetime)) допустимы только в этом разделе. - Комбинируйте эти плейсхолдеры с собственными параметрами для генерации детерминированных имён запусков, тегов или разделов отчётов, затем ссылайтесь на них внутри шаблона как
$(tt.params.<name>). - Поскольку параметры Tekton Trigger — это строки, сериализуйте сложные объекты (например, JSON) перед передачей.
4. Примените манифест
Укажите namespace, в котором находится TriggerTemplate. RBAC Kubernetes должен разрешать контроллеру разрешать и выполнять этот шаблон.
5. Проверьте ресурс
Проверьте столбец LAST SCHEDULETIME (или поле .status.lastScheduleTime), чтобы убедиться, что контроллер срабатывает. События Kubernetes, отображаемые через kubectl describe, покажут успешные запуски или ошибки планирования (например, неверные cron-выражения или отсутствующие шаблоны).
Если запуски не начинаются, как ожидалось, ознакомьтесь с руководством по устранению неполадок ScheduledTrigger для подробного анализа.
Управление ScheduledTrigger со временем
- Обновление расписания: отредактируйте ресурс (
kubectl editили примените новый манифест), чтобы изменитьspec.scheduleилиspec.timeZone. Следующий такт пересчитается автоматически. - Обновление параметров: измените
spec.paramsдля обновления статических значений, таких как имена окружений, флаги функций или получатели. - Смена шаблонов: укажите новый шаблон в
spec.triggerTemplate.refили обновите встроенную спецификацию. Последующие запуски сразу будут использовать новую логику. - Пауза или удаление: удалите ScheduledTrigger, чтобы остановить будущие запуски. Позже можно создать его заново с тем же именем для возобновления расписания.