이 문서에서는 대상 지역에서 관리되는 환경 및 컨테이너 앱을 다시 만들어 Azure Container Apps 워크로드를 다른 Azure 지역으로 재배치하는 방법을 설명합니다. 이 프로세스에서는 애플리케이션 구성 내보내기, 리소스 다시 배포, 배포 유효성 검사 및 원본 지역의 리소스 정리를 다룹니다.
중요합니다
Azure Container Apps는 현재 위치 지역 마이그레이션을 지원하지 않습니다. 대상 지역에서 리소스를 다시 만듭니 다. 기존 리소스는 이동되지 않습니다. 이 문서에서는 Container Apps 구성 및 인프라 재배치에 대해 설명합니다. 애플리케이션 데이터, 데이터베이스 또는 기타 상태 저장 종속성 복제는 다루지 않습니다.
필수 조건
시작하기 전에 다음 요구 사항을 충족하는지 확인합니다.
- Azure Container Apps는 대상 지역에서 사용할 수 있습니다.
- 대상 지역은 원본 지역에서 사용하는 것과 동일한 Container Apps 기능, 워크로드 프로필 및 네트워킹 옵션을 지원합니다.
- 배포하려는 리소스에 대해 대상 지역에 충분한 할당량이 있습니다.
- 원본 구독과 대상 구독 모두에 다음 권한이 있습니다.
- 리소스 그룹의 소유자 또는 기여자입니다.
- 컨테이너 앱 기여자 (추천). 이 역할에는 컨테이너 앱 비밀 값에 대한 접근 권한을 부여하는 와일드카드 권한이 포함됩니다. 더 좁은 접근에 대해서는 비밀 관리 권한(Permissions for Management secrets)을 참조하세요.
- 컨테이너 이미지는 대상 지역(예: Azure Container Registry 또는 지원되는 외부 레지스트리)에서 액세스할 수 있는 레지스트리에 있습니다.
- Key Vault, 스토리지 계정, 데이터베이스, 가상 네트워크 및 메시징 서비스와 같은 종속 Azure 리소스는 대상 지역에서 이미 사용할 수 있거나 재배포 계획을 가지고 있습니다.
Tip
ACR(Azure Container Registry)을 사용하는 경우 레지스트리를 다시 배포하지 않고 대상 지역에서 이미지를 사용할 수 있도록 지역 복제 를 사용하도록 설정하는 것이 좋습니다.
az acr replication create --registry <REGISTRY_NAME> --location <TARGET_REGION>
가동 중지 시간 요구 사항 이해
Azure Container Apps는 라이브 지역 마이그레이션을 지원하지 않습니다. 가동 중지 시간은 주로 전환 중 DNS 전파 및 트래픽 라우팅 변경으로 인해 발생합니다. 영향을 최소화하려면 다음을 수행합니다.
- 먼저 대상 지역에서 컨테이너 앱을 배포하고 유효성을 검사합니다.
- DNS TTL 값을 미리 낮추면(예: 60초) 라우팅 변경 내용이 빠르게 전파됩니다.
- 유효성 검사가 완료된 후에만 프로덕션 트래픽을 새 엔드포인트로 리디렉션합니다.
- 대상 배포가 정상인지 확인할 때까지 원본 컨테이너 앱을 계속 실행합니다.
Prepare
재배치를 준비하려면 원본 구성을 내보내고 모든 지역별 설정을 검토합니다.
종속성 식별
다음 종속 리소스는 중단 전에 대상 지역에 있어야 합니다.
- Azure Key Vault (애저 키 볼트)
- 스토리지 계정
- 데이터베이스 및 메시징 서비스(예: Azure Service Bus, Azure Cosmos DB)
- 가상 네트워크, 서브넷 및 프라이빗 엔드포인트
- NSG(네트워크 보안 그룹) 및 UDR(사용자 정의 경로)
- 프라이빗 DNS 영역
- Log Analytics 작업 영역
- DAPR 컴포넌트(사용 시)
중요합니다
비밀, 인증서, 사용자 지정 도메인 및 보안 구성 값은 내보낸 템플릿에서 유지되지 않습니다 . 원래 원본에서 대상 지역에서 이러한 리소스를 수동으로 다시 만들어야 합니다.
관리 ID 변경 계획
관리 ID 처리는 ID 유형에 따라 달라집니다.
시스템 할당 ID: 컨테이너 앱을 다시 만들 때 Azure는 새 보안 주체 ID를 생성합니다. 모든 RBAC 역할, Key Vault 액세스 정책 및 다운스트림 서비스 권한을 새 ID에 다시 할당해야 합니다.
사용자 할당 ID: 사용자 할당 관리 ID는 지역 리소스이며 지역 간에 이동할 수 없습니다. 대상 지역에 새 사용자 할당 ID를 만들고 배포 전에 필요한 권한을 할당합니다.
원본 구성 내보내기
Azure Portal을 사용하여 Container Apps 관리 환경 및 개별 컨테이너 앱 모두에 대한 ARM 템플릿을 내보냅니다.
- Azure Portal에 로그인합니다.
- Container Apps 관리 환경 또는 컨테이너 앱 리소스로 이동합니다.
- 왼쪽 메뉴에서 Automation>내보내기 템플릿을 선택합니다.
-
다운로드를 선택하고 로컬 폴더에
.zip파일을 추출합니다.
추출된 파일은 다음과 같습니다.
| File | 설명 |
|---|---|
template.json |
리소스 구성 정의 |
| 매개 변수 파일 | 배포 매개 변수 값 |
| 배포 스크립트 | 템플릿 실행을 위한 스크립트 |
Note
내보낸 템플릿은 구성을 이해하기 위한 시작점 역할을 합니다. 제거해야 하는 읽기 전용 속성이 포함될 수 있으며 비밀 또는 인증서 값 은 포함되지 않습니다 . 다시 배포에 사용하기 전에 내보낸 출력을 신중하게 검토합니다.
관리되는 환경 템플릿 수정
관리되는 환경을 다시 배포하기 전에 내보낸 구성을 업데이트합니다.
-
위치 업데이트: 속성을 대상 Azure 지역으로 설정합니다
location. - 리소스 이름 유효성 검사: 관리되는 환경 이름이 대상 리소스 그룹 및 지역 내에서 고유한지 확인합니다.
- Log Analytics 구성 검토: 작업 영역이 지역별인 경우 Log Analytics 작업 영역 참조를 업데이트합니다. 대상 지역에 새 작업 영역을 만들어야 할 수도 있습니다.
-
읽기 전용 속성 제거: 포털에서 내보낸 경우 , ,
idtype등의 속성systemData및 배포 오류를 일으키는 기타 읽기 전용 필드를 제거합니다.
컨테이너 앱 템플릿 수정
컨테이너 앱 구성을 내보낸 후 다음을 변경합니다.
관리되는 환경 참조 업데이트: 대상 지역에서 새 관리되는 환경의 리소스 ID로 바꿉
managedEnvironmentId니다. 관리되는 환경은 지역에 바인딩되어 있으며 지역 간에 재사용할 수 없습니다.컨테이너 이미지 참조 확인: 이미지 참조가 대상 지역에서 액세스할 수 있는 컨테이너 레지스트리를 가리키는지 확인합니다. ACR 지역 복제를 사용하도록 설정한 경우 기존 참조가 변경 없이 작동할 수 있습니다.
인그레스 구성 검토: 재배포 후 애플리케이션의 FQDN(정규화된 도메인 이름)이 변경됩니다. 중단 중에 사용자 지정 DNS 레코드 및 트래픽 라우팅을 업데이트하도록 계획합니다.
비밀 및 앱 설정 다시 구성: Azure Key Vault 참조 또는 애플리케이션 구성을 사용하여 비밀을 다시 만듭니다. 중요한 설정에 대해 내보낸 값을 사용하지 마세요.
Dapr 구성 요소 업데이트: Dapr을 사용하는 경우 Dapr 구성 요소 구성이 대상 지역(예: 상태 저장소, pub/sub broker, 비밀 저장소)에서 사용할 수 있는 리소스를 참조하는지 확인합니다.
진단 및 모니터링 업데이트: Log Analytics 작업 영역 참조를 확인하고 필요에 따라 진단 설정을 다시 구성합니다.
재배포
Azure Container Apps 관리되는 환경은 지역에 바인딩됩니다. 컨테이너 앱을 다시 배포하기 전에 대상 지역에 관리되는 환경을 만듭니다.
관리되는 환경 배포
- Azure Portal에서 대상 리소스 그룹으로 이동합니다.
- 사용자 지정 템플릿 배포를 선택합니다.
- 편집기에서 사용자 고유의 템플릿 빌드를 선택하고 수정된 ARM 템플릿을 업로드합니다.
- 배포 설정을 검토한 다음 검토 + 만들기 를 선택하여 배포를 시작합니다.
컨테이너 레지스트리 액세스 유효성 검사
컨테이너 앱을 배포하기 전에 컨테이너 앱에서 사용하는 ID(시스템 할당 또는 사용자 할당 관리 ID)에 대상 Azure Container Registry에 할당된 AcrPull 역할이 있음을 확인합니다.
az role assignment create \
--assignee <IDENTITY_PRINCIPAL_ID> \
--role AcrPull \
--scope <ACR_RESOURCE_ID>
Note
컨테이너 앱이 다른 구독 또는 지역의 ACR을 참조하는 경우 배포 중에 이미지 끌어오기 오류를 방지하기 위해 필요한 권한이 미리 구성되어 있는지 확인합니다.
컨테이너 앱 배포
- Azure Portal에서 대상 리소스 그룹으로 이동합니다.
- 사용자 지정 템플릿 배포를 선택합니다.
- 컨테이너 앱에 대해 수정된 ARM 템플릿을 업로드합니다.
- 설정을 검토하고 배포를 완료합니다.
네트워킹 구성
배포 후 원본 구성과 일치하도록 네트워킹을 다시 구성합니다.
수신 구성: 애플리케이션의 노출 모델에 따라 퍼블릭 또는 프라이빗 수신을 설정합니다.
VNet 통합 다시 적용: 컨테이너 앱이 프라이빗 네트워킹을 사용하는 경우 대상 지역에서 VNet, 서브넷, 프라이빗 엔드포인트 및 프라이빗 DNS 영역을 구성합니다.
NSG 및 UDR 업데이트: 필요에 따라 네트워크 보안 그룹 및 사용자 정의 경로를 다시 만듭니다.
IP 허용 목록 업데이트: 다운스트림 서비스에서 IP 기반 허용 목록을 사용하는 경우 대상 지역 환경의 새 아웃바운드 IP 주소로 업데이트합니다.
사용자 지정 도메인 및 인증서 구성: 사용자 지정 도메인 및 TLS 인증서는 재배치 중에 전송되지 않습니다. 새 컨테이너 앱에서 다시 구성하고 DNS 레코드를 업데이트합니다.
트래픽 차단
유효성 검사 후 대상 지역 배포로 트래픽을 리디렉션합니다.
이전에 DNS TTL을 낮춘 경우 새 컨테이너 앱 FQDN을 가리키도록 DNS 레코드를 업데이트합니다.
Azure Front Door 또는 Azure Traffic Manager를 사용하는 경우 대상 지역 컨테이너 앱을 포함하도록 백 엔드 풀 또는 엔드포인트를 업데이트하고 원본 지역 엔드포인트를 제거합니다.
트래픽을 모니터링하여 요청이 새 배포에 도달하고 있는지 확인합니다.
Tip
롤백 기간 동안 원본 컨테이너 앱을 계속 실행합니다. 문제가 발생하면 문제를 해결할 때까지 DNS 또는 트래픽 라우팅을 원본 엔드포인트로 되돌려 줍니다.
확인
트래픽 중단 후 다음 항목의 유효성을 검사합니다.
- 애플리케이션 가용성 및 응답 시간입니다.
- 예상 부하 및 최대 부하에서의 크기 조정 동작입니다.
- 데이터베이스, Key Vault, 스토리지 및 메시징과 같은 종속 서비스에 연결합니다.
- 다운스트림 리소스에 대한 관리 ID 액세스
- 사용 시 Dapr 컴포넌트의 기능
- Azure Monitor 및 Log Analytics로 흐르는 로그 및 메트릭입니다.
CLI를 사용하여 확인합니다.
# Confirm the container app is running
az containerapp show \
--name <APP_NAME> \
--resource-group <TARGET_RESOURCE_GROUP> \
--query "{status:properties.runningStatus, fqdn:properties.configuration.ingress.fqdn}" \
--output table
# Test the application endpoint
curl -s -o /dev/null -w "%{http_code}" https://<APP_FQDN>/health
중요합니다
유효성 검사가 완료되고 대상 배포가 정상으로 확인될 때까지 원본 컨테이너 앱을 계속 실행합니다. 원본 리소스를 정리하기 전에 24~48시간과 같은 롤백 창을 정의합니다.
원본 리소스 정리
유효성 검사 및 트래픽 중단이 성공한 후:
- 원본 컨테이너 앱을 삭제합니다.
- 더 이상 필요하지 않은 경우 원본 관리 환경을 삭제합니다.
- 불필요한 요금을 방지하려면 사용하지 않는 컨테이너 이미지, 네트워킹 리소스 및 ID 할당을 제거합니다.
- 원본 리소스를 참조하는 모니터링 대시보드 또는 경고 규칙을 업데이트합니다.
Limitations
- Azure Container Apps는 현재 위치 또는 라이브 지역 재배치를 지원하지 않습니다.
- 비밀, 인증서 및 사용자 지정 도메인을 다시 만들어야 합니다.
- 수정 기록은 대상 배포에 유지되지 않습니다.
- 전환 중에 정지 시간이 필요합니다.
- 시스템 할당 관리 ID의 주체 ID가 변경되므로 모든 RBAC 할당을 다시 생성해야 합니다.
- 사용자가 할당한 관리 ID는 지역이며 대상 지역에서 다시 만들어야 합니다.
- 아웃바운드 IP 주소가 변경되어 다운스트림 서비스 허용 목록에 영향을 줄 수 있습니다.