Azure Front Door를 사용하여 Azure Container App에 대한 프라이빗 링크 만들기(미리 보기)
이 문서에서는 공용 인터넷 대신 프라이빗 링크를 사용하여 Azure Front Door에서 Azure Container Apps로 직접 연결하는 방법을 알아봅니다. 이 자습서에서는 Azure Container Apps 워크로드 프로필 환경, Azure Front Door를 만들고 프라이빗 링크를 통해 안전하게 연결합니다. 그런 다음 컨테이너 앱과 Azure Front Door 간의 연결을 확인합니다.
필수 조건
활성 구독이 있는 Azure 계정
- GitHub 계정이 없는 경우 무료로 만들 수 있습니다.
이 기능은 Azure CLI에서만 사용할 수 있습니다. 최신 버전의 Azure CLI를 실행하려면 다음 명령을 실행합니다.
az upgrade
Azure CLI용 Azure Container Apps 확장의 최신 버전입니다. 최신 버전을 실행 중인지 확인하려면 다음 명령을 실행합니다.
az extension add --name containerapp --upgrade --allow-preview true
참고 항목
2024년 5월부터 Azure CLI 확장 기능은 기본적으로 미리 보기 기능을 사용하도록 설정하지 않습니다. Container Apps 미리 보기 기능에 액세스하려면
--allow-preview true
를 사용하여 Container Apps 확장을 설치합니다.이 기능은 워크로드 프로필 환경에서만 지원됩니다.
필수 구성 요소 및 설정에 대한 자세한 내용은 빠른 시작: containerapp을 사용하여 첫 번째 컨테이너 앱 배포를 참조하세요.
환경 변수 설정
다음 환경 변수를 설정합니다.
RESOURCE_GROUP="my-container-apps"
LOCATION="centralus"
ENVIRONMENT_NAME="my-environment"
CONTAINERAPP_NAME="my-container-app"
AFD_PROFILE="my-afd-profile"
AFD_ENDPOINT="my-afd-endpoint"
AFD_ORIGIN_GROUP="my-afd-origin-group"
AFD_ORIGIN="my-afd-origin"
AFD_ROUTE="my-afd-route"
Azure 리소스 그룹 만들기
컨테이너 앱 배포와 관련된 서비스를 구성하는 리소스 그룹을 만듭니다.
az group create \
--name $RESOURCE_GROUP \
--location $LOCATION
환경 만들기
Container Apps 환경을 만듭니다.
az containerapp env create \ --name $ENVIRONMENT_NAME \ --resource-group $RESOURCE_GROUP \ --location $LOCATION
환경 ID를 검색합니다. 이 방법을 사용하여 환경을 구성합니다.
ENVIRONMENT_ID=$(az containerapp env show \ --resource-group $RESOURCE_GROUP \ --name $ENVIRONMENT_NAME \ --query "id" \ --output tsv)
환경에 대한 공용 네트워크 액세스를 사용하지 않도록 설정합니다.
az containerapp env update \ --id $ENVIRONMENT_ID \ --public-network-access Disabled
컨테이너 앱 배포
다음 명령을 실행하여 사용자 환경에 컨테이너 앱을 배포합니다.
az containerapp up \ --name $CONTAINERAPP_NAME \ --resource-group $RESOURCE_GROUP \ --location $LOCATION \ --environment $ENVIRONMENT_NAME \ --image mcr.microsoft.com/k8se/quickstart:latest \ --target-port 80 \ --ingress external \ --query properties.configuration.ingress.fqdn
컨테이너 앱 엔드포인트를 검색합니다.
ACA_ENDPOINT=$(az containerapp show \ --name $CONTAINERAPP_NAME \ --resource-group $RESOURCE_GROUP \ --query properties.configuration.ingress.fqdn \ --output tsv)
컨테이너 앱 엔드포인트로 이동하면 컨테이너 앱 환경에 공용 액세스가 비활성화되어 있기 때문에 수신됩니다
ERR_CONNECTION_CLOSED
. 대신 AFD 엔드포인트를 사용하여 컨테이너 앱에 액세스합니다.
Azure Front Door 프로필 만들기
AFD 프로필을 만듭니다. 프라이빗 링크는 SKU Standard_AzureFrontDoor
를 사용하는 AFD 프로필의 원본에 대해 지원되지 않습니다.
az afd profile create \
--profile-name $AFD_PROFILE \
--resource-group $RESOURCE_GROUP \
--sku Premium_AzureFrontDoor
Azure Front Door 엔드포인트 만들기
AFD 프로필에 엔드포인트를 추가합니다.
az afd endpoint create \
--resource-group $RESOURCE_GROUP \
--endpoint-name $AFD_ENDPOINT \
--profile-name $AFD_PROFILE \
--enabled-state Enabled
Azure Front Door 원본 그룹 만들기
AFD 원본 그룹을 만듭니다.
az afd origin-group create \
--resource-group $RESOURCE_GROUP \
--origin-group-name $AFD_ORIGIN_GROUP \
--profile-name $AFD_PROFILE \
--probe-request-type GET \
--probe-protocol Http \
--probe-interval-in-seconds 60 \
--probe-path / \
--sample-size 4 \
--successful-samples-required 3 \
--additional-latency-in-milliseconds 50
Azure Front Door 원본 만들기
원본 그룹에 AFD 원본을 추가합니다.
az afd origin create \
--resource-group $RESOURCE_GROUP \
--origin-group-name $AFD_ORIGIN_GROUP \
--origin-name $AFD_ORIGIN \
--profile-name $AFD_PROFILE \
--host-name $ACA_ENDPOINT \
--origin-host-header $ACA_ENDPOINT \
--priority 1 \
--weight 500 \
--enable-private-link true \
--private-link-location $LOCATION \
--private-link-request-message "AFD Private Link Request" \
--private-link-resource $ENVIRONMENT_ID \
--private-link-sub-resource-type managedEnvironments
프라이빗 엔드포인트 연결 나열
다음 명령을 실행하여 환경에 대한 프라이빗 엔드포인트 연결을 나열합니다.
az network private-endpoint-connection list \ --name $ENVIRONMENT_NAME \ --resource-group $RESOURCE_GROUP \ --type Microsoft.App/managedEnvironments
응답에서 프라이빗 엔드포인트 연결 리소스 ID를 기록합니다. 프라이빗 엔드포인트 연결의 값은
properties.privateLinkServiceConnectionState.description
.입니다AFD Private Link Request
. 프라이빗 엔드포인트 연결 리소스 ID는 다음과 같습니다./subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.App/managedEnvironments/my-environment/privateEndpointConnections/<PRIVATE_ENDPOINT_CONNECTION_ID>
다음과 같은 프라이빗 엔드포인트 ID와 혼동하지 마세요.
/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/eafd-Prod-centralus/providers/Microsoft.Network/privateEndpoints/<PRIVATE_ENDPOINT_ID>
프라이빗 엔드포인트 연결 승인
다음 명령을 실행하여 연결을 승인합니다. PLACEHOLDER>를 <이전 섹션에서 기록한 프라이빗 엔드포인트 연결 리소스 ID로 바꿉니다.
az network private-endpoint-connection approve --id <PRIVATE_ENDPOINT_CONNECTION_RESOURCE_ID>
경로 추가
다음 명령을 실행하여 이전에 만든 엔드포인트를 원본 그룹에 매핑합니다.
az afd route create \
--resource-group $RESOURCE_GROUP \
--profile-name $AFD_PROFILE \
--endpoint-name $AFD_ENDPOINT \
--forwarding-protocol MatchRequest \
--route-name $AFD_ROUTE \
--https-redirect Enabled \
--origin-group $AFD_ORIGIN_GROUP \
--supported-protocols Http Https \
--link-to-default-domain Enabled
Azure Front Door에서 컨테이너 앱 액세스
AFD 엔드포인트의 호스트 이름을 검색합니다.
az afd endpoint show \ --resource-group $RESOURCE_GROUP \ --profile-name $AFD_PROFILE \ --endpoint-name $AFD_ENDPOINT \ --query hostName \ --output tsv
호스트 이름은 다음 예제와 같습니다.
my-afd-endpoint.<HASH>.b01.azurefd.net
호스트 이름으로 찾습니다. 빠른 시작 컨테이너 앱 이미지에 대한 출력이 표시됩니다.
AFD 프로필을 전역적으로 배포하는 데 몇 분 정도 걸리므로 처음에는 예상 출력이 표시되지 않으면 몇 분 정도 기다린 다음 새로 고칩니다.
리소스 정리
이 애플리케이션을 계속 사용하지 않으려면 my-container-apps 리소스 그룹을 제거할 수 있습니다. 이렇게 하면 Azure Container Apps 인스턴스 및 연결된 모든 서비스가 삭제됩니다. 또한 Container Apps 서비스에 의해 자동으로 만들어지고 사용자 지정 네트워크 구성 요소를 포함하는 리소스 그룹도 삭제됩니다.
주의
다음 명령은 지정된 리소스 그룹과 그 안에 포함된 모든 리소스를 삭제합니다. 지정된 리소스 그룹에 이 가이드의 범위에 속하지 않는 리소스가 있는 경우에도 해당 리소스가 삭제됩니다.
az group delete --name $RESOURCE_GROUP