Azure Container Apps에서 앱에 대한 수신 구성

이 문서에서는 컨테이너 앱에 수신 기능을 사용 설정하는 방법을 보여 줍니다. 수신은 애플리케이션 전체 설정입니다. 수신 설정에 대한 변경 내용은 모든 수정 버전에 동시에 적용되며 새 수정 버전을 생성하지 않습니다.

수신 설정

다음 수신 템플릿 속성을 설정할 수 있습니다.

속성 설명 Required
allowInsecure 컨테이너 앱에 대한 안전하지 않은 트래픽을 허용합니다. true로 설정되면 포트 80에 대한 HTTP 요청은 HTTPS를 사용하여 포트 443으로 자동으로 리디렉션되지 않으므로 안전하지 않은 연결이 허용됩니다. false(기본값), true이면 안전하지 않은 연결을 사용하도록 설정합니다. 아니요
clientCertificateMode mTLS 인증을 위한 클라이언트 인증서 모드. 무시는 전달 시 서버가 클라이언트 인증서를 삭제함을 나타냅니다. 수락은 서버가 클라이언트 인증서를 전달하지만 클라이언트 인증서가 필요하지 않음을 나타냅니다. 필요는 서버에 클라이언트 인증서가 필요함을 나타냅니다. Required, Accept, Ignore (기본값) 아니요
customDomains Container Apps의 호스트 이름에 대한 사용자 지정 도메인 바인딩. 사용자 지정 도메인 및 인증서를 참조하세요. 바인딩 배열 아니요
exposedPort (TCP 수신만 해당) TCP가 수신 대기하는 포트입니다. externaltrue인 경우 값은 Container Apps 환경에서 고유해야 합니다. 1에서 65535까지의 포트 번호. (80 또는 443일 수 없음) 아니요
external Container Apps 환경 외부에서 앱에 대한 수신을 허용합니다. true 또는 false(기본값)
ipSecurityRestrictions IP 수신 제한. IP 수신 제한 설정을 참조하세요. 규칙 배열 아니요
stickySessions.affinity 세션 선호도를 사용합니다. none(기본값), sticky 아니요
targetPort 들어오는 요청에 대해 컨테이너가 수신 대기하는 포트입니다. 이 값을 컨테이너에서 사용하는 포트 번호로 설정합니다. HTTP 수신의 경우 애플리케이션 수신 엔드포인트는 항상 포트 443에 노출됩니다.
traffic 트래픽 분할 가중치는 수정 버전 간에 분할됩니다. 규칙 배열 아니요
transport 전송 프로토콜 형식입니다. 자동(기본값)은 HTTP/1 또는 HTTP/2, HTTP/1의 경우 http, HTTP/2의 경우 http2, TCP의 경우 tcp를 검색합니다. 아니요

수신 사용

Azure CLI, ARM 템플릿 또는 Azure Portal을 사용하여 컨테이너 앱에 대한 수신을 구성할 수 있습니다.

az containerapp ingress enable 명령은 컨테이너 앱에 대한 수신을 사용하도록 설정합니다. 대상 포트를 지정해야 하며 전송 형식이 tcp인 경우 노출된 포트를 선택적으로 설정할 수 있습니다.

az containerapp ingress enable \
    --name <app-name> \
    --resource-group <resource-group> \
    --target-port <target-port> \
    --exposed-port <tcp-exposed-port> \
    --transport <transport> \
    --type <external>
    --allow-insecure

az containerapp ingress enable 수신 인수:

옵션 속성 설명 Required
--type external 어디서나 앱에 대한 수신을 허용하거나 내부 Container Apps 환경에 대한 수신을 제한합니다. external 또는 internal
--allow-insecure allowInsecure 앱에 대한 HTTP 연결을 허용합니다. 아니요
--target-port targetPort 들어오는 요청에 대해 컨테이너가 수신 대기하는 포트입니다. 이 값을 컨테이너에서 사용하는 포트 번호로 설정합니다. 애플리케이션 수신 엔드포인트는 항상 포트 443에서 노출됩니다.
--exposed-port exposedPort (TCP 수신 전용) TCP 수신용 포트입니다. externaltrue인 경우 수신이 외부인 경우 값은 Container Apps 환경에서 고유해야 합니다. 1에서 65535까지의 포트 번호. (80 또는 443일 수 없음) 아니요
--transport 전송 전송 프로토콜 형식입니다. 자동(기본값)은 HTTP/1 또는 HTTP/2, HTTP/1의 경우 http, HTTP/2의 경우 http2, TCP의 경우 tcp를 검색합니다. 아니요

포털을 사용하여 컨테이너 앱에 대한 수신을 사용하도록 설정합니다.

컨테이너 앱을 만들 때 수신을 사용하도록 설정하거나 기존 컨테이너 앱에 대해 수신을 사용하도록 설정할 수 있습니다.

  • 컨테이너 앱을 만들 때 수신을 구성하려면 컨테이너 앱 만들기 마법사의 App Configuration 탭에서 수신를 선택합니다.
  • 기존 컨테이너 앱에 대한 수신을 구성하려면 컨테이너 앱 리소스 페이지의 설정 메뉴에서 수신를 선택합니다.

컨테이너 앱에 대한 수신 사용:

