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