Harbor Connector
Harbor connector — это не зависящий от платформы коннектор, который можно использовать для подключения к любому Harbor registry.
Вы можете использовать Harbor Connector для безопасного выполнения операций с container image в CICD pipelines или применять его в kubernetes workloads для выполнения операций с image без учетных данных.
Кроме того, вы можете централизованно управлять конфигурациями доступа Harbor в разных namespaces, избегая необходимости повторять учетные данные Harbor в каждом namespace.
Содержание
ОбзорТребования к интеграцииСоздание простого Harbor connectorСправочник по полямВозможности коннектораМетоды аутентификацииRequired permissions for tokenProxy и возможности конфигурацииProxy AddressForward ProxyReverse ProxyДополнительные материалыОбзор
В этом документе рассматриваются:
- Требования к интеграции: предварительные условия для целевых Harbor registries
- Создание Harbor connector
- Дополнительные возможности: proxy-возможности и возможности конфигурации Harbor connector
Требования к интеграции
Предварительные требования для Harbor registries
- Поддерживаются версии Harbor 2.x
Создание простого Harbor connector
Ниже показано, как создать базовый Harbor Connector:
Справочник по полям
spec.connectorClassName:
harbor (константа) — указывает имя ConnectorClass для интеграции с Harbor.
spec.address:
Адрес целевого Harbor registry, например: https://harbor.example.com.
spec.auth(optional):
устанавливает метод аутентификации Harbor registry
-
spec.auth.name: для Harbor connector должно бытьbasicAuth. -
spec.auth.secretRef: указывает secret, содержащий информацию аутентификации Harbor registry; secret должен быть создан в том же namespace, что и connector. Если ваш Harbor registry не требует аутентификации, это поле можно опустить. Тип secret должен бытьkubernetes.io/basic-auth.
Необязательные поля метаданных:
-
cpaas.io/description: описание Harbor connector, например:
Возможности коннектора
Методы аутентификации
Harbor Connector поддерживает следующие методы аутентификации:
- Basic Authentication: аутентификация по имени пользователя и паролю, тип secret должен быть
kubernetes.io/basic-auth.
if your Harbor registry does not require authentication, you can omit this field.
Required permissions for token
Необходимые permissions для настроенных учетных данных зависят от того, как вы планируете использовать их в Pods/Pipelines.
Например:
- Операции pull и push образов: если вам нужно выполнять pull и push images с помощью этого connector, учетные данные должны иметь как permissions на чтение, так и permissions на запись для целевого Harbor registry.
- Операции API: настраивайте permissions в зависимости от операций, которые требуется выполнять. При настройке учетных данных убедитесь, что учетная запись имеет permission на доступ к информации о пользователе (/users/current).
В целях соблюдения рекомендаций по безопасности мы советуем создавать учетные данные с минимально необходимыми permissions. Если требуются дополнительные привилегии, создавайте отдельные Connectors с более привилегированным secret и используйте изоляцию namespace, чтобы контролировать, какие пользователи могут получить доступ к каждому Connector.
Proxy и возможности конфигурации
Harbor Connector предоставляет proxy-возможности, обеспечивающие безопасный доступ к Harbor registries.
Чтобы клиенты могли обращаться к Harbor registries без непосредственной обработки учетных данных, Harbor ConnectorClass предоставляет proxy server, который автоматически внедряет информацию аутентификации.
Клиенты, имеющие доступ к connector, могут использовать этот proxy server для доступа к Harbor registries без необходимости настраивать учетные данные на стороне клиента.
Proxy Address
При создании Harbor connector система автоматически создаст Service для proxy-доступа к Harbor registry.
Система запишет proxy address в поле status.proxy.httpAddress.
Например:
Forward Proxy
Вы можете смонтировать proxy-информацию в Pods с помощью CSI, а затем использовать ее через переменные среды или файлы конфигурации.
Затем перед выполнением операций с container используйте proxy-информацию через переменные среды или файлы конфигурации.
Reverse Proxy
При использовании reverse proxy необходимо изменить адрес целевого image на адрес 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 и настроить proxy address в insecure-registries. По умолчанию предоставляются файлы конфигурации buildkitd.toml и config.json.
OCI Connector, созданный на основе типа OCI Connector, предоставляет следующие конфигурации:
config: сведения о конфигурации, необходимые для OCI CLI, например buildkit, buildah и т. д.
- Предоставляет файл конфигурации
config.json. - Содержит информацию аутентификации, необходимую для доступа к proxy.
Например:
buildkitd: сведения о конфигурации, необходимые для BuildKit Daemon.
- Предоставляет файл конфигурации
buildkitd.toml. - В файле конфигурации текущий connector по умолчанию будет указан как
insecure-registries.
Например: