Extracción de imágenes de Azure Container Apps con identidad administrada

Puede extraer imágenes de repositorios privados de Microsoft Azure Container Registry mediante identidades administradas para la autenticación para evitar el uso de credenciales administrativas. Puede usar una identidad administrada asignada por el usuario o asignada por el sistema para autenticarse con Azure Container Registry.

Con una identidad administrada asignada por el sistema, Azure Container Apps crea y administra la identidad. La identidad está asociada a la aplicación de contenedor y se elimina si se elimina la aplicación. Con una identidad administrada asignada por el usuario, se crea y administra la identidad fuera de Azure Container Apps. Se puede asignar a varios recursos de Azure, incluido Azure Container Apps.

Container Apps comprueba si hay una nueva versión de la imagen cada vez que se inicia un contenedor. En la terminología de Docker o Kubernetes, Container Apps establece la directiva de extracción de imágenes de cada contenedor en always.

En este artículo se describe cómo usar Azure Portal para configurar la aplicación contenedora con el fin de usar identidades administradas asignadas por el usuario y asignadas por el sistema para extraer imágenes de repositorios privados de Azure Container Registry.

Identidad administrada asignada por el usuario

En los pasos siguientes se describe el proceso para configurar la aplicación contenedora con el fin de usar una identidad administrada asignada por el usuario para extraer imágenes de repositorios privados de Azure Container Registry.

  1. Cree una aplicación contenedora con una imagen pública.
  2. Agregue la identidad administrada asignada por el usuario a la aplicación contenedora.
  3. Cree una revisión de la aplicación de contenedor con una imagen privada y la identidad administrada asignada por el usuario.

Requisitos previos

  • Una cuenta de Azure con una suscripción activa.

  • Una instancia privada de Azure Container Registry que contiene una imagen que desea extraer.

  • Azure Container Registry debe permitir los tokens de audiencia de ARM para la autenticación con el fin de usar la identidad administrada a fin de extraer imágenes. Use el siguiente comando para comprobar si se permite que los tokens de ARM accedan a ACR:

    az acr config authentication-as-arm show -r <REGISTRY>
    

    Si no se permiten tokens de ARM, puede permitirlos con el siguiente comando:

    az acr config authentication-as-arm update -r <REGISTRY> --status enabled
    
  • Cree una identidad administrada asignada por el usuario. Para más información, vaya a Creación de una identidad administrada asignada por el usuario.

Crear una aplicación de contenedor

Siga estos pasos para crear una aplicación contenedora con la imagen de inicio rápido predeterminada.

  1. Vaya a la página Principal del portal.

  2. Busque Aplicaciones de contenedor en la barra de búsqueda superior.

  3. Busque Aplicaciones de contenedor en los resultados de la búsqueda.

  4. Seleccione el botón Crear.

  5. En la pestaña Aspectos básicos, realice las acciones siguientes.

    Configuración Acción
    Suscripción Seleccione su suscripción a Azure.
    Grupo de recursos Seleccione un grupo de recursos existente o cree uno nuevo.
    Nombre de la aplicación de contenedor Escriba un nombre para la aplicación contenedora.
    Ubicación Seleccione una ubicación.
    Creación del entorno de la aplicación contenedora Cree un nuevo entorno o seleccione uno existente.
  6. Seleccione el botón Revisar y crear en la parte inferior de la página Crear entorno de aplicación de contenedor.

  7. Seleccione el botón Crear en la parte inferior de la página Crear aplicación contenedora.

Deje que transcurran unos minutos para que la implementación finalice. Una vez finalizada la implementación, seleccione Ir al recurso.

Incorporación de la identidad administrada asignada por el usuario

  1. Seleccione Identidad en el menú izquierdo.
  2. Seleccione la pestaña Usuario asignado.
  3. Seleccione el botón Agregar identidad administrada asignada por el usuario.
  4. Seleccione su suscripción.
  5. Seleccione la identidad que creó.
  6. Seleccione Agregar.

Creación de una revisión de la aplicación contenedora

