다음을 통해 공유


Azure Container Apps 환경에서 수신 구성

Azure Container Apps는 자체 VNet(가상 네트워크)을 사용하여 환경의 컨텍스트에서 실행됩니다. 이 VNet은 Azure Container Apps 환경을 중심으로 보안 경계를 만듭니다.

Azure Container Apps의 수신 구성은 외부 네트워크 트래픽이 애플리케이션에 도달하는 방법을 결정합니다. 수신을 구성하면 트래픽 라우팅을 제어하고, 애플리케이션 성능을 향상시키고, 고급 배포 전략을 구현할 수 있습니다. 이 문서에서는 Azure Container Apps에서 사용할 수 있는 수신 구성 옵션을 안내하고 워크로드에 적합한 설정을 선택하는 데 도움이 됩니다.

Azure Container Apps 환경에는 다음 기능을 담당하는 확장 가능한 에지 수신 프록시가 포함되어 있습니다.

  • TLS(전송 계층 보안) 종료- 환경에 들어갈 때 TLS 트래픽의 암호를 해독합니다. 이 작업을 통해 암호 해독 작업을 컨테이너 앱에서 분리하여 리소스 소비를 줄이고 성능을 개선할 수 있습니다.

  • 활성 컨테이너 앱 수정 버전 간에 부하 분산 및 트래픽 분할. 들어오는 트래픽을 지시하는 위치를 제어하면 청록색 배포와 같은 패턴을 구현하고 A/B 테스트를 수행할 수있습니다.

  • 세션 선호도는 동일한 컨테이너 앱 복제본에 일관되게 연결해야 하는 상태 저장 애플리케이션을 빌드하는 데 도움이 됩니다.

다음 다이어그램은 두 개의 컨테이너 앱으로 트래픽을 라우팅하는 인그레스 프록시가 있는 예제 환경을 보여줍니다.

수신 프록시가 트래픽을 컨테이너 앱으로 라우팅하는 방법의 다이어그램.

기본적으로 Azure Container Apps는 기본 수신 모드를 사용하여 컨테이너 앱 환경을 만듭니다. 애플리케이션이 높은 확장 수준에서 작동해야 하는 경우 수신 모드를 프리미엄으로 설정할 수 있습니다.

기본 수신 모드

기본 수신 모드를 사용하면 Container Apps 환경에 두 개의 수신 프록시 인스턴스가 있습니다. 컨테이너 앱은 필요에 따라 최대 10개까지 더 많은 인스턴스를 만듭니다. 각 인스턴스는 최대 1개의 vCPU 코어와 2GB의 메모리를 할당합니다.

기본 수신 모드에서는 수신 프록시 크기 조정 또는 vCPU 코어 및 할당된 메모리에 대한 청구가 적용되지 않습니다.

프리미엄 수신 모드

기본 수신 모드는 대규모 환경에서 병목 상태가 될 수 있습니다. 또는 프리미엄 수신 모드에는 수신이 트래픽 요구를 충족하도록 하는 고급 기능이 포함되어 있습니다.

이러한 기능은 다음과 같습니다.

  • 워크로드 프로필 지원: 수신 프록시 인스턴스는 선택한 워크로드 프로필에서 실행됩니다. 프록시에서 사용할 수 있는 vCPU 코어 및 메모리 리소스의 수를 제어할 수 있습니다.

  • 구성 가능한 확장 범위 규칙: 프록시 배율 범위 규칙은 구성 가능하므로 애플리케이션에 필요한 만큼의 인스턴스가 있는지 확인할 수 있습니다.

  • 고급 설정: 수신 프록시 인스턴스에 대한 유휴 시간 제한과 같은 고급 설정을 구성할 수 있습니다.

기본 및 프리미엄 수신 모드 중에서 결정하려면 제공된 요청을 고려하여 프록시 인스턴스에서 사용하는 리소스를 평가합니다. 프록시 인스턴스에서 사용하는 vCPU 코어 및 메모리 리소스를 확인하여 시작합니다. 환경이 연장된 기간 동안 최대 수신 프록시 수(기본값 10)를 유지하는 경우 프리미엄 수신 모드로 전환하는 것이 좋습니다. 자세한 내용은 메트릭을 참조하세요. 프리미엄 수신 모드를 구성하는 방법을 알아보려면 Azure Container Apps에서 프리미엄 수신 사용을 참조하세요.

