수동으로 컨테이너 레지스트리를 다른 지역으로 이동

한 Azure 지역에서 다른 Azure 지역으로 Azure Container Registry를 이동해야 할 수도 있습니다. 예를 들어 개발 파이프라인을 실행하거나 다른 지역에서 새 배포 대상을 호스팅하고 가까운 레지스트리를 제공하려고 할 수 있습니다.

Azure Resource Mover는 현재 Azure Container Registry 이동을 자동화할 수 없지만 Container Registry를 다른 지역으로 수동으로 이동할 수 있습니다.

  • Resource Manager 템플릿으로 레지스트리 설정 내보내기
  • 템플릿을 사용하여 다른 Azure 지역에 레지스트리 배포
  • 원본 레지스트리에서 대상 레지스트리로 레지스트리 콘텐츠 가져오기

참고 항목

여러 Azure 지역에 동일한 컨테이너 이미지를 분산해야 하는 경우 Azure Container Registry에서 지역 복제도 지원합니다. 레지스트리를 지역 복제하면(프리미엄 서비스 계층 필요), 단일 레지스트리의 동일한 이미지와 태그 이름으로 여러 지역에 서비스를 제공할 수 있습니다.

필수 조건

Azure CLI

고려 사항

  • 이 문서의 단계를 사용하여 동일한 구독의 다른 지역으로 레지스트리를 이동합니다. 레지스트리를 동일한 Active Directory 테넌트의 다른 Azure 구독으로 이동하려면 추가 구성이 필요할 수 있습니다.
  • Resource Manager 템플릿을 내보내고 사용하면 많은 레지스트리 설정을 다시 만드는 데 도움이 될 수 있습니다. 템플릿을 편집하여 더 많은 설정을 구성하거나 만든 후 대상 레지스트리를 업데이트할 수 있습니다.
  • 현재 Azure Container Registry는 다른 Active Directory 테넌트로 레지스트리 이동을 지원하지 않습니다. 이 제한 사항은 고객 관리형 키로 암호화된 레지스트리와 암호화되지 않은 레지스트리 모두에 적용됩니다.
  • 이 문서에 설명된 이유로 레지스트리를 이동할 수 없는 경우 새 레지스트리를 만들고, 수동으로 설정을 다시 만들고, 대상 레지스트리에서 레지스트리 콘텐츠를 가져옵니다.
  • 레지스트리의 리소스를 동일한 구독의 새 리소스 그룹으로 이동하거나 리소스를 새 구독으로 이동하는 단계를 찾을 수 있습니다.

원본 레지스트리에서 템플릿 내보내기

Azure Portal, Azure CLI, Azure PowerShell 또는 기타 Azure 도구를 사용하여 Resource Manager 템플릿을 내보냅니다. Azure 포털을 사용하려면

  1. Azure Portal에서 원본 레지스트리로 이동합니다.

  2. 메뉴의 자동화에서 템플릿 내보내기>다운로드를 선택합니다.

    Export template for container registry

새 지역에 대상 레지스트리 재배포

템플릿 수정

다운로드한 템플릿 JSON 파일에서 레지스트리 속성을 검사하고 필요에 따라 변경합니다. 최소:

  • 레지스트리 이름의 defaultValue을 대상 레지스트리의 원하는 이름으로 변경합니다.
  • 대상 레지스트리에 대해 원하는 Azure 지역으로 location 업데이트
{
    "$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",
        ...
        }
    ]
}

자세한 내용은 Azure Portal에서 내보낸 템플릿 사용템플릿 참조를 참조하세요.

Important

고객 관리형 키를 사용하여 대상 레지스트리를 암호화하려면 필수 관리 ID, 키 자격 증명 모음 및 키에 대한 설정으로 템플릿을 업데이트해야 합니다. 레지스트리를 배포할 때만 고객 관리형 키를 사용하도록 설정할 수 있습니다.

자세한 내용은 고객 관리형 키를 사용하여 레지스트리 암호화를 참조하세요.

리소스 그룹 만들기

az group create를 사용하여 대상 레지스트리에 대한 리소스 그룹을 만듭니다. 다음 예제에서는 eastus 위치에 myResourceGroup이라는 리소스 그룹을 만듭니다.

az group create --name myResourceGroup --location eastus

새 지역에 대상 레지스트리 배포

az deployment group create 명령을 사용하여 템플릿을 사용하여 대상 레지스트리를 배포합니다.

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

참고 항목

배포 중에 오류가 표시되면 템플릿 파일의 특정 구성을 업데이트하고 명령을 다시 시도해야 할 수 있습니다.

대상 레지스트리에서 레지스트리 콘텐츠 가져오기

대상 지역에서 레지스트리를 만든 후 az acr import 명령 또는 이에 상응하는 PowerShell 명령 Import-AzContainerImage를 사용하여 원본 레지스트리에서 대상 레지스트리로 보존하려는 이미지 및 기타 아티팩트를 가져옵니다. 명령 예는 컨테이너 레지스트리로 컨테이너 이미지 가져오기를 참조하세요.

  • Azure CLI 명령 az acr repository listaz acr repository show-tags 또는 이에 상응하는 Azure PowerShell을 사용하여 원본 레지스트리의 콘텐츠를 열거할 수 있습니다.
  • 개별 아티팩트에 대해 가져오기 명령을 실행하거나 아티팩트 목록에 대해 실행하도록 스크립트를 작성합니다.

다음 샘플 Azure CLI 스크립트는 원본 리포지토리 및 태그를 열거한 다음 동일한 Azure 구독의 대상 레지스트리로 아티팩트를 가져옵니다. 특정 리포지토리 또는 태그를 가져오려면 필요에 따라 수정합니다. 다른 구독 또는 테넌트에서 레지스트리에서 가져오려면 컨테이너 이미지를 컨테이너 레지스트리로 가져오기의 예제를 참조하세요.

#!/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

대상 레지스트리 확인

대상 레지스트리에서 다음 정보를 확인합니다.

  • 레지스트리 이름, 서비스 계층, 공용 액세스 및 복제와 같은 레지스트리 설정
  • 보존하려는 콘텐츠의 리포지토리 및 태그.

추가 구성

  • 필요한 경우 프라이빗 엔드포인트, IP 액세스 규칙 및 관리 ID와 같은 대상 레지스트리의 설정을 수동으로 구성합니다.

  • 원본 레지스트리 대신 대상 레지스트리를 사용하도록 개발 및 배포 시스템을 업데이트합니다.

  • 대상 레지스트리에 대한 액세스를 허용하도록 클라이언트 방화벽 규칙을 업데이트합니다.

원본 레지스트리 삭제

대상 레지스트리를 성공적으로 배포하고, 콘텐츠를 마이그레이션하고, 레지스트리 설정을 확인한 후 원본 레지스트리를 삭제할 수 있습니다.

다음 단계