Быстрый старт
Этот документ поможет вам быстро понять, как создать OCI Connector и использовать его для безопасного доступа к контейнерным реестрам без прямой работы с учетными данными.
Содержание
Введение
Применимые сценарии
OCI (Open Container Initiative) Connector предоставляет безопасный способ:
- Доступа к контейнерным реестрам (Docker Hub, Harbor и др.) без встраивания учетных данных в рабочие нагрузки
- Централизованного управления информацией для аутентификации в реестрах
- Использования прокси-механизма для безопасной отправки и получения контейнерных образов
- Настройки контейнерных инструментов для работы с прокси реестра
Этот подход особенно полезен для:
- CI/CD конвейеров, которым нужно отправлять образы в приватные реестры
- Мультикомандных сред, где учетные данные реестра необходимо безопасно разделять
- Процессов сборки контейнеров внутри Kubernetes
Оценочное время чтения
15 минут
Примечания
- OCI connector использует интеграцию с CSI драйвером для безопасной инъекции учетных данных реестра.
- Разным контейнерным инструментам (Docker, Buildah и др.) может потребоваться специфическая настройка для доступа к небезопасным реестрам.
- Сгенерированные коннектором конфигурационные файлы действительны в течение 30 минут.
Предварительные требования
- Kubernetes кластер с установленной системой Connectors (Operator, Core и OCI компоненты). Подробности установки см. в Installation Guide.
- kubectl, настроенный для взаимодействия с вашим кластером
- Учетные данные для доступа к контейнерному реестру (Docker Hub, Harbor и др.)
- Базовые знания ресурсов Kubernetes
Обзор процесса
Шаги выполнения
Шаг 1: Создать Namespace
Создайте выделенный namespace для этой демонстрации:
Шаг 2: Создать учетные данные реестра и OCI Connector
Создайте Secret с учетными данными реестра и ресурс OCI Connector. Более подробную информацию о создании и настройке коннекторов смотрите в Connectors Quick Start Guide.
Проверьте, что коннектор находится в статусе "Ready":
Вывод должен быть следующим:
Шаг 3: Создать задачу сборки/отправки контейнера
Создайте ConfigMap с примером Dockerfile:
Создайте задачу, которая использует коннектор для сборки и отправки контейнерного образа:
Ключевые параметры в определении тома:
connector.name: имя вашего OCI коннектораconfiguration.names: указывает, какую конфигурацию генерировать из OCI ConnectorClass:"docker-config": генерирует конфигурацию аутентификации (config.json), необходимую для любых операций с реестром"buildkitd": генерирует конфигурацию демона BuildKit для доступа к небезопасному реестру
mountPath: указывает, куда монтировать конфигурационный файл в контейнере:- "/root/.docker" для конфигурации аутентификации Docker
- "/etc/buildkit" для конфигурации BuildKit
Шаг 4: Проверить выполнение
Проверьте логи задачи, чтобы убедиться, что образ успешно собран и отправлен:
Вы должны увидеть процесс сборки и отправки образа в реестр.
Ожидаемые результаты
После успешного выполнения всех шагов вы увидите:
-
OCI коннектор в статусе "Ready":
-
Успешную операцию сборки и отправки образа в логах задачи, показывающую, что образ был отправлен в реестр через прокси коннектора.
-
Адрес прокси коннектора в поле статуса:
Как это работает
OCI Connector работает следующим образом:
- Создает прокси-сервис, который находится между вашими рабочими нагрузками и контейнерным реестром
- Внедряет информацию для аутентификации при прохождении запросов через прокси
- Предоставляет конфигурационные файлы для контейнерных инструментов для работы с прокси
Коннектор генерирует три типа конфигурационных файлов, которые служат разным целям:
-
docker-config: создает файл
config.jsonс необходимой информацией для аутентификации при доступе к прокси-сервисуЭта конфигурация необходима для аутентификации и требуется для всех операций с контейнерами.
-
buildkitd: создает файл
buildkitd.toml, который настраивает BuildKit на доверие к небезопасному прокси реестраЭто нужно только при использовании BuildKit для сборки и отправки образов.
Чтобы просмотреть сгенерированную конфигурацию:
Просмотрите сгенерированную конфигурацию:
Устранение неполадок
Если операция с контейнером не удалась, проверьте следующее:
-
Статус коннектора: убедитесь, что коннектор в состоянии "Ready":
-
Разрешения RBAC: проверьте правильность настройки RoleBinding.
-
Доступ к реестру: убедитесь, что учетные данные имеют доступ к указанному репозиторию.
-
Монтирование конфигурации: проверьте, что конфигурационные тома корректно смонтированы в задаче.
-
Адрес прокси: убедитесь, что используете правильный адрес прокси из
status.proxy.httpAddress.urlв ссылках на образы.
Следующие шаги
После успешной отправки первого образа с помощью OCI Connector вы можете:
- Использовать коннектор в Kubernetes workload для получения приватных образов
- Интегрировать с CI/CD конвейерами для сборки и отправки образов
- Настроить разные контейнерные инструменты для работы с коннектором
- Использовать коннектор с разными сервисами реестров