Azure Container Apps의 수신
Azure Container Apps를 사용하면 수신을 사용하도록 설정하여 공용 웹, VNET(가상 네트워크) 및 환경 내의 기타 Container Apps에 Container Apps를 노출할 수 있습니다. 수신 설정은 컨테이너 앱에 대한 외부 및 내부 트래픽 라우팅을 제어하는 규칙 집합을 통해 적용됩니다. 수신을 사용하도록 설정하면 들어오는 HTTP 요청 또는 TCP 트래픽을 사용하도록 설정하기 위해 Azure Load Balancer, 공용 IP 주소 또는 기타 Azure 리소스를 만들 필요가 없습니다.
수신은 다음을 지원합니다.
두 수정 버전 간의 수신 분할을 보여 주는 수신 구성 예:
구성 세부 정보는 수신 구성을 참조하세요.
외부 및 내부 수신
수신을 사용하도록 설정하면 두 가지 수신 형식 중에서 선택할 수 있습니다.
- 외부: 공용 인터넷과 컨테이너 앱의 내부 환경 모두에서 트래픽을 허용합니다.
- 내부: 컨테이너 앱 환경 내에서 내부 액세스만 허용합니다.
환경 내의 각 컨테이너 앱은 다양한 수신 설정으로 구성될 수 있습니다. 예를 들어 여러 마이크로 서비스 앱이 있는 시나리오에서 보안을 강화하기 위해 공용 요청을 수신하고 백그라운드 서비스에 요청을 전달하는 단일 컨테이너 앱이 있을 수 있습니다. 이 시나리오에서는 외부 수신이 있는 공용 컨테이너 앱과 내부 수신이 있는 내부 컨테이너 앱을 구성합니다.
프로토콜 형식
Container Apps는 수신을 위해 두 가지 프로토콜을 지원합니다. HTTP 및 TCP
HTTP
HTTP 수신이 사용하도록 설정되면 컨테이너 앱에는 다음이 포함됩니다.
- TLS 종료 지원
- HTTP/1.1 및 HTTP/2 지원
- WebSocket 및 gRPC 지원
- HTTPS 엔드포인트는 항상 수신 지점에서 종료된 TLS 1.2 또는 1.3을 사용합니다.
- 엔드포인트는 포트 80(HTTP의 경우) 및 443(HTTPS의 경우)을 노출합니다.
- 기본적으로 포트 80에 대한 HTTP 요청은 443에서 HTTPS로 자동으로 리디렉션됩니다.
- FQDN(정규화된 도메인 이름)
- 요청 제한 시간은 240초입니다.
HTTP 헤더
HTTP 수신은 클라이언트 요청에 대한 메타데이터를 컨테이너 앱에 전달하는 헤더를 추가합니다. 예를 들어 X-Forwarded-Proto
헤더는 클라이언트가 Container Apps 서비스에 연결하는 데 사용한 프로토콜을 식별하는 데 사용됩니다. 다음 표에는 Container Apps의 수신과 관련된 HTTP 헤더가 나열되어 있습니다.
헤더 | 설명 | 값 |
---|---|---|
X-Forwarded-Proto |
클라이언트가 Container Apps 서비스에 연결하는 데 사용하는 프로토콜입니다. | http 또는 https |
X-Forwarded-For |
요청을 보낸 클라이언트의 IP 주소입니다. | |
X-Forwarded-Host |
클라이언트가 Container Apps 서비스에 연결하는 데 사용한 호스트 이름입니다. | |
X-Forwarded-Client-Cert |
clientCertificateMode 가 설정된 경우 클라이언트 인증서입니다. |
해시, 인증서 및 체인의 세미콜론으로 구분된 목록입니다. 예: Hash=....;Cert="...";Chain="..."; |
TCP
Container Apps는 HTTP 또는 HTTPS 이외의 TCP 기반 프로토콜을 지원합니다. 예를 들어 TCP 수신을 사용하여 Redis 프로토콜을 사용하는 컨테이너 앱을 노출할 수 있습니다.
참고 항목
외부 TCP 수신은 사용자 지정 VNET을 사용하는 Container Apps 환경에서만 지원됩니다.
TCP 수신이 사용하도록 설정되면 컨테이너 앱은 다음을 수행합니다.
- 이름(Container Apps 리소스의
name
속성에 의해 정의됨) 및 노출된 포트 번호를 통해 동일한 환경의 다른 컨테이너 앱에 액세스할 수 있습니다. - 수신이 "외부"로 설정된 경우 FQDN(정규화된 도메인 이름) 및 노출된 포트 번호를 통해 외부에서 액세스할 수 있습니다.
추가 TCP 포트
Container Apps의 기본 HTTP/TCP 포트 외에도 추가 TCP 포트를 노출하여 여러 포트에서 TCP 연결을 허용하는 애플리케이션을 사용하도록 설정할 수 있습니다.
참고 항목
이 기능을 사용하려면 컨테이너 앱 CLI 확장이 있어야 합니다. 최신 버전의 컨테이너 앱 CLI 확장을 설치하려면 az extension add -n containerapp
을 실행합니다.
추가 TCP 포트에는 다음이 적용됩니다.
- 추가 TCP 포트는 앱 자체가 외부로 설정되어 있고 컨테이너 앱이 사용자 지정 VNet을 사용하는 경우에만 외부에 있을 수 있습니다.
- 외부에 노출된 추가 TCP 포트는 전체 Container Apps 환경에서 고유해야 합니다. 여기에는 모든 외부 추가 TCP 포트, 외부 기본 TCP 포트 및 기본 제공 HTTP 수신에 사용되는 80/443 포트가 포함됩니다. 추가 포트가 내부에 있는 경우 여러 앱에서 동일한 포트를 공유할 수 있습니다.
- 노출된 포트가 제공되지 않으면 노출된 포트는 기본적으로 대상 포트와 일치합니다.
- 각 대상 포트는 고유해야 하며 동일한 대상 포트가 다른 노출 포트에 노출될 수 없습니다.
- 앱당 최대 5개의 추가 포트가 있습니다. 추가 포트가 필요한 경우 지원 요청을 여세요.
- 기본 수신 포트만 CORS 및 세션 선호도와 같은 기본 제공 HTTP 기능을 지원합니다. 추가 TCP 포트 위에서 HTTP를 실행하는 경우 이러한 기본 제공 기능은 지원되지 않습니다.
Container Apps에 추가 포트를 사용하도록 설정하는 방법에 대한 자세한 내용은 수신 방법 문서를 참조하세요.
도메인 이름
다음과 같은 방법으로 앱에 액세스할 수 있습니다.
- 기본 FQDN(정규화된 도메인 이름): Container Apps 환경의 각 앱에는 환경의 DNS 접미사에 따라 FQDN이 자동으로 할당됩니다. 환경의 DNS 접미사를 사용자 지정하려면 사용자 지정 환경 DNS 접미사를 참조하세요.
- 사용자 지정 도메인 이름: Container Apps 환경에 대한 사용자 지정 DNS 도메인을 구성할 수 있습니다. 자세한 내용은 사용자 지정 도메인 이름 및 인증서를 참조하세요.
- 앱 이름: 동일한 환경에서 앱 간의 통신에 앱 이름을 사용할 수 있습니다.
앱에 대한 FQDN을 얻으려면 위치를 참조하세요.
IP 제한
Container Apps는 수신에 대한 IP 제한을 지원합니다. 컨테이너 앱에 대한 액세스가 허용되거나 거부된 IP 주소를 구성하는 규칙을 만들 수 있습니다. 자세한 내용은 IP 제한 구성을 참조하세요.
인증
Azure Container Apps는 외부 수신 지원 컨테이너 앱을 보호하기 위해 기본 제공 인증 및 권한 부여 기능을 제공합니다. 자세한 내용은 Azure Container Apps에서 인증 및 권한 부여를 참조하세요.
인증 및 트래픽 암호화를 위해 mTLS(클라이언트 인증서)를 지원하도록 앱을 구성할 수 있습니다. 자세한 내용은 클라이언트 인증서 구성을 참조하세요.
피어 투 피어 환경 수준 네트워크 암호화를 사용하는 방법에 대한 자세한 내용은 네트워킹 개요를 참조하세요.
트래픽 분할
Containers Apps를 사용하면 들어오는 트래픽을 활성 수정 버전 간에 분할할 수 있습니다. 분할 규칙을 정의할 때 인바운드 트래픽의 백분율을 할당하여 다른 수정 버전으로 이동합니다. 자세한 내용은 트래픽 분할을 참조하세요.
세션 선호도
세션 선호도(고정 세션이라고도 함)는 클라이언트의 모든 HTTP 요청을 복제본(replica) 동일한 컨테이너 앱으로 라우팅할 수 있는 기능입니다. 이 기능은 동일한 복제본에 대한 일관된 연결이 필요한 상태 저장 애플리케이션에 유용합니다. 자세한 내용은 세션 선호도를 참조하세요.
CORS(크로스-원본 자원 공유)
기본적으로 페이지에서 페이지의 원본 도메인과 일치하지 않는 도메인으로 브라우저를 통해 이루어진 모든 요청은 차단됩니다. Container Apps에 배포된 서비스에 대한 이러한 제한을 방지하려면 CORS(원본 간 리소스 공유)를 사용하도록 설정할 수 있습니다.
자세한 내용은 Azure Container Apps에서 CORS 구성을 참조하세요.