Azure Portal을 사용하여 컨테이너 앱을 만들 때 수신을 구성할 수 있습니다.

  1. 수신사용으로 설정합니다.
  2. 컨테이너 앱에 대한 수신 설정을 구성합니다.
  3. 내부 수신의 경우 Container Apps 환경으로 제한을 선택하거나 외부 수신의 경우 어디서나 트래픽 허용을 선택합니다.
  4. 수신 형식 선택: HTTP 또는 TCP(TCP 수신은 사용자 지정 VNET으로 구성된 환경에서만 사용 가능).
  5. 수신 형식으로 HTTP를 선택한 경우 전송: 자동, HTTP/1 또는 HTTP/2를 선택합니다.
  6. 앱에 대한 HTTP 연결을 허용하려면 비보안 연결을 선택합니다.
  7. 컨테이너 앱의 대상 포트를 입력합니다.
  8. 전송 옵션으로 TCP를 선택한 경우 컨테이너 앱의 노출된 포트를 입력합니다. 노출된 포트 번호는 1에서 65535까지일 수 있습니다. (80 또는 443일 수 없음)

컨테이너 앱의 수신 설정 페이지에서도 IP 제한을 구성할 수 있습니다. IP 제한 구성에 대한 자세한 내용은 IP 제한을 참조하세요.

ingress 구성 속성을 사용하여 컨테이너 앱에 대한 수신을 사용하도록 설정합니다. external 속성을 true로 설정하고 transporttargetPort 속성을 설정합니다.
-external 속성은 외부의 경우 true로, 내부 수신의 경우 false로 설정할 수 있습니다.

  • transportauto로 설정하여 HTTP/1 또는 HTTP/2, http(HTTP/1), http2(HTTP/2) 또는 tcp(TCP)를 검색합니다.
  • targetPort를 컨테이너가 사용하는 포트 번호로 설정합니다. 애플리케이션 수신 엔드포인트는 항상 포트 443에서 노출됩니다.
  • 전송 형식이 tcp인 경우 exposedPort 속성을 TCP 수신용 포트로 설정합니다. 수신이 외부인 경우 값은 Container Apps 환경에서 고유해야 합니다. 1에서 65535까지의 포트 번호. (80 또는 443일 수 없음)
{
  ...
  "configuration": {
    "ingress": {
        "external": true,
        "transport": "tcp",
        "targetPort": 80,
        "exposedPort": 8080,
    },
  }
}

수신 사용 안 함

az containerapp ingress 명령을 사용하여 컨테이너 앱에 대한 수신을 사용하지 않도록 설정합니다.

az containerapp ingress disable \
    --name <app-name> \
    --resource-group <resource-group> \

포털을 사용하여 컨테이너 앱에 대한 수신을 사용하지 않도록 설정할 수 있습니다.

  1. 컨테이너 앱 페이지의 설정 메뉴에서 수신를 선택합니다.
  2. 수신사용 설정을 선택 취소합니다.
  3. 저장을 선택합니다.

Sceenshot of disabling container app ingress.

properties.configuration에서 ingress 구성 속성을 완전히 생략하여 컨테이너 앱에 대한 수신을 사용하지 않도록 설정합니다.

추가 TCP 포트 사용

애플리케이션에서 추가 TCP 포트를 노출할 수 있습니다. 자세한 내용은 수신 개념 문서를 참조하세요.

참고 항목

이 기능을 사용하려면 컨테이너 앱 CLI 확장이 있어야 합니다. 최신 버전의 컨테이너 앱 CLI 확장을 설치하려면 az extension add -n containerapp을 실행합니다.

TCP 포트 구성을 사용하여 YAML 파일을 참조하여 CLI를 통해 추가 TCP 포트를 추가할 수 있습니다.

az containerapp create \
    --name <app-name> \
    --resource-group <resource-group> \
    --yaml <your-yaml-file>

다음은 위의 CLI 명령에서 참조할 수 있는 YAML 파일 예제입니다. 추가 TCP 포트에 대한 구성은 additionalPortMappings 아래에 있습니다.

location: northcentralus
name: multiport-example
properties:
  configuration:
    activeRevisionsMode: Single
    ingress:
      additionalPortMappings:
      - exposedPort: 21025
        external: false
        targetPort: 1025
      allowInsecure: false
      external: true
      targetPort: 1080
      traffic:
      - latestRevision: true
        weight: 100
      transport: http
  managedEnvironmentId: <env id>
  template:
    containers:
    - image: maildev/maildev
      name: maildev
      resources:
        cpu: 0.25
        memory: 0.5Gi
    scale:
      maxReplicas: 1
      minReplicas: 1
  workloadProfileName: Consumption
type: Microsoft.App/containerApps

이 기능은 Azure Portal에서 지원되지 않습니다.

다음 ARM 템플릿은 컨테이너 앱에 포트를 추가하는 방법의 예를 제공합니다. 컨테이너 앱에 대한 properties 내에서 configuration을 위해 ingress 섹션 내의 additionalPortMappings 아래에 각 추가 포트를 추가해야 합니다. 다음은 이에 대한 예입니다.

{
  ...
  "properties": {
    ...
    "configuration": {
      "ingress": {
        ...
        "additionalPortMappings": [
          {
            "external": false
            "targetPort": 80
            "exposedPort": 12000
          }
        ]
      }
    }
  ...
}

다음 단계