OCI Connector
OCI Connector — это платформонезависимый коннектор, который позволяет подключаться к любому OCI Registry, например Docker Hub, Harbor и т.д. Вы можете использовать OCI Connector для безопасного доступа к приватным OCI-репозиториям в CI/CD пайплайнах или выполнять операции с OCI в контейнеризованных нагрузках без необходимости предоставлять учетные данные. Кроме того, вы можете централизованно управлять конфигурациями доступа к OCI, избегая дублирования настроек учетных данных OCI в каждом namespace.
В этом документе описывается:
- Требования к доступу для OCI Registry
- Как создать OCI Connector на основе типа OCI Connector
- Возможности прокси и конфигурации OCI Connector
Содержание
Требования к OCI RegistryСоздание OCI Connector на основе типа OCI Connectorspec.connectorClassNamedescriptionAddressАутентификацияИспользование аутентификации на основе токенаТребуемые права токенаПрокси и конфигурацияПроксиАдрес проксиForward ProxyReverse ProxyДополнительноТребования к OCI Registry
OCI Registry, к которому осуществляется доступ, должен соответствовать следующим условиям:
-
Требования к реализации интерфейсов:
- Должен реализовывать как минимум интерфейсы, определённые в спецификации opencontainers/distribution-spec версии 1.0
- Должен успешно проходить тесты на соответствие distribution-spec
-
Требования к методу аутентификации:
- Должен поддерживать аутентификацию на основе токена и соответствовать CNCF Distribution Token Authentication Specification
Создание OCI Connector на основе типа OCI Connector
Пример создания базового OCI Connector:
spec.connectorClassName
Используйте константное значение oci.
description
Вы можете добавить описательную информацию к OCI Connector через поле annotations.
cpaas.io/description: описание OCI Connector.
Например:
Address
spec.address указывает адрес доступа к OCI Registry, например: https://index.docker.io.
Аутентификация
OCI Connector поддерживает следующие типы аутентификации:
tokenAuth: аутентификация на основе токена (опционально)- Соответствующий тип учетных данных:
cpaas.io/distribution-registry-token, этот тип учетных данных используется для процесса аутентификации, определённого в CNCF Distribution Token Authentication Specification, и учетные данные должны содержать информациюusernameиpassword.
- Соответствующий тип учетных данных:
Использование аутентификации на основе токена
Пример:
Если целевой OCI Registry не требует аутентификации, информацию об аутентификации можно опустить. Пример конфигурации:
Требуемые права токена
Требуемые права для настроенного токена зависят от того, как вы планируете его использовать в ваших Pods/Pipelines.
Например:
- Операции pull образов: если вам нужно только скачивать образы с помощью этого коннектора, токен должен иметь права только на чтение целевых репозиториев.
- Операции pull и push образов: если вы планируете загружать образы с помощью этого коннектора, токен должен иметь права на чтение и запись целевых репозиториев. Иными словами, токен должен позволять и скачивать, и загружать образы в реестр.
Для обеспечения безопасности рекомендуется создавать токены с минимально необходимыми правами. При необходимости дополнительных привилегий создавайте отдельные Connectors с более привилегированными секретами и используйте изоляцию namespace для контроля доступа пользователей к каждому Connector.
Прокси и конфигурация
Для предоставления клиентам возможности доступа к OCI-репозиториям без учетных данных, тип OCI Connector предлагает прокси-сервер, который автоматически внедряет информацию для аутентификации.
Клиенты, имеющие доступ к коннектору, могут использовать этот прокси-сервер для доступа к OCI-репозиториям без настройки учетных данных на стороне клиента.
Для упрощения использования тип OCI Connector предоставляет конфигурационную информацию, которую можно монтировать в Pods через CSI. В Pod при выполнении операций с OCI автоматически используется прокси-сервис для завершения операций.
Прокси
Адрес прокси
При создании Connector система:
- Автоматически создаст Service для прокси.
- Запишет адрес прокси в поле
status.proxy.httpAddress.
Вы можете использовать этот адрес прокси для операций push и pull образов.
Например:
Forward Proxy
Вы можете монтировать информацию о прокси в Pods с помощью CSI, а затем использовать эту информацию через переменные окружения или конфигурационные файлы.
Затем перед выполнением операций контейнера используйте информацию прокси через переменные окружения или конфигурационные файлы.
Reverse Proxy
При использовании обратного прокси необходимо изменить адрес целевого образа на адрес прокси.
Пример: index.docker.io/test/abc:v1 → c-dockerhub-demo.default.svc.cluster.local/namespaces/oci-connector-demo/connectors/oci-connector/test/abc:v1
и смонтировать файлы конфигурации учетных данных в Pod, а также настроить адрес прокси в insecure-registries.
OCI Connector, созданный на основе типа OCI Connector, предоставляет следующие конфигурации:
docker-config: конфигурационные учетные данные, необходимые для OCI CLI, таких как buildkit, buildah.
- Предоставляет файл конфигурации
config.json. - Содержит информацию аутентификации, необходимую для доступа к прокси.
Например:
buildkitd: конфигурационная информация, необходимая для BuildKit Daemon.
- Предоставляет файл конфигурации
buildkitd.toml. - В файле конфигурации текущий коннектор по умолчанию будет установлен как
insecure-registries.
Например:
Вы можете монтировать эту конфигурационную информацию в Pods с помощью connectors-csi и, в сочетании с возможностями прокси, выполнять операции push или pull образов без необходимости использования секретов.