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

Authentication Information

Информация для аутентификации определяет учетные данные для доступа к инструменту. В зависимости от типа инструмента можно настроить различные методы аутентификации. Этот метод аутентификации определяется в 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 является необязательной

Authentication Check

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 создан без указания информации о секрете, spec.auth.params должен быть передан.

Proxy Address

Если 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

Status Information

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

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

Условие SecretReady

Отражает статус секрета для Connector.

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

Условие AuthReady

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

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

Условие LivenessReady

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

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

Условие ProxyServiceReady

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

СтатусПричинаОписание
TrueNonProxyConnectorClass не задает информацию о Proxy Service, текущий Connector не имеет возможности Proxy
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: ""

Для получения дополнительной информации об условиях см. Connector Conditions.

Examples

Git Connector with Basic Authentication

##  Создать информацию для аутентификации
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 Connector with SSH Authentication

##  Создать SSH ключ
apiVersion: v1
kind: Secret
metadata:
  name: git-ssh
  namespace: default
type: kubernetes.io/ssh-auth
data:
  ssh-privatekey: LS0tLS1CRUdJTi...  ##  Приватный ключ в Base64
---
##  Создать Connector
apiVersion: connectors.alauda.io/v1alpha1
kind: Connector
metadata:
  name: git-github-ssh
  namespace: default
spec:
  connectorClassName: git
  address: "git@github.com"
  auth:
    name: ssh-auth
    secretRef:
      name: git-ssh
      namespace: default
    params:
    - name: repository
      value: "org/repo.git"

Git Connector without Authentication

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"