Использование Реестра контейнеров Azure с Azure Red Hat OpenShift
Реестр контейнеров Azure (ACR) — это управляемая служба реестра контейнеров, которую можно использовать для хранения частных образов контейнеров DOCKER с корпоративными возможностями, такими как георепликация. Чтобы получить доступ к записи контроля доступа из кластера ARO, этот кластер может пройти проверку подлинности в ACR, сохраняя учетные данные для входа в DOCKER в секрете Kubernetes. Аналогичным образом кластер ARO может использовать imagePullSecret в спецификации pod для проверки подлинности в реестре при извлечении образа. Из этой статьи вы узнаете, как настроить Реестр контейнеров Azure с помощью кластера Azure Red Hat OpenShift для хранения и извлечения частных образов контейнеров DOCKER.
Необходимые компоненты
В этом учебнике предполагается наличие у вас Реестра контейнеров Azure. В противном случае используйте портал Azure или инструкции Azure CLI для создания реестра контейнеров.
В этой статье также предполагается наличие у вас кластера Azure Red Hat OpenShift и установленного интерфейса командной строки oc
. Если это не так, следуйте инструкциям в учебнике по созданию кластера ARO.
Получить секрет запрашивания
Чтобы получить доступ к реестру из кластера ARO, вам потребуется секрет запрашивания из записи контроля доступа.
Чтобы получить учетные данные секрета запрашивания, можно использовать либо портал Azure, либо Azure CLI.
Если вы используете портал Azure, перейдите к своему экземпляру записи контроля доступа и выберите Ключи доступа. Ваш docker-username
— это имя реестра вашего контейнера, для docker-password
используйте либо password, либо password2.
Вместо этого можно использовать Azure CLI для получения этих учетных данных:
az acr credential show -n <your registry name>
Создание секрета Kubernetes
Теперь мы будем использовать эти учетные данные для создания секрета Kubernetes. Выполните следующую команду с помощью учетных данных записи контроля доступа:
oc create secret docker-registry \
--docker-server=<your registry name>.azurecr.io \
--docker-username=<your registry name> \
--docker-password=******** \
--docker-email=unused \
acr-secret
Примечание.
Этот секрет будет храниться в текущем проекте OpenShift (пространство имен Kubernetes) и будет ссылаться только на объекты pod, созданные в этом проекте. См. этот документ для получения дополнительных сведений по созданию секрета запрашивания для всего кластера.
Связывание секрета с учетной записью службы
Затем свяжите секрет с учетной записью службы, которая будет использоваться модулем pod, чтобы модуль pod смог получить доступ к реестру контейнеров. Имя учетной записи службы должно соответствовать имени учетной записи службы, используемой pod. default
— учетная запись службы по умолчанию:
oc secrets link default <pull_secret_name> --for=pull
Создание модуля pod с помощью частного образа реестра
Теперь, когда мы подключились к кластеру ARO к записи контроля доступа, мы создадим образ из записи контроля доступа, чтобы создать модуль.
Начните с podSpec и укажите секрет, созданный как imagePullSecret:
apiVersion: v1
kind: Pod
metadata:
name: hello-world
spec:
containers:
- name: hello-world
image: <your registry name>.azurecr.io/hello-world:v1
imagePullSecrets:
- name: acr-secret
Чтобы убедиться, что pod работает, выполните эту команду и дождитесь, пока ее состояние не станет Выполняется:
$ oc get pods --watch
NAME READY STATUS RESTARTS AGE
hello-world 1/1 Running 0 30s