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

    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://hub.docker.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-сервис, который может выступать в роли как форвард-прокси, так и реверс-прокси для клиентских приложений.

    Когда клиенты обращаются к ресурсам инструмента через 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.