Tasks
Задача (Task) — это набор шагов (Steps), которые выполняются последовательно на одном и том же узле в Kubernetes. Задачи являются основными строительными блоками рабочего процесса CI/CD в Tekton, позволяя определить последовательность операций для выполнения.
Содержание
Зачем нужны TasksТрадиционные проблемы CI/CDРешение TektonПреимуществаСценарии использованияОграничения и лимитыПринципыМодель выполнения задачиВыполнение шаговПримеры конфигурацииПример простой задачиРезультатыСценарии использованияПринципыПример конфигурацииВажные параметрыРабочие области (Workspaces)Сценарии использованияПринципыПример конфигурацииСсылкиЗачем нужны Tasks
Традиционные проблемы CI/CD
В традиционных системах CI/CD шаги рабочего процесса часто тесно связаны с самой платформой CI/CD. Это создает несколько проблем:
- Портативность: Рабочие процессы, определённые в одной системе CI/CD, нельзя легко перенести в другую
- Гибкость: Ограниченные возможности настройки среды выполнения для разных шагов
- Масштабируемость: Сложности с масштабированием отдельных шагов в зависимости от требований к ресурсам
- Повторное использование: Шаги, определённые для одного проекта, трудно использовать в других проектах
Решение Tekton
Задачи Tekton решают эти проблемы благодаря:
- Выполнению в контейнерах: Каждый шаг запускается в собственном контейнере, обеспечивая изоляцию и гибкость
- Нативной интеграции с Kubernetes: Задачи запускаются как поды Kubernetes, используя возможности планирования и масштабирования Kubernetes
- Декларативному определению: Задачи определяются как Custom Resources Kubernetes, что делает их портируемыми и управляемыми версиями
- Повторному использованию: Задачи можно делиться и повторно использовать между проектами и командами
Преимущества
- Изоляция: Каждый шаг выполняется в отдельном контейнере, предотвращая конфликты зависимостей
- Портативность: Задачи могут запускаться на любом кластере Kubernetes без изменений
- Повторное использование: Задачи можно использовать в разных командах и проектах
- Масштабируемость: Задачи используют возможности планирования и управления ресурсами Kubernetes
- Гибкость: Задачи можно настраивать с помощью параметров и рабочих областей (workspaces)
- Наблюдаемость: Выполнение задач можно мониторить и логировать через Kubernetes
Сценарии использования
Задачи полезны в различных сценариях, включая:
- Операции сборки: Компиляция исходного кода, запуск модульных тестов
- Операции развертывания: Развертывание приложений в разных средах
- Операции валидации: Запуск проверок безопасности, проверок качества кода
- Операции с инфраструктурой: Подготовка и настройка инфраструктуры
- Обработка данных: ETL-процессы, проверка данных
Ограничения и лимиты
- Задачи выполняются на одном узле Kubernetes и не могут охватывать несколько узлов
- Все шаги в задаче разделяют жизненный цикл одного пода
- Шаги в задаче должны выполняться последовательно, а не параллельно
- Задачи имеют ограниченные возможности для условного выполнения (для сложных условий используйте Pipelines)
- Время выполнения задачи ограничено таймаутом пода Kubernetes
Принципы
Модель выполнения задачи
При запуске задачи через TaskRun:
- Kubernetes создаёт Pod для задачи
- Каждый шаг задачи становится контейнером в Pod
- Шаги выполняются последовательно в заданном порядке
- Tekton внедряет бинарник entrypoint в каждый контейнер шага
- Entrypoint обеспечивает правильный порядок выполнения шагов
- Рабочие области монтируются как тома в Pod
- Параметры передаются задаче через переменные окружения или файлы
- Результаты сохраняются и становятся доступны для последующих задач
Выполнение шагов
Шаги внутри задачи выполняются последовательно. Каждый шаг:
- Запускается в собственном контейнере
- Имеет доступ к общим рабочим областям
- Может получать данные из предыдущих шагов
- Может генерировать результаты для последующих шагов или задач
Примеры конфигурации
Пример простой задачи
Результаты
Результаты позволяют задачам создавать выходные значения, которые могут использоваться другими задачами.
Сценарии использования
- Передача информации о версии сборки
- Обмен путями к сгенерированным артефактам
- Передача результатов тестирования
- Передача URL для развертывания
Принципы
Результаты:
- Объявляются в спецификации задачи
- Записываются в определённый файл задачей
- Читаются Tekton после завершения задачи
- Доступны для последующих задач в Pipeline
Пример конфигурации
Важные параметры
Рабочие области (Workspaces)
Рабочие области позволяют задачам обмениваться данными и обеспечивают доступ к постоянным томам.
Сценарии использования
- Совместное использование исходного кода между задачами
- Хранение артефактов сборки
- Совместное использование конфигурационных файлов
- Сохранение данных между запусками задач
Принципы
Рабочие области:
- Объявляются в спецификации задачи
- Привязываются к реальному хранилищу при создании TaskRun
- Монтируются по указанному пути в каждом контейнере шага
- Могут использоваться несколькими задачами в Pipeline