Resolvers
Resolver — это компонент в Tekton, который позволяет удалённо разрешать ресурсы, такие как Tasks и Pipelines. Resolvers дают возможность ссылаться и получать ресурсы из внешних источников, а не определять их непосредственно в вашем Kubernetes кластере.
Содержание
Зачем нужны ResolversТрадиционные проблемы управления ресурсамиРешение TektonПреимуществаСценарии использованияОграничения и условияПринципыПроцесс разрешенияСсылки на ресурсыПримеры конфигурацииПример Git ResolverПример Hub ResolverПример HTTP ResolverВстроенные ResolversGit ResolverСценарии использованияПринципыHub ResolverСценарии использованияПринципыHTTP ResolverСценарии использованияПринципыСсылкиЗачем нужны Resolvers
Традиционные проблемы управления ресурсами
В CI/CD системах управление и совместное использование ресурсов между командами и проектами сопряжено с рядом проблем:
- Контроль версий: сложность отслеживания и управления версиями CI/CD ресурсов
- Совместное использование: ограниченные возможности для обмена ресурсами между командами и организациями
- Поддержка: трудности с обновлением и обслуживанием ресурсов, используемых в нескольких пайплайнах
- Обнаружение: сложность в поиске и использовании ресурсов, созданных другими
- Согласованность: обеспечение единообразия определений ресурсов в разных средах
Решение Tekton
Resolvers в Tekton решают эти задачи за счёт:
- Удалённого разрешения: получение ресурсов из внешних источников во время выполнения
- Управления версиями: возможность ссылаться на конкретные версии ресурсов
- Централизованного хранения: хранение ресурсов в централизованных репозиториях
- Динамического получения: загрузка актуальной версии ресурса при необходимости
- Гибких источников: поддержка различных источников ресурсов (Git, Bundles, HTTP и др.)
Преимущества
- Повторное использование: ресурсы легко делиться и повторно использовать между командами и проектами
- Контроль версий: ресурсы могут версионироваться и отслеживаться в системах контроля исходного кода
- Снижение дублирования: исключается необходимость дублировать определения ресурсов
- Упрощённое обновление: ресурсы обновляются в одном месте и автоматически используются всеми потребителями
- Улучшенное обнаружение: ресурсы организованы и доступны в централизованных репозиториях
- Согласованность: обеспечивает единообразие определений ресурсов в разных средах
Сценарии использования
Resolvers полезны в различных сценариях, включая:
- Общие библиотеки Tasks: поддержка централизованного репозитория общих Tasks
- Шаблоны CI/CD: предоставление стандартизированных шаблонов Pipeline для команд
- Согласованность между средами: обеспечение единообразия ресурсов в разработке, тестировании и продакшене
- Организационные стандарты: соблюдение корпоративных стандартов CI/CD процессов
- Интеграция сторонних решений: использование Tasks и Pipelines, разработанных сообществом
- Замена ClusterTasks: предоставление общих Tasks без необходимости кластерных ресурсов
Ограничения и условия
- Resolvers требуют сетевого доступа к внешним ресурсам
- Разрешение происходит во время создания TaskRun/PipelineRun, а не во время выполнения
- Некоторые resolvers могут требовать дополнительной настройки для аутентификации
- Сетевые проблемы могут повлиять на доступность удалённых ресурсов
- Необходимо учитывать вопросы безопасности при использовании внешних ресурсов
Принципы
Процесс разрешения
При разрешении ссылки на ресурс:
- Tekton определяет тип resolver из ссылки на ресурс
- Вызывается соответствующий resolver для получения ресурса
- Resolver извлекает ресурс из внешнего источника
- Ресурс проверяется и преобразуется в соответствующий ресурс Tekton
- Разрешённый ресурс используется в TaskRun или PipelineRun
Ссылки на ресурсы
Ссылки на ресурсы указывают:
- Тип resolver для использования (git, bundle, hub и др.)
- Местоположение ресурса
- Дополнительные параметры, такие как версия, ветка или путь
- Информацию для аутентификации, если требуется
Примеры конфигурации
Пример Git Resolver
Пример Hub Resolver
Пример HTTP Resolver
Встроенные Resolvers
Git Resolver
Git Resolver получает ресурсы из Git репозиториев.
Сценарии использования
- Хранение Tasks и Pipelines в том же репозитории, что и код приложения
- Версионирование CI/CD ресурсов вместе с кодом приложения
- Совместное использование ресурсов между командами через Git репозитории
Принципы
Git Resolver:
- Клонирует указанный Git репозиторий
- Проверяет указанную ревизию (ветку, тег или коммит)
- Извлекает ресурс из указанного пути
- Поддерживает аутентификацию через Kubernetes secrets
Hub Resolver
Hub Resolver получает ресурсы из Tekton Hub.
Сценарии использования
- Поиск и использование Tasks и Pipelines, созданных сообществом
- Доступ к курированному каталогу CI/CD ресурсов
- Стандартизация на проверенных и поддерживаемых ресурсах
Принципы
Hub Resolver:
- Подключается к API Tekton Hub
- Получает указанный ресурс по имени и версии
- Поддерживает различные каталоги и версии
- Обеспечивает доступ к ресурсам сообщества
HTTP Resolver
HTTP Resolver получает ресурсы с удалённого HTTP сервера.
Сценарии использования
- Получение ресурсов с удалённого сервера
- Доступ к пользовательским или приватным ресурсам
- Использование существующих веб-сервисов для разрешения ресурсов
Принципы
HTTP Resolver:
- Загружает указанный ресурс с удалённого сервера
- Обеспечивает доступ к пользовательским или приватным ресурсам