• Русский
  • Resolvers

    Resolver — это компонент в Tekton, который позволяет удалённо разрешать ресурсы, такие как Tasks и Pipelines. Resolvers дают возможность ссылаться и получать ресурсы из внешних источников, а не определять их непосредственно в вашем Kubernetes кластере.

    Зачем нужны 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 могут требовать дополнительной настройки для аутентификации
    • Сетевые проблемы могут повлиять на доступность удалённых ресурсов
    • Необходимо учитывать вопросы безопасности при использовании внешних ресурсов

    Принципы

    Процесс разрешения

    При разрешении ссылки на ресурс:

    1. Tekton определяет тип resolver из ссылки на ресурс
    2. Вызывается соответствующий resolver для получения ресурса
    3. Resolver извлекает ресурс из внешнего источника
    4. Ресурс проверяется и преобразуется в соответствующий ресурс Tekton
    5. Разрешённый ресурс используется в TaskRun или PipelineRun

    Ссылки на ресурсы

    Ссылки на ресурсы указывают:

    1. Тип resolver для использования (git, bundle, hub и др.)
    2. Местоположение ресурса
    3. Дополнительные параметры, такие как версия, ветка или путь
    4. Информацию для аутентификации, если требуется

    Примеры конфигурации

    Пример Git Resolver

    apiVersion: tekton.dev/v1
    kind: TaskRun
    metadata:
      name: git-resolver-example
    spec:
      taskRef:
        resolver: git
        params:
          - name: url
            value: https://github.com/tektoncd/catalog.git
          - name: revision
            value: main
          - name: pathInRepo
            value: task/git-clone/0.9/git-clone.yaml

    Пример Hub Resolver

    apiVersion: tekton.dev/v1
    kind: TaskRun
    metadata:
      name: remote-task-reference
    spec:
      taskRef:
        resolver: hub
        params:
        - name: catalog # optional
          value: tekton-catalog-tasks
        - name: type # optional
          value: artifact
        - name: kind
          value: task
        - name: name
          value: git-clone
        - name: version
          value: "0.6"

    Пример HTTP Resolver

    apiVersion: tekton.dev/v1
    kind: TaskRun
    metadata:
      name: http-resolver-example
    spec:
      taskRef:
        resolver: http
        params:
          - name: url
            value: https://raw.githubusercontent.com/tektoncd/catalog/main/task/git-clone/0.9/git-clone.yaml

    Встроенные 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:

    • Загружает указанный ресурс с удалённого сервера
    • Обеспечивает доступ к пользовательским или приватным ресурсам

    Ссылки