Connector API
Содержание
ОбзорАдрес Connector API и аутентификацияАдрес APIАутентификация и авторизацияДоступ к исходному API инструментаВыбор backend-адреса с помощьюx-openapi-addressПользовательский APIОпределение APIПуть APIПараметры запросаПагинацияФормат ответаОписание OpenAPIСпецификация расширения ConnectorClass APIИспользование Connectors API в динамических формахConnectors Operator APIДальнейшие шагиОбзор
После интеграции инструментов в кластер для текущего Connector может быть предоставлен RESTful API, чтобы удобно получать ресурсы из инструмента. Эти API единообразно предоставляются через Connector API, позволяя пользователям получать ресурсы из инструмента, на который указывает текущий Connector.
Система Connectors поддерживает два способа доступа к ресурсам инструмента через API:
- Original Tool API: доступ к исходному API инструмента через Proxy Service
- Custom API: использование пользовательского API, предоставляемого для ConnectorClass
При использовании Connectors API клиентам не нужно управлять исходными учетными данными аутентификации инструмента. Им достаточно иметь права на доступ к Connector. Права для API-запросов к инструменту определяются правами учетных данных (Secret), настроенных в Connector.
Адрес Connector API и аутентификация
Адрес API
Адрес Connector API состоит из трех частей:
- Точка входа доступа Platform API или ingress кластера
- Относительный путь Connector API
- Исходный путь API запрашиваемого инструмента или путь пользовательского API
После создания Connector в кластере Connector автоматически записывает путь API текущего Connector в <connector>.status.api.path. Обратите внимание, что этот путь является относительным по отношению к точке входа доступа к кластеру.
Итоговый адрес Connector API: {platform_api_address}/{<connector>.status.api.path}/{api-path}
В Alauda Container Platform точка входа доступа к API обычно имеет вид {platform_address}/clusters-rewrite/{cluster_name}.
Аутентификация и авторизация
Аутентификация соответствует стандартам аутентификации Kubernetes и выполняется через механизмы аутентификации и авторизации Kubernetes. Пользователь, выполняющий запрос, должен иметь права на чтение соответствующего Connector. В настоящее время поддерживается только аутентификация Bearer Token.
При выполнении итогового запроса к инструменту для аутентификации будут использоваться сведения Secret, указанные в Connector.
По умолчанию, когда enable-connector-apis-permissions отключен, для вызова Connectors API достаточно прав на чтение Connector.
Когда enable-connector-apis-permissions включен, система выполняет дополнительную проверку прав connectors/apis для целевого Connector. Это дополнительное право отделяет обнаружение Connector от фактического использования API.
Для общей модели и значения connectors/apis см. Connectors Permission Model.
Дополнительные сведения об аутентификации Kubernetes API см. в Kubernetes Authentication documentation.
Доступ к исходному API инструмента
Когда ваш ConnectorClass предоставляет возможности Proxy Service, вы можете напрямую обращаться к исходному API инструмента через Connector API.
Например, если исходный адрес API инструмента — /api/v4/projects, вы можете получить к нему доступ через Connector API. Предположим, что в пространстве имен default у вас есть Connector с именем gitlab-connector, а путь API Connector равен /connectors/v1alpha1/default/gitlab-connector/path; тогда запрос будет выглядеть так:
Возможности Proxy Service настраиваются через спецификацию ConnectorClass. Подробности настройки см. в ConnectorClass Proxy. Для более глубокого понимания концепции Connectors Proxy см. Connectors Proxy.
Выбор backend-адреса с помощью x-openapi-address
Когда операция OpenAPI использует x-provider-type: proxy, вы можете при необходимости задать x-openapi-address, чтобы управлять тем, какой backend-адрес будет использовать запрос.
Поддерживаются следующие формы выбора:
- Пустое значение или значение не задано: используется
Connector.spec.address. - Имя расширения: разрешается по
nameизConnector.spec.addressExtensions. - Прямой адрес: полный URL
http/https.
Пример:
В этом примере:
/repos/{owner}/{repo}/pullsиспользует расширение Connector с именемapi./search/codeиспользует прямой URLhttps://api.github.com.- Если
x-openapi-addressне указан, запрос используетConnector.spec.address.
Если x-openapi-address ссылается на отсутствующее имя расширения или недопустимый прямой URL, запрос отклоняется.
Пользовательский API
Когда исходный API инструмента не может удовлетворить ваши требования или ConnectorClass не предоставляет возможности Proxy Service, вы можете предоставить пользовательский API service для текущего ConnectorClass, чтобы реализовать необходимые функции.
Сервис пользовательского API можно настроить через поле spec.api в ConnectorClass, что позволяет системе Connectors обнаруживать и использовать его. Подробности настройки см. в ConnectorClass API.
Кроме того, чтобы система могла определить, что API является пользовательским API, необходимо настроить описание OpenAPI через поле spec.api.openapi.
Определение API
Путь API
Путь API, предоставляемый пользовательским API, может быть свободно определен в расширенном API service. Рекомендуемый формат: /<connectorclass-name>/xxx.
В сочетании с адресом API и аутентификацией, описанными выше, ниже приведен пример запроса. Предположим, что в пространстве имен default у вас есть Connector с именем git-connector, а путь пользовательского API равен /git/gitrefs; тогда запрос будет выглядеть так:
Параметры запроса
Параметры запроса определяются конкретной ConnectorClass API Specification.
Пагинация
Информация о пагинации задается параметрами запроса:
Формат ответа
При возврате списка структура ответа выглядит следующим образом:
Когда ответ не равен 200, возвращаемая структура данных должна соответствовать k8s status.
Например:
Определения полей и значения перечислений соответствуют k8s status.
Описание OpenAPI
Помимо предоставления пользовательского API service, необходимо настроить информацию описания OpenAPI в поле spec.api.openapi ConnectorClass, чтобы система могла определить, что API является пользовательским API.
Пример:
Система автоматически перенаправит пользовательский API на ConnectorClass API Address на основе описания spec.api.openapi.
Для подробностей настройки spec.api.openapi см. ConnectorClass OpenAPI Description. Дополнительные примеры использования см. в Using Connectors API in Dynamic Forms.
Спецификация расширения ConnectorClass API
Разработчики могут расширять возможности API для ConnectorClass, чтобы предоставлять пользователям более богатые возможности получения ресурсов.
См. ConnectorClass API Extension Specification.
Использование Connectors API в динамических формах
Connector API может предоставляться UI clients, особенно в сценариях динамических форм, где UI clients могут гибко настраивать вызываемые API requests.
Чтобы включить это, необходимо настроить информацию описания OpenAPI через поле spec.api.openapi ConnectorClass, которое совместно с dynamic form DSL обеспечивает отрисовку динамических форм на frontend.
Описание dynamic form обычно предоставляется в Resource Interface. Дополнительные сведения см. в Resource Interface.
Connectors Operator API
Connectors Operator API — это набор RESTful API, предоставляемых Connectors API, чтобы позволить пользователям получать информацию о Connectors.
Путь API: {platform_address}/clusters-rewrite/{cluster_name}/connectors-operator/{api-path}.
В настоящее время предоставляются следующие API:
-
GET /connectors-operator/featureflags: возвращает информацию о feature flags системы Connectors в текущем кластерепример тела ответа:
Требование к правам: требуется право на доступ к ConnectorClass.
Значение каждого feature flag и способ их настройки см. в Feature Flags.