Compartir por


Reubicación de una instancia de Azure Container Registry en otra región

En este artículo se muestra cómo reubicar los recursos de Azure Container Registry en otra región de la misma suscripción del inquilino de Active Directory.

Nota:

Si tiene que distribuir imágenes de contenedor idénticas en varias regiones de Azure, Azure Container Registry también admite la replicación geográfica. Mediante la replicación geográfica de un registro (es necesario el nivel de servicio Premium), puede atender varias regiones con nombres idénticos de imagen y etiqueta desde un único registro.

Requisitos previos

Consideraciones sobre los puntos de conexión de servicio

Los puntos de conexión de servicio de red virtual para Azure Container Registry restringen el acceso a una red virtual especificada. También permiten restringir el acceso a una lista de intervalos de direcciones IPv4 (protocolo de Internet, versión 4). Se deniega el acceso a cualquier usuario que se conecte al registro desde fuera de esos orígenes. Si los puntos de conexión de servicio se han configurado en la región de origen del recurso de registro, tendría que hacerse lo mismo en el destino. Los pasos de este escenario se mencionan a continuación:

  • Para una recreación correcta del registro en la región de destino, la red virtual y la subred se deben crear con antelación. Si el traslado de estos dos recursos se realiza con la herramienta Azure Resource Mover, los puntos de conexión de servicio no se configurarán automáticamente y tendrá que proporciona configuración manual.

  • En segundo lugar, es necesario realizar cambios en IaC de Azure Container Registry. En la sección networkAcl, en virtualNetworkRules, agregue la regla para la subred de destino. Asegúrese de que la marca ignoreMissingVnetServiceEndpoint está establecida en False, de modo que IaC no pueda implementar la instancia de Azure Container Registry en caso de que el punto de conexión de servicio no esté configurado en la región de destino. Esto garantizará que se cumplan los requisitos previos de la región de destino

Consideración para el punto de conexión privado

Azure Private Link proporciona conectividad privada desde una red virtual a una plataforma como servicio (PaaS) de Azure, servicios de asociados de Microsoft o propiedad del cliente. Private Link simplifica la arquitectura de red y protege la conexión entre los puntos de conexión de Azure mediante la eliminación de la exposición de los datos a la red pública de Internet.

Para una recreación correcta del recurso en la región de destino, la red virtual y la subred se deben crear antes de que se produzca la recreación real.

Consideración para la integración de DNS de punto de conexión privado de Azure

Es importante definir correctamente la configuración de DNS para resolver la dirección IP del punto de conexión privado en el nombre de dominio completo (FQDN) de la cadena de conexión.

Es posible que los servicios de Microsoft Azure existentes ya tengan una configuración de DNS para un punto de conexión público. Esta configuración se debe invalidar para realizar la conexión mediante el punto de conexión privado.

La interfaz de red asociada al punto de conexión privado contiene la información para configurar DNS. La información de la interfaz de red incluye FQDN y direcciones IP privadas del recurso de vínculo privado.

Puede usar las siguientes opciones para establecer la configuración de DNS para los puntos de conexión privados:

  • Use el archivo de host (solo se recomienda con fines de pruebas). Puede usar el archivo de host en una máquina virtual para invalidar el DNS.
  • Use una zona DNS privada. Puede usar zonas DNS privadas para invalidar la resolución DNS de un punto de conexión privado. Una zona DNS privada se puede vincular a la red virtual para resolver dominios específicos.
  • Use el reenviador DNS (opcional). Puede usar el reenviador DNS para invalidar la resolución DNS de un recurso de vínculo privado. Cree una regla de reenvío de DNS para usar una zona DNS privada en el servidor DNS hospedado en una red virtual.
  • Azure Container Registry se debe configurar en la región de destino con el nivel Premium.

  • Cuando se deshabilita el acceso de red público a un registro, para el acceso al registro por parte de determinados servicios de confianza, incluido Azure Security Center, es necesario habilitar un valor de red para omitir las reglas de red.

  • Si el registro tiene un punto de conexión privado aprobado y el acceso de la red pública está deshabilitado, los repositorios y las etiquetas no se pueden enumerar fuera de la red virtual mediante Azure Portal, la CLI de Azure u otras herramientas.

  • En caso de que se trate de una nueva réplica, es fundamental agregar manualmente un nuevo registro DNS para el punto de conexión de datos en la región de destino.

Tiempo de inactividad

Para comprender los posibles tiempos de inactividad que podrían producirse, consulte Cloud Adoption Framework para Azure: Seleccionar un método de reubicación.

Preparación

Nota:

Si solo quiere reubicar una instancia de Container Registry que no contenga datos específicos del cliente y que sea la única que se va a trasladar, puede volver a implementar el registro mediante Bicep o JSON.

Para ver otras plantillas de configuración de disponibilidad, vaya a Definición de recursos con Bicep, plantillas de ARM y el proveedor AzAPI de Terraform

Para prepararse para la reubicación con la migración de datos:

  1. Cree un mapa de dependencias con todos los servicios de Azure usados por el registro. Para los servicios que están en el ámbito de la reubicación, debe elegir la estrategia de reubicación adecuada.

  2. Identifique el diseño de red de origen para Azure Container Registry (ACR), como el firewall y el aislamiento de red.

  3. Recupere las imágenes necesarias del registro de origen para la importación en el registro de destino. Para recuperar las imágenes, ejecute el comando siguiente:

    
    Get-AzContainerRegistryRepository -RegistryName registry
    
    
  4. Use ACR Tasks para recuperar las configuraciones de automatización del registro de origen para la importación en el registro de destino.

