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