Uso de Azure Container Registry con Red Hat OpenShift en Azure (ARO)

Azure Container Registry (ACR) es un servicio de registro de contenedor administrado que puede usar para almacenar imágenes de contenedor de Docker privadas con funcionalidades empresariales como la replicación geográfica. Para acceder al ACR desde un clúster de ARO, el clúster se puede autenticar con ACR mediante el almacenamiento de las credenciales de inicio de sesión de Docker en un secreto de Kubernetes. Del mismo modo, un clúster de ARO puede usar un elemento imagePullSecret en la especificación de pod para autenticarse en el registro al extraer la imagen. En este artículo, aprenderá a configurar una instancia de Azure Container Registry con un clúster de Red Hat OpenShift en Azure para almacenar y extraer imágenes de contenedor de Docker privadas.

Requisitos previos

En esta guía se da por supuesto que tiene una instancia de Azure Container Registry. Si no se así, use Azure Portal o las instrucciones para la CLI de Azure para crear un registro de contenedor.

En este artículo también se presupone que tiene un clúster de Red Hat OpenShift en Azure y que tiene instalada la CLI de oc. Si no es así, siga las instrucciones del tutorial para crear un clúster de ARO.

Obtención de un secreto de extracción

Necesitará un secreto de extracción de ACR para acceder al registro desde el clúster de ARO.

Para obtener las credenciales del secreto de extracción, puede usar Azure Portal o la CLI de Azure.

Si usa Azure Portal, navegue a su instancia de ACR y seleccione Claves de acceso. docker-username es el nombre del registro de contenedor. Para docker-password, use password o password2.

Access Keys

En su lugar, puede usar la CLI de Azure para obtener estas credenciales:

az acr credential show -n <your registry name>

Creación del secreto de Kubernetes

Ahora usaremos estas credenciales para crear un secreto de Kubernetes. Ejecute el comando siguiente con sus credenciales de ACR:

oc create secret docker-registry \
    --docker-server=<your registry name>.azurecr.io \
    --docker-username=<your registry name> \
    --docker-password=******** \
    --docker-email=unused \
    acr-secret

Nota:

Este secreto se almacenará en el proyecto de OpenShift actual (espacio de nombres de Kubernetes) y solo podrán hacer referencia a él los pods creados en ese proyecto. Para más instrucciones sobre cómo crear un secreto de extracción para todo el clúster, consulte este documento.

A continuación, vincule el secreto a la cuenta de servicio que usará el pod para que el pod pueda acceder al registro de contenedor. El nombre de la cuenta de servicio debe coincidir con el nombre de la cuenta de servicio utilizada por el pod. default es la cuenta de servicio predeterminada:

oc secrets link default <pull_secret_name> --for=pull

Creación de un pod con una imagen de registro privada

Ahora que conectamos el clúster de ARO a la instancia de ACR, vamos a extraer una imagen de ACR para crear un pod.

Comience con podSpec y especifique el secreto que creó como 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

Para comprobar que el pod está en funcionamiento, ejecute este comando y espere hasta que el estado sea En ejecución:

$ oc get pods --watch
NAME         READY   STATUS    RESTARTS   AGE
hello-world  1/1     Running   0          30s

Pasos siguientes