Exportación de la plantilla

Para empezar, exporte una plantilla de Resource Manager. Esta plantilla contiene la configuración que describe la instancia de Container Registry. Para más información sobre cómo usar plantillas exportadas, consulte Uso de plantillas exportadas desde Azure Portal y la referencia de plantilla.

  1. En Azure Portal, vaya al registro de origen.

  2. En el menú, en Automatización, seleccione Exportar plantilla>Descargar.

    Recorte de pantalla de la plantilla de exportación para la instancia de Container Registry.

  3. Busque el archivo ZIP que descargó desde el portal y descomprímalo en la carpeta que prefiera.

    Este archivo ZIP contiene los archivos .json que incluyen la plantilla y los scripts para implementar la plantilla.

Modificación de una plantilla

Inspeccione las propiedades del registro en el archivo JSON de la plantilla que ha descargado y realice los cambios necesarios. Como mínimo:

  • Cambie el defaultValue del nombre del registro por el nombre deseado del registro de destino.
  • Actualice la location a la región de Azure deseada para el registro de destino.
{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "registries_myregistry_name": {
            "defaultValue": "myregistry",
            "type": "String"
        }
    },
    "variables": {},
    "resources": [
        {
            "type": "Microsoft.ContainerRegistry/registries",
            "apiVersion": "2020-11-01-preview",
            "name": "[parameters('myregistry_name')]",
            "location": "centralus",
        ...
        }
    ]
}
  • Valide todos los detalles de los recursos asociados en la plantilla descargada, como scopeMaps del registro, configuración de replicaciones, configuración de diagnóstico como Log Analytics.

  • Si el registro de origen está cifrado, cifre el registro de destino mediante una clave administrada por el cliente y actualice la plantilla con la configuración de la identidad administrada, el almacén de claves y la clave necesarios. Solo puede habilitar la clave administrada por el cliente al implementar el registro.

Creación de un grupo de recursos

Cree un grupo de recursos para el registro de destino con el comando az group create. En el ejemplo siguiente, se crea un grupo de recursos denominado myResourceGroup en la ubicación eastus.

az group create --name myResourceGroup --location eastus

Volver a implementar

Use el comando az deployment group create para implementar el registro de destino mediante la plantilla:

az deployment group create --resource-group myResourceGroup \
   --template-file template.json --name mydeployment

Nota

Si ve errores durante la implementación, es posible que tenga que actualizar ciertas configuraciones en el archivo de plantilla y volver a intentar el comando.

Importación del contenido del registro en el registro de destino

Después de crear el registro en la región de destino:

  1. Use el comando az acr import o el comando Import-AzContainerImage de PowerShell equivalente para importar imágenes y otros artefactos que quiera conservar del registro de origen al registro de destino. Para ver ejemplos de comando, consulte Importación de imágenes de contenedor en un registro de contenedor.

  2. Use los comandos de la CLI de Azure az acr repository list y az acr repository show-tags, o equivalentes de Azure PowerShell, para ayudar a enumerar el contenido del registro de origen.

  3. Ejecute el comando de importación para artefactos individuales o cree un script para ejecutarlo en una lista de artefactos.

En el ejemplo siguiente, el script de la CLI de Azure de ejemplo enumera los repositorios y etiquetas de origen y, a continuación, importa los artefactos a un registro de destino de la misma suscripción a Azure. Modifique según sea necesario para importar etiquetas o repositorios específicos. Para importar desde un registro de otra suscripción o inquilino, consulte los ejemplos de Importación de imágenes de contenedor a un registro de contenedor.

#!/bin/bash
# Modify registry names for your environment
SOURCE_REG=myregistry
TARGET_REG=targetregistry

# Get list of source repositories
REPO_LIST=$(az acr repository list \
    --name $SOURCE_REG --output tsv)

# Enumerate tags and import to target registry
for repo in $REPO_LIST; do
    TAGS_LIST=$(az acr repository show-tags --name $SOURCE_REG --repository $repo --output tsv);
    for tag in $TAGS_LIST; do
        echo "Importing $repo:$tag";
        az acr import --name $TARGET_REG --source $SOURCE_REG.azurecr.io/$repo":"$tag;
    done
done
  1. Asocie los recursos dependientes a la instancia de Azure Container Registry de destino, como el área de trabajo de Log Analytics, en la configuración de diagnóstico.

  2. Configure la integración de Azure Container Registry con ambos tipos de clústeres de AKS, aprovisionados o sin aprovisionar, mediante la ejecución del comando siguiente:


Set-AzAksCluster -Name myAKSCluster -ResourceGroupName myResourceGroup -AcrNameToAttach <acr-name>

  1. Realice los cambios necesarios en el archivo de manifiesto de Kubernetes para la integración con la instancia de Azure Container Registry (ACR) reubicada.

  2. Actualice los sistemas de desarrollo e implementación para usar el registro de destino en lugar del registro de origen.

  3. Actualice las reglas de firewall de cliente para permitir el acceso al registro de destino.

Comprobar

Confirme la siguiente información en el registro de destino:

  • Configuración del registro, como el nombre del registro, el nivel de servicio, el acceso público y las replicaciones
  • Repositorios y etiquetas para el contenido que desea conservar

Eliminación del registro original

Después de implementar correctamente el registro de destino, el contenido migrado y la configuración del registro comprobado, puede eliminar el registro de origen.