Azure Container Apps에서 HTTPS 또는 TCP 수신 설정

Azure Container Apps를 사용하면 수신을 사용하도록 설정하여 컨테이너 앱을 퍼블릭 웹, VNET 또는 환경 내의 다른 컨테이너 앱에 노출할 수 있습니다. 수신을 사용하도록 설정하면 들어오는 HTTPS 요청을 사용하도록 설정하기 위해 Azure Load Balancer, 공용 IP 주소 또는 기타 Azure 리소스를 만들 필요가 없습니다.

각 컨테이너 앱은 서로 다른 수신 설정으로 구성할 수 있습니다. 예를 들어 퍼블릭 웹에 노출되는 컨테이너 앱 하나와 Container Apps 환경 내에서만 액세스할 수 있는 컨테이너 앱이 하나 있을 수 있습니다.

수신 형식

Azure Container Apps는 HTTPS 및 TCP라는 두 가지 유형의 수신을 지원합니다.

HTTPS

HTTPS 수신을 사용하도록 설정하면 컨테이너 앱에 다음과 같은 특징이 있습니다.

  • TLS 종료 지원
  • HTTP/1.1 및 HTTP/2 지원
  • WebSocket 및 gRPC 지원
  • HTTPS 엔드포인트는 항상 수신 지점에서 종료된 TLS 1.2를 사용합니다.
  • 엔드포인트는 항상 포트 80(HTTP용) 및 443(HTTPS)을 노출합니다.
    • 기본적으로 포트 80에 대한 HTTP 요청은 443에서 HTTPS로 자동으로 리디렉션됩니다.
  • 컨테이너 앱은 FQDN(정규화된 도메인 이름)을 통해 액세스됩니다.
  • 요청 시간 제한은 240초입니다.

TCP(미리 보기)

TCP 수신은 HTTP 또는 HTTPS 이외의 TCP 기반 프로토콜을 사용하는 컨테이너 앱을 노출하는 데 유용합니다.

참고

TCP 수신은 공개 미리 보기로 제공되며 사용자 지정 VNET을 사용하는 Container Apps 환경에서만 지원됩니다.

TCP 수신을 사용하도록 설정하려면 ARM 또는 Bicep(API 버전 2022-06-01-preview 이상) 또는 Azure CLI를 사용합니다.

TCP 수신을 사용하도록 설정하면 컨테이너 앱에 다음과 같은 특징이 있습니다.

  • 컨테이너 앱은 FQDN(정규화된 도메인 이름) 및 노출된 포트 번호를 통해 액세스됩니다.
  • 동일한 환경의 다른 컨테이너 앱은 이름(Container Apps 리소스의 속성에 의해 name 정의됨) 및 노출된 포트 번호를 사용하여 TCP 수신 사용 컨테이너 앱에 액세스할 수도 있습니다.

구성

수신은 애플리케이션 전체 설정입니다. 수신 설정에 대한 변경 내용은 모든 수정 버전에 동시에 적용되며 새 수정 버전을 생성하지 않습니다.

수신 구성 섹션에는 다음과 같은 형식이 있습니다.

{
  ...
  "configuration": {
      "ingress": {
          "external": true,
          "targetPort": 80,
          "transport": "auto"
      }
  }
}

다음 설정은 수신을 구성할 때 사용할 수 있습니다.

속성 Description 필수
external 수신 사용 앱이 Container Apps 환경 외부에서 액세스할 수 있는지 여부입니다. true 앱 환경 내에서만 표시되도록 구성된 false 앱 환경 엔드포인트에 따라 인터넷 또는 VNET에서 표시할 수 있습니다. (기본값)
targetPort 들어오는 요청에 대해 컨테이너가 수신 대기하는 포트입니다. 이 값을 컨테이너에서 사용하는 포트 번호로 설정합니다. 애플리케이션 수신 엔드포인트는 항상 포트 443에서 노출됩니다.
exposedPort (TCP 수신만 해당) 앱에 액세스하는 데 사용되는 포트입니다. 이 true경우 external 값은 Container Apps 환경에서 고유해야 하며 이 값이 80443될 수 없습니다. 포트 번호에서 1 .65535 아니요
transport 전송 유형입니다. http HTTP/1, http2 HTTP/2의 auto 경우 TCP의 경우 HTTP/1 또는 HTTP/2(기본값) tcp 를 자동으로 검색합니다.
allowInsecure 컨테이너 앱에 대한 안전하지 않은 트래픽을 허용합니다. false(기본값), true

설정 true하면 포트 80에 대한 HTTP 요청이 HTTPS를 사용하여 포트 443으로 자동으로 리디렉션되지 않으므로 안전하지 않은 연결을 허용합니다.

참고

애플리케이션에 대한 수신을 사용하지 않도록 설정하려면 구성 속성을 완전히 생략 ingress 합니다.

IP 주소 및 도메인 이름

수신을 활성화하면 애플리케이션에 FQDN(정규화된 도메인 이름)이 할당됩니다. 도메인 이름은 다음 형식을 사용합니다.

수신 표시 유형 설정 정규화된 도메인 이름
외부 <APP_NAME>.<UNIQUE_IDENTIFIER>.<REGION_NAME>.azurecontainerapps.io
내부 <APP_NAME>.internal.<UNIQUE_IDENTIFIER>.<REGION_NAME>.azurecontainerapps.io

HTTP 수신의 경우 트래픽은 호스트 헤더의 FQDN을 기반으로 개별 애플리케이션으로 라우팅됩니다.

TCP 수신의 경우 트래픽은 FQDN 및 노출된 포트 번호에 따라 개별 애플리케이션 으로 라우팅됩니다 . 동일한 환경의 다른 컨테이너 앱은 이름(컨테이너 앱의 name 속성으로 정의됨) 및 exposedPort 번호를 사용하여 TCP 수신 사용 컨테이너 앱에 액세스할 수도 있습니다.

외부 수신 가시성이 있는 애플리케이션의 경우 다음 조건이 적용됩니다.

  • 내부 Container Apps 환경에는 애플리케이션에 대한 단일 개인 IP 주소가 있습니다. 내부 환경의 컨테이너 앱의 경우 VNET 범위 수신에 대한 DNS 를 구성해야 합니다.
  • VNET에 없는 외부 Container Apps 환경 또는 Container Apps 환경에는 애플리케이션에 대한 단일 공용 IP 주소가 있습니다.

환경 설정을 쿼리하여 환경의 고유 식별자에 액세스할 수 있습니다.

정규화된 도메인 이름 가져오기

az containerapp show 명령은 컨테이너 앱의 정규화된 도메인 이름을 반환합니다.

az containerapp show \
  --resource-group <RESOURCE_GROUP_NAME> \
  --name <CONTAINER_APP_NAME> \
  --query properties.configuration.ingress.fqdn

이 예제에서는 <>로 둘러싸인 자리 표시자를 값으로 바꿉니다.

이 명령에서 반환되는 값은 다음 예제와 같은 도메인 이름과 유사합니다.

myapp.happyhill-70162bb9.canadacentral.azurecontainerapps.io

다음 단계