워크로드 프로필

워크로드 프로필을 선택하여 필요에 따라 확장 가능한 인그레스 프록시 인스턴스 전용 노드를 제공할 수 있습니다. D4-D32 워크로드 프로필 유형을 권장합니다. 각 인그레스 프록시 인스턴스에는 1개의 vCPU 코어가 할당됩니다. 자세한 내용은 Azure Container Apps의 워크로드 프로필을 참조하세요.

워크로드 프로필:

  • 사용량 워크로드 프로필이 아니어야 합니다.
  • 컨테이너 앱 또는 작업과 공유해서는 안 됩니다.
  • 수신 프록시에 사용하는 동안에는 삭제하지 않아야 합니다.

워크로드 프로필에서 수신 프록시를 실행하면 해당 워크로드 프로필에 대한 요금이 청구됩니다. 자세한 내용은 청구를 참조하세요.

워크로드 프로필 노드 수를 구성할 수도 있습니다. 워크로드 프로필은 확장 가능한 노드 풀입니다. 각 노드에는 여러 수신 프록시 인스턴스가 포함됩니다. vCPU 및 메모리 사용률에 따라 확장되는 노드 수입니다. 노드 인스턴스의 최소 수는 2개입니다.

확장

수신 프록시는 컨테이너 앱 크기 조정과 독립적으로 확장됩니다.

수신 프록시가 높은 vCPU 또는 메모리 사용률에 도달하면 Container Apps는 더 많은 수신 프록시 인스턴스를 만듭니다. 사용률이 감소하면 추가 수신 프록시 인스턴스가 제거됩니다.

최소 및 최대 수신 프록시 인스턴스는 다음과 같이 결정됩니다.

  • 최소: 최소 두 개의 노드 인스턴스가 있습니다.

  • 최대값: 최대 노드 인스턴스에 vCPU 코어를 곱합니다. 예를 들어 최대 노드 인스턴스가 50개이고 vCPU 코어가 4개인 경우 최대 200개의 인그레스 프록시 인스턴스를 사용할 수 있습니다.

수신 프록시 인스턴스는 사용 가능한 워크로드 프로필 노드 간에 분산됩니다.

고급 수신 설정

프리미엄 수신 모드를 사용하도록 설정하면 다음 설정을 구성할 수도 있습니다.

설정 설명 최소 최대 기본값
종료 유예 기간 종료 중에 취소되기 전에 컨테이너 앱이 요청 처리를 완료하는 데 걸리는 시간(초)입니다. 0 3,600 500
유휴 요청 시간 초과 유휴 요청 시간 제한은 분 단위입니다. 4 30 4
요청 헤더 수 많은 수의 요청 헤더를 보내는 클라이언트가 있는 경우 이 설정을 늘리세요. 1 해당 없음(N/A) 100

이 설정을 높이면 인그레스 프록시 인스턴스가 더 오랜 시간 동안 더 많은 리소스를 소비하여 리소스 고갈 및 서비스 거부 공격에 더 취약해질 수 있으므로 필요한 경우에만 이 설정을 높여야 합니다.

수신 구성

환경을 만든 후 사용자 환경에 대한 수신을 구성할 수 있습니다.

  1. Azure Portal에서 사용자 환경으로 이동하세요.

  2. 네트워킹을 선택합니다.

  3. 수신 설정을 선택하세요.

  4. 다음과 같이 수신 설정을 구성합니다.

    설정 가치
    수신 모드 기본 또는 프리미엄을 선택하세요.
    워크로드 프로필 크기 D4에서 D32까지의 크기를 선택하세요.
    최소 노드 인스턴스 최소 워크로드 프로필 노드 인스턴스를 입력하세요.
    최대 노드 인스턴스 최대 워크로드 프로필 노드 인스턴스를 입력하세요.
    종료 유예 기간 해지 유예 기간(분)을 입력하세요.
    유휴 요청 시간 초과 유휴 요청 시간 제한을 분 단위로 입력합니다.
    요청 헤더 수 요청 헤더 수를 입력하세요.
  5. 적용을 선택합니다.

