외부 Azure Container Apps 환경에 가상 네트워크 제공
다음 예제에서는 기존 가상 네트워크에서 Container Apps 환경을 만드는 방법을 보여줍니다.
먼저 Azure Portal에 로그인합니다.
컨테이너 앱 만들기
컨테이너 앱을 만들려면 Azure Portal 홈 페이지에서 시작합니다.
- 위쪽 검색 창에서 Container Apps를 검색합니다.
- 검색 결과에서 Container Apps를 선택합니다.
- 생성 단추를 선택합니다.
기본 사항 탭
기본 사항 탭에서 다음 작업을 수행합니다.
프로젝트 세부 정보 섹션에서 다음 값을 입력합니다.
설정 작업 구독 Azure 구독을 선택합니다. Resource group 새로 만들기를 선택하고, my-container-apps를 입력합니다. 컨테이너 앱 이름 my-container-app을 입력합니다. 배포 원본 컨테이너 이미지를 선택합니다.
환경 만들기
다음으로 컨테이너 앱에 대한 환경을 만듭니다.
적절한 지역을 선택합니다.
설정 값 지역 미국 중부를 선택합니다. Container Apps 환경 만들기 필드에서 새로 만들기 링크를 선택합니다.
기본 사항 탭의 Container Apps 환경 만들기 페이지에서 다음 값을 입력합니다.
설정 값 환경 이름 my-environment를 입력합니다. 환경 유형 워크로드 프로필 선택 영역 중복 사용 안 함 선택 모니터링 탭을 선택하여 Log Analytics 작업 영역을 만듭니다.
로그 대상으로 Azure Log Analytics를 선택합니다.
Log Analytics 작업 영역 필드에서 새로 만들기 링크를 선택하고 다음 값을 입력합니다.
설정 값 속성 my-container-apps-logs를 입력합니다. 위치 필드는 미국 중부로 미리 채워져 있습니다.
확인을 선택합니다.
참고 항목
기존 가상 네트워크를 사용할 수 있지만 사용량 전용 아키텍처를 사용하는 경우 Container Apps에서 사용하기 위해 /23
또는 이보다 큰 CIDR 범위의 전용 서브넷이 필요합니다. 워크로드 프로필 환경을 사용하는 경우 /27
이상이 필요합니다. 서브넷 크기 조정에 대해 자세히 알아보려면 네트워킹 아키텍처 개요를 참조하세요.
네트워킹 탭을 선택하여 VNET을 만듭니다.
사용자 고유의 가상 네트워크 사용 옆에 있는 예를 선택합니다.
가상 네트워크 상자 옆에 있는 새 만들기 링크를 선택하고 다음 값을 입력합니다.
설정 값 속성 my-custom-vnet을 입력합니다. 확인 단추를 선택합니다.
인프라 서브넷 상자 옆에 있는 새로 만들기 링크를 선택하고 다음 값을 입력합니다.
설정 값 서브넷 이름 infrastructure-subnet을 입력합니다. Virtual Network 주소 블록 기본값을 유지합니다. 서브넷 주소 블록 기본값을 유지합니다. 확인 단추를 선택합니다.
가상 IP에서 외부를 선택합니다.
만들기를 실행합니다.
컨테이너 앱 배포
페이지 아래쪽에서 검토 및 만들기를 선택합니다.
오류가 없으면 만들기 단추가 사용하도록 설정됩니다.
오류가 있으면 오류가 포함된 탭이 빨간색 점으로 표시됩니다. 적절한 탭으로 이동합니다. 오류가 포함된 필드는 빨간색으로 강조 표시됩니다. 모든 오류가 해결되면 검토 및 만들기를 다시 선택합니다.
만들기를 실행합니다.
배포 진행 중이라는 메시지가 있는 페이지가 표시됩니다. 배포가 성공적으로 완료되면 배포가 완료됨이라는 메시지가 표시됩니다.
필수 조건
- 활성 구독이 있는 Azure 계정
- GitHub 계정이 없는 경우 무료로 만들 수 있습니다.
- Azure CLI 버전 2.28.0 이상을 설치합니다.
설정
CLI에서 Azure에 로그인하려면 다음 명령을 실행하고 프롬프트에 따라 인증 프로세스를 완료합니다.
az login
최신 버전의 CLI를 실행하고 있는지 확인하려면 업그레이드 명령을 실행합니다.
az upgrade
그런 다음 CLI용 Azure Container Apps 확장을 설치하거나 업데이트합니다.
Azure CLI에서 az containerapp
명령을 실행하거나 Azure PowerShell의 Az.App
모듈에서 cmdlet을 실행할 때 누락된 매개 변수에 대한 오류가 발생하는 경우 최신 버전의 Azure Container Apps 확장이 설치되어 있어야 합니다.
az extension add --name containerapp --upgrade
참고 항목
2024년 5월부터 Azure CLI 확장 기능은 기본적으로 미리 보기 기능을 사용하도록 설정하지 않습니다. Container Apps 미리 보기 기능에 액세스하려면 --allow-preview true
를 사용하여 Container Apps 확장을 설치합니다.
az extension add --name containerapp --upgrade --allow-preview true
이제 현재 확장 또는 모듈이 설치되었으므로 Microsoft.App
및 Microsoft.OperationalInsights
네임스페이스를 등록합니다.
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights
환경 변수 설정
다음 환경 변수를 설정합니다. <자리 표시자>는 해당 값으로 바꿉니다.
RESOURCE_GROUP="<RESOURCE_GROUP>"
LOCATION="<LOCATION>"
CONTAINERAPPS_ENVIRONMENT="<CONTAINERAPPS_ENVIRONMENT>"
Azure 리소스 그룹 만들기
컨테이너 앱 배포와 관련된 서비스를 구성하는 리소스 그룹을 만듭니다.
az group create \
--name $RESOURCE_GROUP \
--location "$LOCATION"
환경 만들기
Azure Container Apps의 환경은 컨테이너 앱 그룹 주위에 보안 경계를 만듭니다. 동일한 환경에 배포된 컨테이너 앱은 동일한 가상 네트워크에 배포되고 동일한 Log Analytics 작업 영역에 로그를 씁니다.
Microsoft.ContainerService
공급자를 등록합니다.
az provider register --namespace Microsoft.ContainerService
VNET 이름을 포함할 변수를 선언합니다.
VNET_NAME="my-custom-vnet"
이제 Container Apps 환경과 연결할 Azure 가상 네트워크를 만듭니다. 가상 네트워크에는 환경 배포에 사용할 수 있는 서브넷이 있어야 합니다.
참고 항목
네트워크 서브넷 주소 접두사는 사용량 전용 아키텍처를 사용하는 경우 Container Apps에서 사용하기 위해 /23
의 최소 CIDR 범위가 필요합니다. 워크로드 프로필 아키텍처를 사용하는 경우 /27
이상이 필요합니다. 서브넷 크기 조정에 대해 자세히 알아보려면 네트워킹 아키텍처 개요를 참조하세요.
az network vnet create \
--resource-group $RESOURCE_GROUP \
--name $VNET_NAME \
--location $LOCATION \
--address-prefix 10.0.0.0/16
az network vnet subnet create \
--resource-group $RESOURCE_GROUP \
--vnet-name $VNET_NAME \
--name infrastructure-subnet \
--address-prefixes 10.0.0.0/21
워크로드 프로필 환경을 사용하는 경우 서브넷을 Microsoft.App/environments
에 위임하도록 VNET을 업데이트해야 합니다. 이 위임은 소비 전용 환경에는 적용되지 않습니다.
az network vnet subnet update \
--resource-group $RESOURCE_GROUP \
--vnet-name $VNET_NAME \
--name infrastructure-subnet \
--delegations Microsoft.App/environments
가상 네트워크를 만들면 인프라 서브넷에 대한 ID를 검색할 수 있습니다.
INFRASTRUCTURE_SUBNET=`az network vnet subnet show --resource-group ${RESOURCE_GROUP} --vnet-name $VNET_NAME --name infrastructure-subnet --query "id" -o tsv | tr -d '[:space:]'`
마지막으로 이전 단계에서 배포된 사용자 지정 VNET을 사용하여 Container Apps 환경을 만듭니다.
az containerapp env create \
--name $CONTAINERAPPS_ENVIRONMENT \
--resource-group $RESOURCE_GROUP \
--location "$LOCATION" \
--infrastructure-subnet-resource-id $INFRASTRUCTURE_SUBNET
아래의 표는 containerapp env create
에서 사용되는 매개 변수에 대해 설명합니다.
매개 변수 | 설명 |
---|---|
name |
Container Apps 환경의 이름입니다. |
resource-group |
리소스 그룹의 이름입니다. |
location |
환경을 배포할 Azure 위치입니다. |
infrastructure-subnet-resource-id |
인프라 구성 요소 및 사용자 애플리케이션 컨테이너에 대한 서브넷의 리소스 ID입니다. |
사용자 지정 가상 네트워크를 사용하여 만든 환경에서는 이제 컨테이너 앱을 환경에 배포할 수 있습니다.
선택적 구성
프라이빗 DNS를 배포하고 Container Apps 환경에 대한 사용자 지정 네트워킹 IP 범위를 정의하는 옵션이 있습니다.
프라이빗 DNS를 사용하여 배포
프라이빗 DNS를 사용하여 컨테이너 앱을 배포하려면 다음 명령을 실행합니다.
먼저 환경에서 식별 가능한 정보를 추출합니다.
ENVIRONMENT_DEFAULT_DOMAIN=`az containerapp env show --name ${CONTAINERAPPS_ENVIRONMENT} --resource-group ${RESOURCE_GROUP} --query properties.defaultDomain --out json | tr -d '"'`
ENVIRONMENT_STATIC_IP=`az containerapp env show --name ${CONTAINERAPPS_ENVIRONMENT} --resource-group ${RESOURCE_GROUP} --query properties.staticIp --out json | tr -d '"'`
VNET_ID=`az network vnet show --resource-group ${RESOURCE_GROUP} --name ${VNET_NAME} --query id --out json | tr -d '"'`
다음으로, 프라이빗 DNS를 설정합니다.
az network private-dns zone create \
--resource-group $RESOURCE_GROUP \
--name $ENVIRONMENT_DEFAULT_DOMAIN
az network private-dns link vnet create \
--resource-group $RESOURCE_GROUP \
--name $VNET_NAME \
--virtual-network $VNET_ID \
--zone-name $ENVIRONMENT_DEFAULT_DOMAIN -e true
az network private-dns record-set a add-record \
--resource-group $RESOURCE_GROUP \
--record-set-name "*" \
--ipv4-address $ENVIRONMENT_STATIC_IP \
--zone-name $ENVIRONMENT_DEFAULT_DOMAIN
네트워킹 매개 변수
containerapp env create
를 호출할 때 정의하도록 선택할 수 있는 세 가지 선택적 네트워킹 매개 변수가 있습니다. 별도의 주소 범위가 있는 피어링된 VNET이 있는 경우 이러한 옵션을 사용합니다. 이러한 범위를 명시적으로 구성하면 Container Apps 환경에서 사용하는 주소가 네트워크 인프라의 다른 범위와 충돌하지 않습니다.
이러한 속성 세 가지 모두에 대한 값을 제공하거나 값을 하나도 제공하지 않아야 합니다. 제공되지 않으면 값이 만들어집니다.
매개 변수 | 설명 |
---|---|
platform-reserved-cidr |
환경 인프라 서비스에 내부적으로 사용되는 주소 범위입니다. 사용량 전용 아키텍처를 사용하는 경우 /23 및 /12 사이의 크기가 있어야 함 |
platform-reserved-dns-ip |
내부 DNS 서버에 사용되는 platform-reserved-cidr 범위의 IP 주소입니다. 이 주소는 범위의 첫 번째 주소 또는 네트워크 주소일 수 없습니다. 예를 들어 platform-reserved-cidr 이 10.2.0.0/16 으로 설정된 경우 platform-reserved-dns-ip 는 10.2.0.0 (네트워크 주소) 또는 10.2.0.1 (인프라에서 사용을 예약한 IP)일 수 없습니다. 이 경우 DNS에 사용할 수 있는 첫 번째 IP는 10.2.0.2 입니다. |
docker-bridge-cidr |
Docker 브리지 네트워크에 할당된 주소 범위입니다. 이 범위의 크기는 /28 ~/12 이어야 합니다. |
platform-reserved-cidr
및docker-bridge-cidr
주소 범위는 서로 충돌하거나 제공된 서브넷의 범위와 충돌할 수 없습니다. 또한 이러한 범위가 VNET의 다른 주소 범위와 충돌하지 않도록 합니다.이러한 속성이 제공되지 않으면 CLI는 범위 충돌을 방지하기 위해 VNET의 주소 범위에 따라 범위 값을 자동으로 생성합니다.
리소스 정리
이 애플리케이션을 계속 사용하지 않으려면 my-container-apps 리소스 그룹을 제거할 수 있습니다. 이렇게 하면 Azure Container Apps 인스턴스 및 연결된 모든 서비스가 삭제됩니다. 또한 Container Apps 서비스에 의해 자동으로 만들어지고 사용자 지정 네트워크 구성 요소를 포함하는 리소스 그룹도 삭제됩니다.
주의
다음 명령은 지정된 리소스 그룹과 그 안에 포함된 모든 리소스를 삭제합니다. 지정된 리소스 그룹에 이 가이드의 범위에 속하지 않는 리소스가 있는 경우에도 해당 리소스가 삭제됩니다.
az group delete --name $RESOURCE_GROUP