• Русский
  • Connector

    Overview

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

    • Адрес доступа к инструменту
    • Информацию для аутентификации инструмента
    • Информацию о состоянии инструмента

    Например, следующее определение иллюстрирует коннектор типа Git:

    apiVersion: connectors.alauda.io/v1alpha1
    kind: Connector
    metadata:
      name: git-github
      namespace: default
    spec:
      connectorClassName: git  ##  Указывает тип коннектора как git, этот ConnectorClass должен существовать
      address: "https://github.com"  ##  Адрес доступа к инструменту
      auth:
        name: basicAuth
        secretRef:  ##  Ссылка на информацию для аутентификации
          name: github-secret

    Адрес коннектора

    Поле address указывает URL-адрес целевого инструмента, с которым будет интегрироваться Connector. Принимаются как корневые URL, так и URL с префиксами путей.

    Базовый формат URL

    Для инструментов, доступных по корневому домену:

    apiVersion: connectors.alauda.io/v1alpha1
    kind: Connector
    metadata:
      name: git-github
    spec:
      connectorClassName: git
      address: "https://github.com"
      # ...

    URL с префиксом пути

    Для инструментов, развернутых за обратными прокси или доступных по определённым путям:

    apiVersion: connectors.alauda.io/v1alpha1
    kind: Connector
    metadata:
      name: git-gitlab
    spec:
      connectorClassName: git
      address: "https://internal-tool.com/gitlab"
      # ...

    Примечание

    Проверка аутентификации по протоколу http и проверка живости (liveness probe) не выполняются по префиксу пути. Если необходимо выполнить проверку по префиксу пути, можно использовать выражения проверки аутентификации и выражения проверки живости.

    Подробнее смотрите в разделах liveness probe и authentication probe.

    Параметры коннектора

    Параметры коннектора позволяют передавать дополнительную конфигурационную информацию в экземпляр Connector. Эти параметры сначала определяются в спецификации ConnectorClass, а затем могут быть настроены при создании отдельных ресурсов Connector.

    Вы можете указать значения параметров в Connector через поле spec.params.

    • spec.params[].name: имя параметра, которое должно совпадать с именем параметра, определённого в соответствующем ConnectorClass.
    • spec.params[].value: значение параметра. Тип значения должен соответствовать типу параметра, определённому в ConnectorClass. В настоящее время поддерживается только тип string.

    Если в ConnectorClass для параметра задано значение по умолчанию, при создании Connector этот параметр можно опустить, и будет использовано значение по умолчанию.

    Для получения дополнительной информации о определении параметров в ConnectorClass смотрите ConnectorClass Parameters.

    Пример

    Следующий пример демонстрирует коннектор, настроенный с параметром sslVerify:

    apiVersion: connectors.alauda.io/v1alpha1
    kind: Connector
    metadata:
      name: git-gitlab
    spec:
      connectorClassName: git-example
      address: "https://private-gitlab.example.com"
      params:
        - name: sslVerify
          value: "false"
    ---
    apiVersion: connectors.alauda.io/v1alpha1
    kind: ConnectorClass
    metadata:
      name: git-example
    spec:
      # ...
      params:
        - name: sslVerify
          type: string
          default: "true"

    Информация для аутентификации

    Информация для аутентификации определяет учётные данные для доступа к инструменту. В зависимости от типа инструмента могут быть настроены различные методы аутентификации. Этот метод аутентификации определяется в ConnectorClass. Подробнее смотрите в описании информации для аутентификации в ConnectorClass.

    Настройка информации для аутентификации

    Информация для аутентификации настраивается следующим образом:

    1. Укажите имя типа аутентификации, используемого согласно определению ConnectorClass.
    2. Создайте Secret, содержащий учётные данные.
    3. Сошлитесь на Secret в Connector через spec.auth.secretRef.
    4. Укажите параметры, необходимые при проверке аутентификации.

    Например, для настройки базовой аутентификации:

    ##  Создайте Secret, содержащий имя пользователя и пароль
    apiVersion: v1
    kind: Secret
    metadata:
      name: github-secret
      namespace: default
    type: kubernetes.io/basic-auth
    data:
      username: dXNlcm5hbWU=  ##  Имя пользователя в base64
      password: cGFzc3dvcmQ=  ##  Пароль в base64
    ---
    ##  Сошлитесь на Secret в Connector
    apiVersion: connectors.alauda.io/v1alpha1
    kind: Connector
    metadata:
      name: git-github
    spec:
      connectorClassName: git
      address: "https://github.com"
      auth:
        name: basic-auth
        secretRef:
          name: github-secret
          namespace: default

    Необязательная аутентификация

    Некоторые инструменты поддерживают доступ без аутентификации. В этом случае spec.auth.secretRef можно опустить.

    Например, доступ к публичному Git-репозиторию:

    apiVersion: connectors.alauda.io/v1alpha1
    kind: Connector
    metadata:
      name: git-public
    spec:
      connectorClassName: git
      address: "https://github.com"
      auth:
        name: basic-auth ##  Аутентификация для git connectorclass basic-auth является необязательной

    Проверка аутентификации

    Connector поддерживает проверку валидности информации для аутентификации. Конфигурация проверки задаётся через spec.auth.params, который включает параметры, необходимые для проверки аутентификации.

    Например, для проверки прав доступа к Git-репозиторию:

    apiVersion: connectors.alauda.io/v1alpha1
    kind: Connector
    metadata:
      name: git-github
    spec:
      connectorClassName: git
      address: "https://github.com"
      auth:
        name: basic-auth
        secretRef:
          name: github-secret
          namespace: default
        params:
        - name: repository  ##  Указывает репозиторий для проверки
          value: "org/repo.git"

    Обратите внимание, что если ConnectorClass указывает параметры для проверки аутентификации, параметры в Connector должны быть предоставлены, даже если Connector создан без указания информации о секрете, spec.auth.params должен быть передан.

    Адрес прокси

    Если Connector ссылается на ConnectorClass, который настроил возможность прокси, система выделит прокси-адрес для каждого Connector.

    Клиенты могут использовать этот прокси-адрес для доступа к инструменту без использования секретов.

    Формат прокси-адреса по умолчанию — http://c-{connector-name}.{namespace}.svc.cluster.local, который можно получить из status.proxy.

    Например, следующий пример описывает коннектор с прокси-адресом:

    apiVersion: connectors.alauda.io/v1alpha1
    kind: Connector
    metadata:
      name: harbor
      namespace: default
    spec:
      address: https://example.com
    status:
     proxy:
        httpAddress:
          url: http://c-harbor.default.svc.cluster.local

    Если в ConnectorClass настроен тип разрешателя прокси path, формат прокси-адреса будет http://c-{connector-name}.{namespace}.svc.cluster.local/namespaces/{namespace}/connectors/{connector-name}, где {path} — путь Connector.

    Например, следующий пример описывает коннектор с прокси-адресом:

    apiVersion: connectors.alauda.io/v1alpha1
    kind: Connector
    metadata:
      name: harbor
      namespace: default
    spec:
      address: https://example.com
    status:
     proxy:
        httpAddress:
          url: http://c-harbor.default.svc.cluster.local/namespaces/default/connectors/harbor

    Информация о состоянии

    Информация о состоянии Connector записывается в поле status, которое содержит прокси-адрес, API-адрес и условия:

    • status.conditions: условия Connector.
    • status.proxy: прокси-адрес Connector.
    • status.api: API-адрес Connector.

    Прокси-адрес

    Поле proxy содержит прокси-адрес Connector.

    • status.proxy.httpAddress.url: HTTP-адрес прокси для текущего Connector.

    Вы можете использовать этот адрес с существующими клиентами инструмента для доступа к инструменту без секретов внутри кластера. Подробнее см. в разделе Connector Proxy.

    Если ConnectorClass не имеет возможности прокси, поле status.proxy будет пустым.

    API-адрес

    Поле api содержит API-адрес Connector.

    • status.api.path: относительный путь API для текущего Connector (относительно точки входа ingress кластера).

    Вы можете использовать этот путь вне кластера для доступа к оригинальному API инструмента через текущий Connector. Подробнее см. в Connector API.

    Условия

    Типы условий включают:

    • ConnectorClassReady: указывает, корректен ли тип коннектора.
    • SecretReady: указывает, правильно ли настроена информация для аутентификации.
    • LivenessReady: указывает, доступен ли инструмент.
    • AuthReady: указывает, валидна ли информация для аутентификации.
    • ProxyServiceReady: указывает, успешно ли выделен прокси-адрес для текущего Connector.
    • Ready: указывает общее состояние.

    Условие SecretReady

    Отражает статус информации о секрете для Connector.

    СтатусПричинаОписание
    TrueSecretOptionalConnectorClass помечает информацию для аутентификации как необязательную, и текущий Connector не имеет настроенной информации для аутентификации
    TrueСекрет настроен и существует
    FalseСекрет настроен, но при проверке его существования произошла ошибка
    UnknownПроверка корректности настроенного секрета

    Условие AuthReady

    Отражает статус информации об аутентификации для Connector.

    СтатусПричинаОписание
    TrueNonAuthProbeConnectorClass не указывает информацию о проверке аутентификации
    TrueПроверка учётных данных прошла успешно
    FalseПроверка учётных данных не удалась
    UnknownПроверка учётных данных в процессе

    Условие LivenessReady

    Отражает статус проверки живости для Connector.

    СтатусПричинаОписание
    TrueNonLivenessProbeConnectorClass не указывает информацию о проверке живости
    TrueДоступ к инструменту нормальный
    FalseДоступ к инструменту ненормальный
    UnknownПроверка доступа к инструменту в процессе

    Условие ProxyServiceReady

    Отражает статус прокси-сервиса для Connector.

    СтатусПричинаОписание
    TrueNonProxyConnectorClass не указывает информацию о прокси-сервисе, текущий Connector не имеет возможности прокси
    TrueПрокси-сервис Connector успешно создан
    FalseПрокси-сервис находится в ненормальном состоянии
    UnknownПроверка прокси-сервиса в процессе

    Например:

    status:
      conditions:
      - type: ConnectorClassReady
        status: "True"
        message: ""
      - type: SecretReady
        status: "True"
        message: ""
      - type: LivenessReady
        status: "True"
        lastProbeTime: "2024-10-16T02:27:44Z"
        message: ""
      - type: AuthReady
        status: "True"
        lastProbeTime: "2024-10-16T02:27:44Z"
        message: ""
      - type: ProxyServiceReady
        status: "True"
        lastProbeTime: "2024-10-16T02:27:44Z"
        message: ""
      - type: Ready
        status: "True"
        message: ""

    Примеры

    Git-коннектор с базовой аутентификацией

    ##  Создайте информацию для аутентификации
    apiVersion: v1
    kind: Secret
    metadata:
      name: git-auth
      namespace: default
    type: kubernetes.io/basic-auth
    data:
      username: dXNlcm5hbWU=
      password: cGFzc3dvcmQ=
    ---
    ##  Создайте Connector
    apiVersion: connectors.alauda.io/v1alpha1
    kind: Connector
    metadata:
      name: git-github
      namespace: default
    spec:
      connectorClassName: git
      address: "https://github.com"
      auth:
        name: basic-auth
        secretRef:
          name: git-auth
          namespace: default
        params:
        - name: repository
          value: "org/repo.git"

    Git-коннектор без аутентификации

    apiVersion: connectors.alauda.io/v1alpha1
    kind: Connector
    metadata:
      name: git-public
      namespace: default
    spec:
      connectorClassName: git
      address: "https://github.com"
      auth:
        name: basic-auth
      params:
        - name: repository
          value: "org/repo.git"