Настройка встроенного реестра контейнеров для Azure Red Hat OpenShift 4

Azure Red Hat OpenShift предоставляет интегрированный реестр образов контейнеров, чтобы вы могли автоматически подготавливать новые репозитории образов по запросу. Используя этот реестр, вы получаете встроенное место, куда сборки вашего приложения могут отправлять итоговые образы.

В этой статье описана настройка встроенного реестра образов контейнеров для кластера Azure Red Hat OpenShift 4. Вы узнаете, как:

  • Разрешить субъекту доступ к реестру
  • Доступ к встроенному реестру образов контейнеров из кластера
  • Доступ к встроенному реестру образов контейнеров извне кластера

Перед тем как начать

В этой статье предполагается, что у вас есть существующий кластер (см. раздел "Создание кластера Azure Red Hat OpenShift 4"). Если вы хотите настроить интеграцию Microsoft Entra, обязательно создайте кластер с аргументом --pull-secret для az aro create.

Tip

Настройка аутентификации Microsoft Entra для вашего кластера — самый простой способ взаимодействовать с внутренним реестром из-за пределов кластера.

После создания кластера подключитесь к кластеру , выполнив проверку подлинности от имени kubeadmin пользователя.

Настройка проверки подлинности в реестре

Чтобы получить доступ к внутреннему реестру, необходимо предоставить в кластере разрешения любому субъекту, например пользователю кластера, пользователю Microsoft Entra или учетной записи службы Azure Red Hat OpenShift.

От имени kubeadmin выполните следующие команды:

# Note: replace "<user>" with the identity you need to access the registry
oc policy add-role-to-user -n openshift-image-registry registry-viewer <user>
oc policy add-role-to-user -n openshift-image-registry registry-editor <user>

Замечание

Для пользователей кластера и Microsoft Entra пользователей это имя совпадает с именем, используемым для проверки подлинности в кластере. Для учетных записей служб Azure Red Hat OpenShift отформатируйте имя как system:serviceaccount:<project>:<name>.

Доступ к реестру

После настройки аутентификации для реестра с ним можно работать. Дополнительные сведения см. в следующих разделах.

Из кластера

Предположим, что вы запускаете платформу непрерывной интеграции и непрерывной доставки (CI/CD), развернутую в виде pod’ов, которые отправляют образы в реестр и получают их из него. Если вам нужно получить доступ к реестру из кластера, вы можете получить доступ к реестру через ip-службу кластера по полному доменному имени image-registry.openshift-image-registry.svc.cluster.local:5000. Все поды в кластере имеют доступ к этому реестру.

Вне кластера

Предположим, вы хотите отправить и извлечь образы из ноутбука разработчика, внешней платформы CI/CD или другого кластера. Если рабочие процессы требуют доступа к внутреннему реестру за пределами кластера, вам потребуется выполнить несколько дополнительных действий.

От имени kubeadmin выполните следующие команды, чтобы открыть доступ к встроенному реестру извне кластера с помощью маршрута:

oc patch config.imageregistry.operator.openshift.io/cluster --patch='{"spec":{"defaultRoute":true}}' --type=merge
oc patch config.imageregistry.operator.openshift.io/cluster --patch='[{"op": "add", "path": "/spec/disableRedirect", "value": true}]' --type=json

Затем можно найти внешне маршрутизируемое полностью определённое доменное имя реестра:

От имени kubeadmin выполните:

oc get route -n openshift-image-registry default-route --template='{{ .spec.host }}'