Интеграция Pipeline
Содержание
ОбзорЧто такое Pipeline IntegrationКлючевые поля Pipeline IntegrationХранение в аннотацияхСтруктура Pipeline IntegrationNameСсылка на ResourceInterfaceСсылка на ConnectorПараметрыАтрибутыWorkspacesПоддержка интеграции в TaskПримерыReferencesОбзор
При построении CI/CD пайплайнов с помощью Tekton разработчикам часто требуется интеграция с внешними ресурсами, такими как Git-репозитории, реестры контейнеров и репозитории артефактов. Традиционно это требует ручной настройки URL, учетных данных и параметров для каждого внешнего инструмента, что подвержено ошибкам и занимает много времени.
Интеграция Tekton Pipelines с Connectors решает эту проблему, предоставляя стандартизированный способ подключения внешних ресурсов к рабочим процессам пайплайна. Эта интеграция обеспечивает:
- Удобный просмотр и выбор ресурсов: возможность просматривать и добавлять внешние ресурсы, такие как Git-репозитории, Git Revision, OCI-репозитории и другие ресурсы через UI, вместо ручного ввода
- Унифицированные атрибуты ресурсов: обработка разделённых атрибутов одного и того же удалённого ресурса как единого целого, что исключает необходимость настраивать отдельные параметры
urlиrevisionвместе с конфигурациями workspace - Руководство по настройке workspace: быстрая настройка workspace с соответствующими коннекторами и чёткими рекомендациями, какой тип коннектора подходит для каждого workspace
- Сохранение гибкости: сохранение текущего опыта оркестрации и выполнения пайплайнов при добавлении мощных возможностей коннекторов
Что такое Pipeline Integration
Pipeline Integration — это механизм, который связывает внешние ресурсы (через Connectors и ResourceInterfaces) с Tekton Tasks и Pipelines. Он определяет:
- Какой ресурс и коннектор использовать в рабочих процессах пайплайна
- Конфигурацию параметров, необходимую для ресурса
- Отображение атрибутов между выходными данными ресурса и параметрами пайплайна
- Отображение workspace для томов и учетных данных
PipelineIntegration не является реальным ресурсом Kubernetes, а представляет собой метаданные интеграции, хранящиеся в аннотациях Tekton Pipeline или Task с использованием ключа integrations.tekton.dev/integrations.
В этом документе описываются концепции и ключевые поля Pipeline Integration. Если вы хотите интегрировать коннекторы в свой кастомный пайплайн или задачу, вам следует ознакомиться с деталями, изложенными в этом документе.
Встроенные компоненты Pipeline и Task уже поддерживают Pipeline Integration, поэтому вы можете использовать их напрямую без дополнительной настройки.
Ключевые поля Pipeline Integration
Pipeline Integration содержит следующие ключевые поля:
- Ссылка на ResourceInterface: указывает, какой ResourceInterface использовать (по категории или имени)
- Ссылка на Connector: определяет, какой экземпляр Connector предоставляет ресурс
- Конфигурация параметров: входные параметры, требуемые ResourceInterface
- Отображение атрибутов: как атрибуты ресурса сопоставляются с параметрами пайплайна/задачи
- Отображение workspace: как workspace ресурса сопоставляются с workspace пайплайна
Хранение в аннотациях
Метаданные интеграции хранятся с использованием аннотации integrations.tekton.dev/integrations в виде YAML-массива:
Структура Pipeline Integration
Name
Имя интеграции пайплайна.
Ссылка на ResourceInterface
Указывает, какой ResourceInterface использовать. Поддерживаются ссылки как по категории, так и по имени:
Ссылка по категории (гибкая, работает с любым совместимым коннектором):
Все имена категорий определены в метках ResourceInterface с именем resourceinterface.connectors.cpaas.io/category.
Ссылка по имени (конкретный интерфейс):
Когда использовать каждый подход:
- Используйте ссылку по категории для переиспользуемых пайплайнов, которые должны работать с разными реализациями resourceinterface
- Используйте ссылку по имени для пайплайнов, требующих конкретного имени resourceinterface.
Ссылка на Connector
Указывает, какой экземпляр Connector использовать для доступа к внешнему ресурсу:
Варианты настройки:
- Фиксированный коннектор: укажите
nameиnamespace, оставьтеsetAtRuntimeкакfalseили опустите - Выбор во время выполнения: установите
setAtRuntime: trueдля возможности выбора коннектора при выполнении пайплайна - По умолчанию с возможностью переопределения: укажите
nameиsetAtRuntime: trueдля значения по умолчанию с возможностью изменения во время выполнения
Параметры
Входные параметры, требуемые ResourceInterface. Эти параметры используются для вычисления атрибутов ресурса:
Поведение параметров:
- При
setAtRuntime: trueпараметр должен быть предоставлен при выполнении пайплайна - При
setAtRuntime: falseили отсутствии параметр использует фиксированноеvalue - Параметры без
value, но сsetAtRuntime: trueтребуют ввода пользователя во время выполнения
Атрибуты
Выходные атрибуты, вычисляемые на основе параметров и информации коннектора, и их отображение на параметры пайплайна:
Настройка атрибутов:
- Имя атрибута должно совпадать с
ResourceInterface.spec.attributes[].name - Значение атрибута вычисляется с помощью выражения, определённого в
ResourceInterface.spec.attributes[].expression - Параметризованные атрибуты создают параметры пайплайна (указываются в поле
param) - Статические атрибуты используют фиксированные значения (указываются в поле
value) - refPath определяет, где в задачах пайплайна используется значение атрибута
Workspaces
Отображение workspace между workspace ResourceInterface и workspace пайплайна:
Настройка workspace:
- Имя workspace должно совпадать с
ResourceInterface.spec.workspaces[].name - Workspace пайплайна автоматически создаётся с именем, указанным в поле
workspace, по умолчанию берётся изResourceInterface.spec.workspaces[].workspaceMapping.name - refPath определяет, какой workspace PipelineTask использует этот workspace
Поддержка интеграции в Task
Задачи могут объявлять поддержку интеграции для автоматического сопоставления параметров и workspace:
Примеры
Revision задаётся во время выполнения
- коннектор и репозиторий — фиксированные значения, revision задаётся во время выполнения.
- используется фиксированное значение
https://github.com/myorg/myapp.gitв параметре url задачи git-clone. - используется параметр времени выполнения
$(params.revision)в параметре revision задачи git-clone. - используется workspace
source-workspaceв workspace source задачи git-clone.
Например:
Коннектор, репозиторий и revision задаются во время выполнения
- коннектор, репозиторий и revision задаются во время выполнения.
- используется параметр времени выполнения
$(params.git-url)в параметре url задачи git-clone. - используется параметр времени выполнения
$(params.git-revision)в параметре revision задачи git-clone. - используется workspace
source-workspaceв workspace source задачи git-clone.
Например: