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.
Настройка информации для аутентификации
Информация для аутентификации настраивается следующим образом:
- Указать имя используемого типа аутентификации согласно определению ConnectorClass.
- Создать Secret, содержащий учетные данные.
- Сослаться на Secret в Connector через
spec.auth.secretRef
.
- Указать параметры, необходимые при проверке аутентификации.
Например, для настройки базовой аутентификации:
## Создать 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.
Статус | Причина | Описание |
---|
True | SecretOptional | ConnectorClass помечает информацию для аутентификации как необязательную, и текущий Connector не имеет настроенной информации для аутентификации |
True | | Секрет настроен и существует |
False | | Секрет настроен, но при проверке его существования произошла ошибка |
Unknown | | Выполняется проверка корректности настроенного секрета |
Условие AuthReady
Отражает статус аутентификации для Connector.
Статус | Причина | Описание |
---|
True | NonAuthProbe | ConnectorClass не задает информацию для Auth Probe |
True | | Проверка учетных данных прошла успешно |
False | | Проверка учетных данных не удалась |
Unknown | | Проверка учетных данных в процессе |
Условие LivenessReady
Отражает статус доступности инструмента для Connector.
Статус | Причина | Описание |
---|
True | NonLivenessProbe | ConnectorClass не задает информацию для Liveness Probe |
True | | Доступ к инструменту нормальный |
False | | Доступ к инструменту нарушен |
Unknown | | Проверка доступа к инструменту в процессе |
Условие ProxyServiceReady
Отражает статус прокси-сервиса для Connector.
Статус | Причина | Описание |
---|
True | NonProxy | ConnectorClass не задает информацию о 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"