규칙 기반 라우팅

규칙 기반 라우팅을 사용하면 컨테이너 앱 환경에서 FQDN(정규화된 도메인 이름)을 만들 수 있습니다. 그런 다음 각 요청의 경로에 따라 이 FQDN에 대한 요청을 다른 컨테이너 앱으로 라우팅하는 규칙을 사용합니다. 이는 다음과 같은 이점을 제공합니다.

  • 격리: 다양한 컨테이너 앱에 서로 다른 경로를 라우팅함으로써 전체 애플리케이션에 영향을 주지 않고 개별 구성 요소를 배포하고 업데이트할 수 있습니다.

  • 확장성: 규칙 기반 라우팅을 사용하면 각 컨테이너 앱이 수신하는 트래픽에 따라 개별 컨테이너 앱을 독립적으로 크기 조정할 수 있습니다.

  • 사용자 지정 라우팅 규칙: 예를 들어, 사용자를 애플리케이션의 다른 버전으로 리디렉션하거나 A/B 테스트를 구현할 수 있습니다.

  • 보안: 각 컨테이너 앱에 맞게 보안 조치를 구현할 수 있습니다. 이를 통해 애플리케이션의 공격 표면을 줄이는 데 도움이 됩니다.

컨테이너 앱 환경에서 규칙 기반 라우팅을 구성하는 방법을 알아보려면 규칙 기반 라우팅 사용을 참조하세요.

Azure Container Apps 환경의 피어 투 피어 암호화

Azure Container Apps는 환경 내에서 피어 투 피어 TLS 암호화를 지원합니다. 이 기능을 사용하도록 설정하면 Azure Container Apps 환경 범위 내에서 유효한 프라이빗 인증서를 사용하여 환경 내의 모든 네트워크 트래픽이 암호화됩니다. Azure Container Apps는 이러한 인증서를 자동으로 관리합니다.

비고

기본적으로 P2P 암호화는 사용하지 않도록 설정되어 있습니다. 애플리케이션에 대해 P2P 암호화를 사용하도록 설정하면 부하가 높은 시나리오에서 응답 대기 시간이 늘어나고 최대 처리량이 줄어들 수 있습니다.

다음 예에서는 P2P 암호화가 사용하도록 설정된 환경을 보여 줍니다. P2P 암호화를 사용하도록 설정하여 트래픽을 암호화/복호화하는 방법을 보여 주는 다이어그램.

1 인바운드 TLS 트래픽은 환경 가장자리에 있는 수신 프록시에서 종료됩니다.

2 환경 내의 수신 프록시로 들어오고 나가는 트래픽은 프라이빗 인증서로 TLS 암호화되고 수신자에 의해 해독됩니다.

3 앱 A에서 앱 B의 FQDN으로 이루어진 호출은 먼저 에지 수신 프록시로 전송되고 TLS로 암호화됩니다.

4 앱 B의 앱 이름을 사용하여 앱 A에서 앱 B로 이루어진 호출은 앱 B로 직접 전송되며 TLS로 암호화됩니다. 앱과 Java 구성 요소 간의 통화는 앱 간 통신과 동일한 방식으로 처리되고 TLS로 암호화됩니다.

Container Apps 환경 내 애플리케이션은 자동으로 인증됩니다. 그러나 Container Apps 런타임은 기본 제공된 P2P 암호화를 사용하는 애플리케이션 간의 액세스 제어에 대한 권한 부여를 지원하지 않습니다.

앱이 환경 외부의 클라이언트와 통신하는 경우 mTLS를 사용한 양방향 인증이 지원됩니다. 자세한 내용은 클라이언트 인증서 구성을 참조하세요.

다음 명령을 사용하여 P2P 암호화를 사용하도록 설정할 수 있습니다.

만들 때 다음 명령을 실행합니다.

az containerapp env create \
    --name <ENVIRONMENT_NAME> \
    --resource-group <RESOURCE_GROUP> \
    --location <LOCATION> \
    --enable-peer-to-peer-encryption

기존 컨테이너 앱의 경우 다음 명령을 실행합니다.

az containerapp env update \
    --name <ENVIRONMENT_NAME> \
    --resource-group <RESOURCE_GROUP> \
    --enable-peer-to-peer-encryption