• Русский
  • Архитектура

    Architecture

    Connector

    Connector — это ресурс, представляющий интегрированный экземпляр конкретного инструмента. Настраивая URL доступа к инструменту и информацию для аутентификации, мы можем создать экземпляр для интеграции этого инструмента.

    Например, интеграция https://github.com с использованием GitHub Private Access Token осуществляется через Connector.

    В Kubernetes Connector является ресурсом с областью видимости namespace. Пользователи могут создавать несколько Connector в одном namespace для интеграции разных инструментов.

    Например, в namespace default можно создать как Connector для интеграции https://github.com, так и Connector для интеграции https://example.harbor.com/.

    Администраторы платформы могут управлять интеграциями инструментов по всему кластеру, управляя ресурсами Connector.

    ConnectorClass

    ConnectorClass определяет методы доступа и спецификации поведения для конкретных типов инструментов. Он задаёт параметры, необходимые при интеграции с определённым типом инструмента, такие как адрес инструмента и данные для аутентификации.

    Например, Git ConnectorClass определяет конфигурационные элементы, которые нужно предоставить при интеграции с Git-инструментами, включая адрес Git-сервиса и аутентификацию Basic-Auth.

    В Kubernetes ConnectorClass является ресурсом с областью видимости кластера. Разработчики могут расширять поддерживаемые платформой типы инструментов, определяя новые ConnectorClass.

    Например, можно определить Harbor ConnectorClass для поддержки интеграции с репозиторием образов Harbor, MySQL ConnectorClass для интеграции с базами данных MySQL или Jira ConnectorClass для интеграции с инструментами управления проектами Jira.

    Connectors Proxy

    Connectors Proxy — это ключевая возможность системы Connectors, обеспечивающая безопасный доступ к интегрированным инструментам без необходимости передачи секретов. Обычно он работает как HTTP-сервис, который может выступать в роли как прямого (forward), так и обратного (reverse) прокси для клиентских приложений.

    Когда клиенты обращаются к ресурсам инструмента через Connectors Proxy, прокси автоматически внедряет необходимые учётные данные аутентификации в запросы, обеспечивая беспрепятственный доступ без необходимости клиентам напрямую управлять учётными данными. Такой подход даёт значительное преимущество в безопасности:

    • Доступ без секретов: устраняет необходимость распространять учётные данные инструмента напрямую клиентам, используя короткоживущие токены, выдаваемые Kubernetes. Это предотвращает утечку учётных данных в клиентских окружениях, таких как логи или переменные среды.

    Для поддержки различных требований аутентификации инструментов платформа поддерживает как встроенные, так и кастомные реализации прокси. Каждый ConnectorClass может предоставлять собственный прокси-сервис, обеспечивая гибкость для удовлетворения специфических требований аутентификации инструментов.

    Встроенный Connectors Proxy

    Встроенная реализация обеспечивает полную поддержку протоколов HTTP/HTTPS с методами аутентификации Basic Auth и Bearer Token. Предоставляет возможности как прямого, так и обратного прокси для максимальной гибкости.

    Используется ConnectorClass: K8s ConnectorClass, Git ConnectorClass

    Кастомный Connectors Proxy

    Для инструментов, требующих специализированных механизмов аутентификации, могут быть разработаны кастомные реализации прокси.

    Пример: OCI ConnectorClass использует кастомный OCI Plugin Proxy, поддерживающий протокол OCI с авторизацией Bearer Token для реестров, таких как Harbor и CNCF Distribution Registry.

    Подробнее: Connectors Proxy

    Connectors API

    Connectors API предоставляет возможности доступа к внутренним ресурсам инструментов на основе экземпляров Connector. Например, для Git Connector Connectors API может получить список веток (References) в Git-репозитории.

    Разработчики могут удобно получать доступ к ресурсам внутри инструментов через Connectors API, не заботясь о конкретных адресах инструментов и деталях аутентификации.

    Система поддерживает два способа доступа к ресурсам инструментов через API:

    • Оригинальный API инструмента: когда ConnectorClass предоставляет возможности Proxy Service, клиенты могут напрямую обращаться к оригинальному API инструмента через Connector API. Система автоматически перенаправляет запросы к Proxy Service инструмента, выполняет внедрение аутентификации и возвращает оригинальные данные от инструмента.
    • Кастомный API: использование кастомных API, предоставляемых для ConnectorClass, которые предлагают расширенные возможности сверх оригинального API инструмента.

    Этот API очень полезен в практических сценариях, таких как:

    • Получение списка тегов для контейнерных образов при создании приложений
    • Получение списка веток (References) для репозитория кода при операции Git Clone
    • Прямой доступ к API инструмента, когда ConnectorClass поддерживает Proxy Service

    Реализация Connectors API основана на базовых возможностях, предоставляемых ConnectorClass API.

    ConnectorClass API

    ConnectorClass API определяет API, предоставляемые конкретными типами инструментов.

    Разные типы инструментов могут предлагать различные API-возможности, например:

    • Git ConnectorClass API может предоставлять возможность получения списка веток репозитория кода
    • OCI ConnectorClass API может предоставлять возможность получения списка тегов для репозиториев артефактов

    Разработчики могут определять уникальные API-возможности для каждого ConnectorClass, и эти возможности в конечном итоге будут доступны клиентам через Connectors API.

    Connectors CSI Driver

    Для упрощения использования возможностей Connectors-Proxy рабочими нагрузками K8S можно использовать Connectors CSI Driver.

    Connectors CSI Driver может монтировать сгенерированное содержимое шаблонов конфигурационных файлов, поддерживаемых внутри ConnectorClass, в рабочую нагрузку. Конфигурационный файл может включать информацию для доступа к Connectors Proxy, позволяя пользователям использовать возможности Connectors Proxy с минимальными изменениями в их исходных скриптах.

    Подробнее см. connectors csi driver

    ResourceInterface

    ResourceInterface — это стандартизованная абстракция, определяющая, как внешние ресурсы (например, Git-репозитории, OCI контейнерные образы, репозитории артефактов) могут быть интегрированы в конвейеры (pipeline) рабочих процессов.

    При построении CI/CD конвейеров пользователи традиционно должны вручную настраивать URL ресурсов, ветку/тег git, тег OCI-образа, репозиторий артефактов и учётные данные для аутентификации разных внешних инструментов. Этот ручной процесс сложен, подвержен ошибкам и делает конфигурации конвейеров тесно связанными с конкретными экземплярами инструментов.

    ResourceInterface решает эту проблему, предоставляя стандартную абстракцию ресурсов, таких как "GitCodeRepository", "OCIArtifact" и "MavenArtifact". Вместо ручного ввода URL, например https://github.com/myorg/myapp.git, пользователи могут выбрать коннектор, просмотреть ресурсы через UI, и система автоматически сгенерирует правильную конфигурацию и учётные данные для конвейера.

    Такой подход обеспечивает единообразный и удобный пользовательский опыт для разных инструментов, сохраняя при этом гибкость для поддержки различных реализаций.

    Подробнее см. ResourceInterface.

    Если вы хотите интегрировать Connector в свой кастомный Pipeline или Task, пожалуйста, обратитесь к Pipeline Integration