Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Azure Container Registry es un servicio de registro de contenedores administrado basado en Azure que se usa para almacenar imágenes de contenedor de Docker privadas. En este artículo se describe cómo extraer imágenes de contenedor almacenadas en una instancia de Azure Container Registry al implementarlas en Azure Container Instances. Una forma de configurar el acceso al registro es crear una entidad de servicio de Microsoft Entra y una contraseña, y almacenar las credenciales de acceso en Azure Key Vault.
Requisitos previos
Azure Container Registry: se necesita una instancia de Azure Container Registry, y al menos una imagen de contenedor en el registro, para completar los pasos descritos en este artículo. Si necesita un registro, consulte Creación de un registro de contenedor con la CLI de Azure.
CLI de Azure: los ejemplos de línea de comandos de este artículo usan la CLI de Azure y tienen un formato adecuado para el shell de Bash. Puede instalar la CLI de Azure localmente o usar Azure Cloud Shell.
Limitaciones
- Azure Container Instances no admite la extracción de imágenes desde ACR autenticada mediante una identidad administrada asignada por el sistema. Debe usar una identidad administrada asignada por el usuario para autenticar la extracción de imágenes desde ACR, independientemente del sistema operativo del grupo de contenedores.
Importante
No puede usar la autenticación de entidad de servicio para extraer imágenes de un Azure Container Registry que tenga habilitado un punto de conexión privado. Si tu registro está configurado con un punto de conexión privado, debes usar una identidad administrada para autenticar la extracción de imágenes. Para obtener instrucciones, consulte Implementación en Azure Container Instances desde Azure Container Registry mediante una identidad administrada.
Configurar la autenticación del registro
En un escenario de producción en el que proporciona acceso a servicios y aplicaciones "sin interfaz", le recomendamos que configure el acceso al registro mediante una entidad de servicio. Una entidad de servicio le permite conceder control de acceso basado en roles de Azure (Azure RBAC) a sus imágenes de contenedor. Por ejemplo, puede configurar una entidad de servicio con acceso solo de extracción a un registro.
Azure Container Registry proporciona más opciones de autenticación.
En la siguiente sección, cree un almacén de claves de Azure y una entidad de servicio, y almacene las credenciales de la entidad de servicio en el almacén.
Crear almacén de claves
Si todavía no tienes un almacén en Azure Key Vault, crea uno con la CLI de Azure mediante los siguientes comandos.
Actualice la variable RES_GROUP con el nombre de un grupo de recursos existente en el que crear el almacén de claves, y la variable ACR_NAME con el nombre de su registro de contenedor. Para abreviar, los comandos de este artículo suponen que el registro, el almacén de claves y las instancias de contenedor se han creado en el mismo grupo de recursos.
Especifique un nombre para su nuevo almacén de claves en AKV_NAME. El nombre del almacén debe ser único dentro de Azure y debe tener entre 3 y 24 caracteres alfanuméricos, comenzar con una letra, terminar con una letra o un dígito y no puede contener guiones consecutivos.
RES_GROUP=myresourcegroup # Resource Group name
ACR_NAME=myregistry # Azure Container Registry registry name
AKV_NAME=mykeyvault # Azure Key Vault vault name
az keyvault create -g $RES_GROUP -n $AKV_NAME
Crear la entidad de servicio y almacenar las credenciales
Ahora cree una entidad de servicio y almacene sus credenciales en el almacén de claves.
Los siguientes comandos usan az ad sp create-for-rbac para crear la entidad de servicio y az keyvault secret set para almacenar la contraseña de la entidad de servicio en el almacén. Asegúrese de anotar el appId de la entidad de servicio al crearla.
# Create service principal
az ad sp create-for-rbac \
--name http://$ACR_NAME-pull \
--scopes $(az acr show --name $ACR_NAME --query id --output tsv) \
--role acrpull
SP_ID=xxxx # Replace with your service principal's appId
# Store the registry *password* in the vault
az keyvault secret set \
--vault-name $AKV_NAME \
--name $ACR_NAME-pull-pwd \
--value $(az ad sp show --id $SP_ID --query password --output tsv)
El argumento --role en el comando anterior configura la entidad de servicio con el rol acrpull, que le concede de solo extracción acceso al registro. Para conceder acceso tanto de inserción como de extracción, cambie el argumento --role a acrpush.
A continuación, almacene el appId de la entidad de servicio en el almacén, que es el nombre de usuario que pasa a Azure Container Registry para la autenticación.
# Store service principal ID in vault (the registry *username*)
az keyvault secret set \
--vault-name $AKV_NAME \
--name $ACR_NAME-pull-usr \
--value $(az ad sp show --id $SP_ID --query appId --output tsv)
Ha creado un almacén de claves de Azure y ha almacenado dos secretos en él:
-
$ACR_NAME-pull-usr: El identificador de la entidad de servicio, para usarlo como nombre de usuario del registro de contenedores. -
$ACR_NAME-pull-pwd: La contraseña de la entidad de servicio, para usarla como contraseña del registro de contenedores.
Ahora puede hacer referencia a estos secretos por nombre cuando usted o sus aplicaciones y servicios extraigan imágenes del registro.
Implementación de un contenedor con la CLI de Azure
Ahora que las credenciales de la entidad de servicio están almacenadas como secretos en Azure Key Vault, sus aplicaciones y servicios pueden utilizarlas para acceder a su registro privado.
Obtenga primero el nombre del servidor de inicio de sesión del Registro con el comando az acr show. El nombre del servidor de inicio de sesión se escribe todo en minúsculas y es similar a myregistry.azurecr.io.
ACR_LOGIN_SERVER=$(az acr show --name $ACR_NAME --resource-group $RES_GROUP --query "loginServer" --output tsv)
Ejecute el comando az container create siguiente para implementar una instancia de contenedor. El comando usa las credenciales de la entidad de servicio almacenadas en Azure Key Vault para autenticarse en el registro de contenedor y supone que ha insertado previamente la imagen aci-helloworld en el registro. Actualice el valor --image si desea usar otra imagen del registro.
az container create \
--name aci-demo \
--resource-group $RES_GROUP \
--image $ACR_LOGIN_SERVER/aci-helloworld:v1 \
--registry-login-server $ACR_LOGIN_SERVER \
--registry-username $(az keyvault secret show --vault-name $AKV_NAME -n $ACR_NAME-pull-usr --query value -o tsv) \
--registry-password $(az keyvault secret show --vault-name $AKV_NAME -n $ACR_NAME-pull-pwd --query value -o tsv) \
--dns-name-label aci-demo-$RANDOM \
--query ipAddress.fqdn
El valor --dns-name-label debe ser único en Azure, por lo que el comando anterior anexa un número aleatorio a la etiqueta de nombre DNS del contenedor. La salida del comando muestra el nombre de dominio completo (FQDN) del contenedor, por ejemplo:
"aci-demo-25007.eastus.azurecontainer.io"
Una vez que el contenedor se inicia correctamente, puede ir a su FQDN en el explorador para comprobar que la aplicación se está ejecutando correctamente.
Implementación con plantillas de Azure Resource Manager
Puede especificar las propiedades de Azure Container Registry en una plantilla de Azure Resource Manager; para ello, debe incluir la propiedad imageRegistryCredentials en la definición del grupo de contenedores. Por ejemplo, puede especificar las credenciales del registro directamente:
[...]
"imageRegistryCredentials": [
{
"server": "imageRegistryLoginServer",
"username": "imageRegistryUsername",
"password": "imageRegistryPassword"
}
]
[...]
Para obtener la configuración de grupo de contenedores completa, consulte la referencia de plantillas de Resource Manager.
Para más información acerca de cómo hacer referencia a secretos de Azure Key Vault en una plantilla de Resource Manager, consulte Uso de Azure Key Vault para pasar el valor de parámetro seguro durante la implementación.
Implementación con Azure Portal
Si se mantienen imágenes de contenedor en un registro de contenedor de Azure, se puede crear fácilmente un contenedor en Azure Container Instances a través de Azure Portal. Al usar el portal para implementar una instancia de contenedor desde un registro de contenedor, tiene que habilitar la cuenta de administrador del registro. La cuenta de administrador está diseñada para que un solo usuario acceda al registro, principalmente con fines de prueba.
En Azure Portal, vaya al registro de contenedor.
Para confirmar que la cuenta de administrador está habilitada, seleccione Claves de accesoy en Usuario administrador seleccione Habilitar.
Seleccione Repositorios, elija el repositorio desde el que va a implementar, haga clic con el botón derecho en la etiqueta de la imagen de contenedor que desea implementar y seleccione Ejecutar instancia.
Escriba un nombre para el contenedor y un nombre para el grupo de recursos. También puede cambiar los valores predeterminados si lo desea.
Una vez completada la implementación, puede ir al grupo de contenedores desde el panel de notificaciones para buscar la dirección IP y otras propiedades.
Pasos siguientes
Para más información acerca de la autenticación de Azure Container Registry, consulte Autenticación con un registro de contenedor de Azure.