• Русский
  • OCI ConnectorClass

    OCI ConnectorClass — это класс коннектора, используемый для определения OCI Connector. Он позволяет пользователям легко получить доступ к OCI Registry (репозиторий образов OCI) внутри кластера.

    Содержание

    Требования к доступу

    OCI Registry, к которому осуществляется доступ, должен соответствовать следующим условиям:

    1. Требования к реализации интерфейса:

    2. Требования к методу аутентификации:

    Быстрый старт

    apiVersion: connectors.alauda.io/v1alpha1
    kind: Connector
    metadata:
      name: dockerhub
    spec:
      connectorClassName: oci
      address: https://index.docker.io
      auth:
        name: tokenAuth
        params:
        - name: repository
          value: library/ubuntu
        secretRef:
          name: dockerhub
    ---
    apiVersion: v1
    stringData:
      password: your-token
      username: your-username
    kind: Secret
    metadata:
      name: dockerhub
    type: cpaas.io/distribution-registry-token

    Ограничения параметров для Connector

    spec.connectorClassName

    Обязательно использовать константное значение oci.

    spec.address

    Указывает адрес доступа к OCI Registry, например: http://harbor.example.com.

    spec.auth.name

    Типы аутентификации, поддерживаемые OCI Connector:

    • tokenAuth: аутентификация на основе токена (опционально)
      • Соответствующий тип учётных данных: cpaas.io/distribution-registry-token, данный тип учётных данных используется для процесса аутентификации, определённого в CNCF Distribution Token Authentication Specification, и должен предоставлять информацию username и password.

    Пример:

    apiVersion: connectors.alauda.io/v1alpha1
    kind: Connector
    metadata:
      name: connector-oci
    spec:
      connectorClassName: oci
      address: http://<registry.url>
      # . . .
      auth:
        name: tokenAuth
        secretRef:
          name: oci-secret
    ---
    apiVersion: v1
    data:
      password: YWRtaW4=
      username: YWRtaW4=
    kind: Secret
    metadata:
      name: oci-secret
    type: cpaas.io/distribution-registry-token

    Если целевой OCI Registry не требует аутентификации, информацию об аутентификации можно опустить. Пример конфигурации:

    apiVersion: connectors.alauda.io/v1alpha1
    kind: Connector
    metadata:
      name: connector-oci
    spec:
      connectorClassName: oci
      address: http://<registry.url>
      auth:
        name: tokenAuth

    spec.auth.params[]

    Конфигурация проверки работоспособности:

    repository: указывает репозиторий образов, используемый для проверки работоспособности, пример: library/ubuntu.

    apiVersion: connectors.alauda.io/v1alpha1
    kind: Connector
    metadata:
      name: connector-oci
    spec:
      connectorClassName: oci
      address: http://<registry.url>
      auth:
        name: tokenAuth
        params:
        - name: repository
          value: library/ubuntu
        secretRef:
          name: oci-secret
    ---
    apiVersion: v1
    data:
      password: YWRtaW4=
      username: YWRtaW4=
    kind: Secret
    metadata:
      name: oci-secret
    type: cpaas.io/distribution-registry-token

    Описание возможностей

    Проверка работоспособности

    После создания Connector система выполнит следующие действия:

    1. Выполнит проверку работоспособности с использованием репозитория образов, указанного в spec.auth.params[name=repository].
    2. Сохранит результаты проверки в поле status.conditions[type=AuthReady].

    Информация о конфигурации

    OCI ConnectorClass предоставляет следующие конфигурации:

    • docker-config: информация конфигурации Docker.
      • Предоставляет файл конфигурации config.json.
      • Содержит данные аутентификации, необходимые для доступа к прокси.

    Пример:

    // config.json
    
    {
      "auths": {
          "<proxy address of the connector>": {
              "auth": "<authentication information required to access the connector>"
          }
      }
    }
    • dockerd: информация конфигурации Docker Daemon. Предоставляется файл конфигурации daemon.json, по умолчанию конфигурация Docker Daemon устанавливает текущий коннектор как insecure-registries.

    Пример:

    {
      "insecure-registries": [
        "<proxy address of the connector>"
      ]
    }
    • buildkitd: информация конфигурации BuildKit Daemon. Предоставляется файл конфигурации buildkitd.toml, по умолчанию конфигурация BuildKit Daemon устанавливает текущий коннектор как insecure-registries.

    Пример:

    insecure-entitlements = [ "network.host", "security.insecure" ]
    [registry."<proxy address of the connector>"]
      http = true

    Эту конфигурацию можно смонтировать в Pods с помощью connectors-csi, что позволяет выполнять push или pull образов без ключей (Secretless).

    Информация о прокси

    После создания Connector система:

    1. Автоматически создаст Service для прокси.
    2. Запишет адрес прокси в поле status.proxy.httpAddress.

    Вы можете использовать этот адрес прокси для операций push и pull образов.

    Пример:

    apiVersion: connectors.alauda.io/v1alpha1
    kind: Connector
    metadata:
      name: harbor
      namespace: default
    spec:
      address: https://build.example.com
      auth:
        name: tokenAuth
        secretRef:
          name: harbor
      connectorClassName: oci
    status:
      conditions:
      # . . .
      proxy:
        httpAddress:
          url: http://c-harbor.default.svc.cluster.local

    Дополнительно