Cree una revisión de la aplicación contenedora con una imagen privada y la identidad administrada asignada por el sistema.

  1. Seleccione Administración de revisiones en el menú izquierdo.

  2. Seleccione Crear nueva revisión.

  3. Seleccione la imagen contenedora en la tabla Imagen de contenedor.

  4. Escriba la información en el cuadro de diálogo Editar un contenedor.

    Campo Action
    Nombre Escriba un nombre para el contenedor.
    Fuente de la imagen Seleccione Azure Container Registry.
    Autenticación Seleccione Identidad administrada.
    Identidad Seleccione la identidad que creó en el menú desplegable.
    Registro Seleccione el registro que desea usar en el menú desplegable.
    Imagen Escriba el nombre de la imagen que desea usar.
    Etiqueta de imagen Escriba el nombre y la etiqueta de la imagen que desea extraer.

    Screen shot of the Edit a container dialog entering user assigned managed identity.

    Nota:

    Si las credenciales administrativas no están habilitadas en el registro de Azure Container Registry, aparecerá un mensaje de advertencia y tendrá que escribir manualmente el nombre de la imagen y la información de etiquetas.

  5. Seleccione Guardar.

  6. Seleccione Crear en la página Crear e implementar nueva revisión.

Se creará e implementará una nueva revisión. El portal intentará agregar automáticamente el rol acrpull a la identidad administrada asignada por el usuario. Si el rol no se agrega, puede agregarlo manualmente.

Para confirmar que el rol se agregó, compruebe la identidad en el panel Identidad de la página de la aplicación contenedora.

  1. Seleccione Identidad en el menú izquierdo.
  2. Seleccione la pestaña Usuario asignado.
  3. Seleccione la identidad administrada asignada por el usuario.
  4. Seleccione Asignaciones de roles de Azure en el menú de la página de recursos de identidad administrada.
  5. Compruebe que el rol acrpull está asignado a la identidad administrada asignada por el usuario.

Creación de una aplicación de contenedor con una imagen privada

Si no quiere empezar creando una aplicación de contenedor con una imagen pública, también puede hacer lo siguiente.

  1. Cree una identidad administrada asignada por el usuario.
  2. Agregue el rol acrpull a la identidad administrada asignada por el usuario.
  3. Cree una aplicación de contenedor con una imagen privada y la identidad administrada asignada por el usuario.

Este método es típico en escenarios de infraestructura como código (IaC).

Limpieza de recursos

Si no va a seguir usando esta aplicación, puede eliminar la instancia de Azure Container Apps y todos los servicios asociados quitando el grupo de recursos.

Advertencia

Al eliminar el grupo de recursos, se eliminarán todos los recursos del grupo. Si tiene otros recursos en el grupo, también se eliminarán. Si desea mantener los recursos, puede eliminar la instancia y el entorno de la aplicación contenedora.

  1. Seleccione el grupo de recursos en la sección Información general.
  2. Seleccione el botón Eliminar grupo de recursos en la parte superior de la página del grupo de recursos Información general.
  3. Escriba el nombre del grupo de recursos en el cuadro de diálogo de confirmación.
  4. Seleccione Eliminar.
    El proceso para eliminar el grupo de recursos puede tardar unos minutos en completarse.

Identidad administrada asignada por el sistema

El método para configurar una identidad administrada asignada por el sistema en Azure Portal es el mismo que el de la configuración de una identidad administrada asignada por el usuario. La única diferencia es que no es necesario crear una identidad administrada asignada por el usuario. En su lugar, la identidad administrada asignada por el sistema se crea al crear la aplicación contenedora.

El método para configurar una identidad administrada asignada por el sistema en Azure Portal es:

  1. Cree una aplicación contenedora con una imagen pública.
  2. Cree una revisión de la aplicación contenedora con una imagen privada y la identidad administrada asignada por el sistema.

Requisitos previos

Crear una aplicación de contenedor

Siga estos pasos para crear una aplicación contenedora con la imagen de inicio rápido predeterminada.

  1. Vaya a la página Principal del portal.

  2. Busque Aplicaciones de contenedor en la barra de búsqueda superior.

  3. Busque Aplicaciones de contenedor en los resultados de la búsqueda.

  4. Seleccione el botón Crear.

  5. En la pestaña Aspectos básicos, realice las acciones siguientes.

    Configuración Acción
    Suscripción Seleccione su suscripción a Azure.
    Grupo de recursos Seleccione un grupo de recursos existente o cree uno nuevo.
    Nombre de la aplicación de contenedor Escriba un nombre para la aplicación contenedora.
    Ubicación Seleccione una ubicación.
    Creación del entorno de la aplicación contenedora Cree un nuevo entorno o seleccione uno existente.
  6. Seleccione el botón Revisar y crear en la parte inferior de la página Crear entorno de aplicación de contenedor.

  7. Seleccione el botón Crear en la parte inferior de la página Crear entorno de aplicación de contenedor.

Deje que transcurran unos minutos para que la implementación finalice. Una vez finalizada la implementación, seleccione Ir al recurso.

Edición e implementación de una revisión

