• Русский
  • Коннектор

    Обзор

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

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

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

    apiVersion: connectors.alauda.io/v1alpha1
    kind: Connector
    metadata:
      name: git-github
      namespace: default
    spec:
      connectorClassName: git  ##  Specify the connector type as git, this ConnectorClass must exist
      address: "https://github.com"  ##  Access address of the tool
      auth:
        name: basicAuth
        secretRef:  ##  Reference to authentication information
          name: github-secret

    Адрес Connector

    Поле 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 с префиксом пути

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

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

    Примечание

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

    Подробнее см. liveness probe и authentication probe.

    Параметры Connector

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

    Значения параметров можно указать в Connector с помощью поля spec.params.

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

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

    Дополнительные сведения об определении параметров в ConnectorClass см. в Параметры ConnectorClass.

    Пример

    Следующий пример демонстрирует Connector, настроенный с параметром 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. Укажите сведения о параметрах, необходимых во время проверки аутентификации.

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

    ##  Create a Secret containing username and password
    apiVersion: v1
    kind: Secret
    metadata:
      name: github-secret
      namespace: default
    type: kubernetes.io/basic-auth
    data:
      username: dXNlcm5hbWU=  ##  Base64 encoded username
      password: cGFzc3dvcmQ=  ##  Base64 encoded password
    ---
    ##  Reference the Secret in the 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 ##  Authentication for git connectorclass basic-auth is optional

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

    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  ##  Specify the repository to be checked
          value: "org/repo.git"

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

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

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

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

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

    Например, следующий пример описывает Connector с 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 настроен resolver proxy-адреса с типом path, формат proxy-адреса будет http://c-{connector-name}.{namespace}.svc.cluster.local/namespaces/{namespace}/connectors/{connector-name}, где {path} — это путь Connector.

    Например, следующий пример описывает Connector с 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/namespaces/default/connectors/harbor

    Сведения о состоянии

    Сведения о состоянии Connector записываются в поле status и содержат proxy-адрес, API-адрес и conditions:

    • status.conditions: Conditions Connector.
    • status.proxy: Proxy-адрес Connector.
    • status.api: API-адрес Connector.

    Proxy-адрес

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

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

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

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

    API-адрес

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

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

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

    Conditions

    Тип conditions включает:

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

    Condition SecretReady

    Указывает состояние Secret для Connector.

    StatusReasonDescription
    TrueSecretOptionalConnectorClass помечает сведения об аутентификации как необязательные, и у текущего Connector не настроены сведения об аутентификации
    TrueSecret настроен и существует
    FalseSecret настроен, но при проверке существования Secret произошла ошибка
    UnknownВыполняется проверка, является ли настроенный Secret корректным

    Condition AuthReady

    Указывает состояние аутентификации для Connector.

    StatusReasonDescription
    TrueNonAuthProbeConnectorClass не задает сведения Auth Probe
    TrueПроверка учетных данных успешно пройдена
    FalseПроверка учетных данных завершилась неудачно
    UnknownВыполняется проверка учетных данных

    Condition LivenessReady

    Указывает состояние доступности Connector.

    StatusReasonDescription
    TrueNonLivenessProbeConnectorClass не задает сведения Liveness Probe
    TrueДоступ к инструменту нормальный
    FalseДоступ к инструменту ненормальный
    UnknownВыполняется проверка доступа к инструменту

    Condition ProxyServiceReady

    Указывает состояние proxy-сервиса для Connector.

    StatusReasonDescription
    TrueNonProxyConnectorClass не задает сведения Proxy Service, текущий Connector не имеет возможности Proxy
    TrueProxy-сервис Connector успешно создан
    FalseProxy-сервис находится в ненормальном состоянии
    UnknownВыполняется проверка proxy-сервиса

    Например:

    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 Connector с базовой аутентификацией

    ##  Create authentication information
    apiVersion: v1
    kind: Secret
    metadata:
      name: git-auth
      namespace: default
    type: kubernetes.io/basic-auth
    data:
      username: dXNlcm5hbWU=
      password: cGFzc3dvcmQ=
    ---
    ##  Create 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 Connector без аутентификации

    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"