Harbor Connector
Harbor Connector — это платформонезависимый коннектор, который можно использовать для подключения к любому реестру Harbor.
Вы можете использовать Harbor Connector для безопасного выполнения операций с образами контейнеров в CICD-пайплайнах или использовать его в Kubernetes-ворклоадах для выполнения операций с образами без использования учетных данных.
Кроме того, вы можете централизовать управление конфигурациями доступа к Harbor по пространствам имен, избегая необходимости повторять учетные данные Harbor в каждом пространстве имен.
Содержание
OverviewIntegration RequirementsCreating a simple Harbor connectorFields ReferenceConnector CapabilitiesAuthentication MethodsToken Permissions RequiredProxy and Configuration CapabilitiesProxy AddressForward ProxyReverse ProxyFurther ReadingOverview
В этом документе рассматриваются:
- Требования к интеграции: предварительные условия для целевых реестров Harbor
- Создание Harbor Connector
- Расширенные возможности: функции прокси и настройки Harbor Connector
Integration Requirements
Требования к реестрам Harbor
- Поддерживаются версии Harbor 2.x
Creating a simple Harbor connector
Как создать базовый Harbor Connector:
Fields Reference
spec.connectorClassName:
harbor (константа), указывает имя ConnectorClass для интеграции с Harbor.
spec.address:
Адрес целевого реестра Harbor, например: https://harbor.example.com.
spec.auth (необязательно):
устанавливает метод аутентификации для реестра Harbor
-
spec.auth.name: должен бытьbasicAuthдля Harbor Connector. -
spec.auth.secretRef: указывает секрет, содержащий информацию для аутентификации в реестре Harbor, секрет должен быть создан в том же пространстве имен, что и коннектор. Если ваш реестр Harbor не требует аутентификации, это поле можно опустить. Тип секрета должен бытьkubernetes.io/basic-auth.
Необязательные поля метаданных:
-
cpaas.io/description: Описание Harbor Connector, например:
Connector Capabilities
Authentication Methods
Harbor Connector поддерживает следующие методы аутентификации:
- Basic Authentication: аутентификация по имени пользователя и паролю, тип секрета должен быть
kubernetes.io/basic-auth.
Если ваш реестр Harbor не требует аутентификации, это поле можно опустить.
Token Permissions Required
Требуемые разрешения для настроенных учетных данных зависят от того, как вы планируете их использовать в Pods/Pipelines.
Например:
- Операции pull и push образов: если необходимо выполнять загрузку и выгрузку образов через этот коннектор, учетные данные должны иметь права на чтение и запись для целевого реестра Harbor.
- API операции: настройте разрешения в зависимости от необходимых операций. При настройке учетных данных убедитесь, что аккаунт имеет доступ к информации о пользователе (/users/current).
Для обеспечения безопасности рекомендуется создавать учетные данные с минимально необходимыми правами. При необходимости дополнительных привилегий создавайте отдельные коннекторы с более привилегированными секретами и используйте изоляцию по пространствам имен для контроля доступа пользователей к каждому коннектору.
Proxy and Configuration Capabilities
Harbor Connector предоставляет возможности прокси для обеспечения безопасного доступа к реестрам Harbor.
Чтобы клиенты могли обращаться к реестрам Harbor без прямого управления учетными данными, Harbor ConnectorClass предоставляет прокси-сервер, который автоматически внедряет информацию для аутентификации.
Клиенты с доступом к коннектору могут использовать этот прокси-сервер для доступа к реестрам Harbor без необходимости настраивать учетные данные на стороне клиента.
Proxy Address
При создании Harbor Connector система автоматически создаст Service для проксирования доступа к реестру Harbor.
Система запишет адрес прокси в поле status.proxy.httpAddress.
Например:
Forward Proxy
Вы можете монтировать информацию о прокси в Pods с помощью CSI, а затем использовать эту информацию через переменные окружения или конфигурационные файлы.
Затем перед выполнением операций с контейнерами используйте информацию о прокси через переменные окружения или конфигурационные файлы.
Reverse Proxy
При использовании обратного прокси необходимо изменить адрес целевого образа на адрес прокси.
Пример: harbor.example.com/test/abc:v1 → c-harbor-connector.default.svc.cluster.local/namespaces/harbor-connector-demo/connectors/harbor-connector/test/abc:v1
Кроме того, необходимо смонтировать конфигурационные файлы в Pod и настроить адрес прокси в insecure-registries. Предоставляются конфигурационные файлы по умолчанию buildkitd.toml и config.json.
OCI Connector, созданный на основе типа OCI Connector, предоставляет следующие конфигурации:
config: Конфигурационная информация, необходимая для OCI CLI, таких как buildkit, buildah и др.
- Предоставляет конфигурационный файл
config.json. - Содержит информацию для аутентификации, необходимую для доступа к прокси.
Например:
buildkitd: Конфигурационная информация, необходимая для демона BuildKit.
- Предоставляет конфигурационный файл
buildkitd.toml. - В конфигурационном файле текущий коннектор по умолчанию будет указан в
insecure-registries.
Например: