• Русский
  • Ресолверы

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

    Зачем нужны ресолверы

    Проблемы традиционного управления ресурсами

    В системах CI/CD управление и обмен ресурсами между командами и проектами представляет собой несколько проблем:

    • Контроль версий: Сложность в отслеживании и управлении версиями ресурсов CI/CD
    • Обмен: Ограниченные возможности для обмена ресурсами между командами и организациями
    • Обслуживание: Проблемы с обновлением и обслуживанием ресурсов, используемых несколькими конвейерами
    • Обнаружимость: Сложности в обнаружении и использовании ресурсов, созданных другими
    • Согласованность: Обеспечение согласованных определений ресурсов на разных средах

    Решение Tekton

    Ресолверы Tekton решают эти проблемы следующим образом:

    • Удалённое разрешение: Получение ресурсов из внешних местоположений во время выполнения
    • Управление версиями: Позволяет ссылаться на конкретные версии ресурсов
    • Централизованное хранение: Позволяет хранить ресурсы в централизованных репозиториях
    • Динамическое получение: Получение последней версии ресурсов по мере необходимости
    • Гибкие источники: Поддержка множественных источников ресурсов (Git, Пакеты, HTTP и т.д.)

    Преимущества

    • Повторное использование: Ресурсы можно легко делиться и повторно использовать между командами и проектами
    • Контроль версий: Ресурсы можно версионировать и отслеживать в системе управления версиями
    • Снижение дублирования: Исключает необходимость дублирования определений ресурсов
    • Упрощённые обновления: Ресурсы можно обновлять в одном месте, и они автоматически используются всеми потребителями
    • Улучшенная обнаружимость: Ресурсы можно организовать и обнаруживать в централизованных репозиториях
    • Согласованность: Обеспечивает согласованные определения ресурсов на разных средах

    Сценарии

    Ресолверы полезны в различных сценариях, включая:

    • Общие библиотеки задач: Поддержка центрального репозитория общих задач
    • Шаблоны CI/CD: Предоставление стандартизированных шаблонов конвейеров для команд
    • Согласованность между средами: Обеспечение согласованных определений ресурсов между разработкой, тестированием и производством
    • Стандарты организации: Принуждение к соблюдению организационных стандартов для процессов CI/CD
    • Интеграция с третьими сторонами: Использование задач и конвейеров, разработанных сообществом
    • Замена ClusterTasks: Предоставление общих задач без необходимости использования ресурсов с широкими правами доступа

    Ограничения и ограничения

    • Ресолверы требуют сетевого доступа к внешним местоположениям ресурсов
    • Разрешение происходит во время создания TaskRun/PipelineRun, а не во время выполнения
    • Некоторые ресолверы могут требовать дополнительной конфигурации для аутентификации
    • Проблемы с сетью могут повлиять на доступность удалённо разрешённых ресурсов
    • Необходимость учитывать вопросы безопасности при использовании внешних ресурсов

    Принципы

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

    Когда ссылка на ресурс разрешена:

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

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

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

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

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

    Пример Git резолвера

    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 резолвера

    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 резолвера

    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

    Встроенные резолверы

    Git резолвер

    Git резолвер получает ресурсы из Git-репозиториев.

    Сценарии использования

    • Хранение задач и конвейеров в том же репозитории, что и код приложения
    • Версионирование ресурсов CI/CD вместе с кодом приложения
    • Обмен ресурсами между командами через Git-репозитории

    Принципы

    Git резолвер:

    • Клонирует указанный Git-репозиторий
    • Переключается на указанную ревизию (ветка, тег или коммит)
    • Получает ресурс из указанного пути
    • Поддерживает аутентификацию через Kubernetes секреты

    Hub резолвер

    Hub резолвер получает ресурсы из Tekton Hub.

    Сценарии использования

    • Обнаружение и использование задач и конвейеров, созданных сообществом
    • Доступ к кураторскому каталогу ресурсов CI/CD
    • Стандартизация на хорошо протестированных и поддерживаемых ресурсах

    Принципы

    Hub резолвер:

    • Подключается к API Tekton Hub
    • Получает указанный ресурс по имени и версии
    • Поддерживает различные каталоги и версии
    • Предоставляет доступ к ресурсам, созданным сообществом

    HTTP резолвер

    HTTP резолвер получает ресурсы с удалённого HTTP-сервера.

    Сценарии использования

    • Получение ресурсов с удалённого сервера
    • Доступ к пользовательским или частным ресурсам
    • Использование существующих веб-служб для разрешения ресурсов

    Принципы

    HTTP резолвер:

    • Получает указанный ресурс с удалённого сервера
    • Предоставляет доступ к пользовательским или частным ресурсам

    Ссылки