共用方式為


在 Azure 容器應用程式中設定應用程式輸入

本文顯示如何啟用容器應用程式的輸入功能。 輸入是全應用程式設定。 輸入設定的變更會同時套用至所有修訂,而且不會產生新的修訂。

輸入設定

您可以設定下列輸入範本屬性:

屬性 描述 必要
allowInsecure 允許不安全的流量流向您的容器應用程式。 如果設定為 true,則不會使用 HTTPS 自動將連接埠 80 的 HTTP 要求重新導向至連接埠 443,而允許不安全的連線。 false (預設值),true 會啟用不安全的連線 No
clientCertificateMode mTLS 驗證的用戶端憑證模式。 忽略表示伺服器在轉送時卸除用戶端憑證。 接受表示伺服器轉送用戶端憑證,但不需要用戶端憑證。 要求表示伺服器需要用戶端憑證。 RequiredAcceptIgnore (預設值) No
customDomains 容器應用程式主機名稱的自訂網域繫結。 參閱自定義網域和憑證 (部分機器翻譯) 繫結的陣列 No
exposedPort (僅限 TCP 輸入) 接聽連接埠 TCP。 如果 externaltrue,則值在容器應用程式環境中必須唯一。 165535 的連接埠號碼。 (不可為 80443) No
external 允許從容器應用程式環境外部輸入您的應用程式。 truefalse (預設值) Yes
ipSecurityRestrictions IP 輸入限制。 參閱設定 IP 輸入限制 (部分機器翻譯) 規則的陣列 No
stickySessions.affinity 啟用工作階段同質 none (預設),sticky No
targetPort 容器接聽傳入要求的連接埠。 將此值設定為容器所使用的連接埠號碼。 若要進行 HTTP 輸入,應用程式輸入端點一律會在連接埠 443 上公開。 Yes
traffic 流量分割會在修訂之間分割進行加權。 規則的陣列 No
transport 傳輸通訊協定類型。 自動 (預設值) 會偵測 HTTP/1 或 HTTP/2、HTTP/1 的 http、HTTP/2 的 http2、用於 TCP 的 tcp No

啟用輸入

您可以使用 Azure CLI、ARM 範本或 Azure 入口網站來設定容器應用程式的輸入。

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 輸入引數:

選項 屬性 描述 必要
--type external 允許從任何地方輸入您的應用程式,或限制其內部容器應用程式環境進行輸入。 externalinternal Yes
--allow-insecure allowInsecure 允許 HTTP 連線到您的應用程式。 No
--target-port targetPort 容器接聽傳入要求的連接埠。 將此值設定為容器所使用的連接埠號碼。 應用程式輸入端點一律會在連接埠 443 上公開。 Yes
--exposed-port exposedPort (僅限 TCP 輸入) TCP 輸入連接埠。 若 externaltrue,此值在輸入為外部輸入時,其在容器應用程式環境中必須唯一。 165535 的連接埠號碼。 (不可為 80443) No
--transport transport 傳輸通訊協定類型。 自動 (預設值) 會偵測 HTTP/1 或 HTTP/2、HTTP/1 的 http、HTTP/2 的 http2、用於 TCP 的 tcp No

使用入口網站針對您的容器應用程式啟用輸入。

您可以在建立容器應用程式時啟用輸入,也可以為現有容器應用程式啟用輸入。

  • 若要在建立容器應用程式時設定輸入,請從容器應用程式建立精靈的「應用程式組態」索引標籤選取「輸入」。
  • 若要設定現有容器應用程式的輸入,請從容器應用程式資源頁面的「設定」功能表中選取「輸入」。

針對您的容器應用程式啟用輸入:

您可以使用 Azure 入口網站,在建立容器應用程式時設定輸入。

  1. 將「輸入」設定為「已啟用」。
  2. 設定容器應用程式的輸入。
  3. 針對內部輸入選取「限制為容器應用程式環境」,或「接受來自任何位置的流量」進行外部輸入。
  4. 選取「輸入類型」:HTTPTCP (TCP 輸入僅適用於使用自訂 VNET 設定的環境)。
  5. 如果已針對「輸入類型」選取 HTTP,請選取「傳輸」:自動HTTP/1HTTP/2
  6. 如果您想要允許應用程式的 HTTP 連線,請選取「不安全的連線」。
  7. 輸入容器應用程式的「目標連接埠」。
  8. 如果您已針對「傳輸」選項選取「TCP」,請輸入容器應用程式的「公開連接埠」。 公開連接埠號碼可為 165535。 (不可為 80443)

容器應用程式的「輸入」設定頁面也可讓您設定 IP 限制。 如需設定 IP 限制的資訊,請參閱 IP 限制 (部分機器翻譯)。

使用 ingress 設定屬性,針對容器應用程式啟用輸入。 將 external 屬性設定為 true,並設定 transporttargetPort 屬性。
-external 屬性可針對外部設為 true,或針對內部輸入設為 false

  • transport 設為 auto 以偵測 HTTP/1 或 HTTP/2、HTTP/1 的 http、HTTP/2 的 http2、用於 TCP 的 tcp
  • targetPort 設為容器使用的連接埠號碼。 應用程式輸入端點一律會在連接埠 443 上公開。
  • 如果傳輸類型是 TCP 輸入連接埠的 tcp,請設定 exposedPort 屬性。 若輸入為外部輸入時,則該值在容器應用程式環境中必須唯一。 從 165535 的連接埠號碼。 (不可為 80443)
{
  ...
  "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

藉由參考 YAML 檔案與 TCP 連接埠設定,即可透過 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 入口網站不支援此功能。

下列 ARM 範本提供如何將其他連接埠新增至容器應用程式的範例。 若為容器應用程式 properties 內的 configuration ,則應該在 ingress 區段內的 additionalPortMappings 底下新增每個額外的連接埠。 以下是一個範例:

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

下一步