Edite el contenedor para usar la imagen de la instancia privada de Azure Container Registry y configure la autenticación para usar la identidad asignada por el sistema.

  1. Seleccione Contenedores en el menú lateral de la izquierda.

  2. Seleccione Editar e implementar.

  3. Seleccione el contenedor simple-hello-world-container en la lista.

    Configuración Acción
    Nombre Escriba el nombre de la aplicación contenedora.
    Fuente de la imagen Seleccione Azure Container Registry.
    Autenticación Seleccione Identidad administrada.
    Identidad Seleccione Asignado por el sistema.
    Registro Escriba el nombre del registro.
    Imagen Escriba el nombre de la imagen.
    Etiqueta de imagen Escriba la etiqueta.

    Screen shot Edit a container with system-assigned managed identity.

    Nota:

    Si las credenciales administrativas no están habilitadas en el registro de Azure Container Registry, aparecerá un mensaje de advertencia y tendrá que escribir manualmente el nombre de la imagen y la información de etiquetas.

  4. Seleccione Guardar en la parte inferior de la página.

  5. Seleccione Crear en la parte inferior de la página Crear e implementar una nueva revisión.

  6. Después de unos minutos, seleccione Actualizar en la página Administración de revisiones para ver la nueva revisión.

Se creará e implementará una nueva revisión. El portal intentará agregar automáticamente el rol acrpull a la identidad administrada asignada por el sistema. Si el rol no se agrega, puede agregarlo manualmente.

Para confirmar que el rol se agregó, compruebe la identidad en el panel Identidad de la página de la aplicación contenedora.

  1. Seleccione Identidad en el menú izquierdo.
  2. Vaya a la pestaña Asignado por el sistema.
  3. Seleccione Asignaciones de roles de Azure.
  4. Compruebe que el rol acrpull está asignado a la identidad administrada asignada por el sistema.

Limpieza de recursos

Si no va a seguir usando esta aplicación, puede eliminar la instancia de Azure Container Apps y todos los servicios asociados quitando el grupo de recursos.

Advertencia

Al eliminar el grupo de recursos, se eliminarán todos los recursos del grupo. Si tiene otros recursos en el grupo, también se eliminarán. Si desea mantener los recursos, puede eliminar la instancia y el entorno de la aplicación contenedora.

  1. Seleccione el grupo de recursos en la sección Información general.
  2. Seleccione el botón Eliminar grupo de recursos en la parte superior de la página del grupo de recursos Información general.
  3. Escriba el nombre del grupo de recursos en el cuadro de diálogo de confirmación.
  4. Seleccione Eliminar.
    El proceso para eliminar el grupo de recursos puede tardar unos minutos en completarse.

En este artículo se describe cómo configurar la aplicación contenedora para usar identidades administradas para extraer imágenes de un repositorio de Azure Container Registry privado mediante la CLI de Azure y Azure PowerShell.

Requisitos previos

Requisito previo Descripción
Cuenta de Azure Una cuenta de Azure con una suscripción activa. Si no tiene ninguna, puede crear una gratis.
CLI de Azure Si usa la CLI de Azure, instale la CLI de Azure en la máquina local.
Azure PowerShell Si usa PowerShell, instale Azure PowerShell en la máquina local. Asegúrese de que la versión más reciente del módulo Az.App esté instalada; para ello, ejecute el comando Install-Module -Name Az.App.
Azure Container Registry Una instancia privada de Azure Container Registry que contiene una imagen que desea extraer. Inicio rápido: Creación de un registro de contenedor privado mediante la CLI de Azure o Inicio rápido: Creación de un registro de contenedor privado mediante Azure PowerShell

Configuración

Primero, inicie sesión en Azure desde la CLI o PowerShell. Ejecute el siguiente comando y siga las indicaciones para completar el proceso de autenticación.

az login

Instale la extensión Azure Container Apps para la CLI.

az extension add --name containerapp --upgrade

Ahora que está instalada la extensión o el módulo actual, registre el espacio de nombres Microsoft.App y el proveedor Microsoft.OperationalInsights si no los ha registrado antes.

az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights

A continuación, establezca las siguientes variables de entorno. Reemplace los <MARCADORES DE POSICIÓN> por sus propios valores.

RESOURCE_GROUP="<YOUR_RESOURCE_GROUP_NAME>"
LOCATION="<YOUR_LOCATION>"
CONTAINERAPPS_ENVIRONMENT="<YOUR_ENVIRONMENT_NAME>"
REGISTRY_NAME="<YOUR_REGISTRY_NAME>"
CONTAINERAPP_NAME="<YOUR_CONTAINERAPP_NAME>"
IMAGE_NAME="<YOUR_IMAGE_NAME>"

Si ya tiene un grupo de recursos, omita este paso. De lo contrario, cree un grupo de recursos.

az group create \
  --name $RESOURCE_GROUP \
  --location $LOCATION

Crear un entorno de aplicación contenedora

Si el entorno no existe, ejecute el comando siguiente:

Para crear el entorno, ejecute el comando siguiente:

az containerapp env create \
  --name $CONTAINERAPPS_ENVIRONMENT \
  --resource-group $RESOURCE_GROUP \
  --location $LOCATION

Continúe con la sección siguiente para configurar la identidad administrada asignada por el usuario o vaya a la sección Identidad administrada asignada por el sistema.

Identidad administrada asignada por el usuario

Siga este procedimiento para configurar la identidad administrada asignada por el usuario:

  1. Cree una identidad administrada asignada por el usuario.
  2. Si usa PowerShell, asigne un rol acrpull para el registro a la identidad administrada. La CLI de Azure realiza automáticamente esta asignación.
  3. Cree una aplicación contenedora con la imagen del registro privado que se autentique con la identidad administrada asignada por el usuario.

Crear una identidad administrada asignada por el usuario

Cree una identidad administrada asignada por el usuario. Reemplace los <MARCADORES DE POSICIÓN> por el nombre de la identidad administrada.

IDENTITY="<YOUR_IDENTITY_NAME>"
az identity create \
  --name $IDENTITY \
  --resource-group $RESOURCE_GROUP

Obtenga el identificador de recurso de la identidad.

IDENTITY_ID=`az identity show \
  --name $IDENTITY \
  --resource-group $RESOURCE_GROUP \
  --query id`

Crear una aplicación de contenedor

Cree la aplicación contenedora con la imagen del registro privado autenticado con la identidad.

Copie el id. de recurso de la identidad para pegarlo en los marcadores de posición <IDENTITY_ID> en el comando siguiente. Si la etiqueta de imagen no es latest, reemplace "latest" por la etiqueta.

echo $IDENTITY_ID
az containerapp create \
  --name $CONTAINERAPP_NAME \
  --resource-group $RESOURCE_GROUP \
  --environment $CONTAINERAPPS_ENVIRONMENT \
  --user-assigned <IDENTITY_ID> \
  --registry-identity <IDENTITY_ID> \
  --registry-server "$REGISTRY_NAME.azurecr.io" \
  --image "$REGISTRY_NAME.azurecr.io/$IMAGE_NAME:latest"

Limpiar

Precaución

El comando siguiente elimina el grupo de recursos especificado y todos los recursos que contiene. Si los recursos que están fuera del ámbito de este inicio rápido existen en el grupo de recursos especificado, también se eliminarán.

az group delete --name $RESOURCE_GROUP

Identidad administrada asignada por el sistema

Para configurar una identidad asignada por el sistema, deberá:

  1. Cree una aplicación contenedora con una imagen pública.
  2. Asignar una identidad administrada asignada por el sistema a la aplicación contenedora.
  3. Actualizar la aplicación contenedora con la imagen privada.

Crear una aplicación de contenedor

Cree un contenedor con una imagen pública.

az containerapp create \
  --name $CONTAINERAPP_NAME \
  --resource-group $RESOURCE_GROUP \
  --environment $CONTAINERAPPS_ENVIRONMENT \
  --image mcr.microsoft.com/k8se/quickstart:latest \
  --target-port 80 \
  --ingress external

Actualización de la aplicación contenedora

Actualice la aplicación contenedora con la imagen del registro de contenedor privado y agregue una identidad asignada por el sistema para autenticar la extracción de Azure Container Registry. También puede incluir otras opciones de configuración necesarias para la aplicación contenedora, como la entrada, la escala y la configuración de Dapr.

Establezca el servidor del registro y active la identidad administrada asignada por el sistema en la aplicación contenedora.

az containerapp registry set \
  --name $CONTAINERAPP_NAME \
  --resource-group $RESOURCE_GROUP \
  --identity system \
  --server "$REGISTRY_NAME.azurecr.io"
az containerapp update \
  --name $CONTAINERAPP_NAME \
  --resource-group $RESOURCE_GROUP \
  --image "$REGISTRY_NAME.azurecr.io/$IMAGE_NAME:latest"

Limpiar

Precaución

El comando siguiente elimina el grupo de recursos especificado y todos los recursos que contiene. Si los recursos que están fuera del ámbito de este inicio rápido existen en el grupo de recursos especificado, también se eliminarán.

az group delete --name $RESOURCE_GROUP

Pasos siguientes