Share via


在 Azure Container Apps 中設定應用程式的輸入

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

輸入設定

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

屬性 描述 必要
allowInsecure 允許不安全的流量傳送到您的容器應用程式。 當設定為 true 埠 80 的 HTTP 要求時,不會使用 HTTPS 自動重新導向至埠 443,允許不安全的連線。 false (預設值), true 啟用不安全的連線 No
clientCertificateMode mTLS 驗證的客戶端憑證模式。 Ignore 表示伺服器在轉送時卸除客戶端憑證。 Accept 表示伺服器轉送客戶端憑證,但不需要客戶端憑證。 Require 表示伺服器需要客戶端憑證。 Required、、 AcceptIgnore (預設值) No
customDomains Container Apps 主機名的自定義網域系結。 請參閱 自定義網域和憑證 系結的陣列 No
exposedPort (僅限 TCP 輸入)埠 TCP 會接聽。 如果 externaltrue,則值在 Container Apps 環境中必須是唯一的。 1 到的 65535埠號碼。 ( 不能 80 是 或 443 No
external 允許從其 Container Apps 環境外部輸入您的應用程式。 truefalse(預設值) Yes
ipSecurityRestrictions IP 輸入限制。 請參閱 設定IP輸入限制 規則陣列 No
stickySessions.affinity 啟用 會話親和性 none (預設值), sticky No
targetPort 容器接聽傳入要求的埠。 將此值設定為容器所使用的埠號碼。 針對 HTTP 輸入,應用程式輸入端點一律會在埠 443上公開。 Yes
traffic 流量分割 權數會分割修訂。 規則陣列 No
transport 傳輸通訊協議類型。 auto (預設值) 會針對 HTTP/1 http2 偵測 HTTP/1 或 HTTP/2,http針對 HTTP/2,針對 TCP 偵測 HTTP/2tcp 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 外部 允許從任何地方輸入您的應用程式,或限制其內部 Container Apps 環境的輸入。 externalinternal Yes
--allow-insecure allowInsecure 允許 HTTP 連線到您的應用程式。 No
--target-port targetPort 容器接聽傳入要求的埠。 將此值設定為容器所使用的埠號碼。 應用程式輸入端點一律會在埠 443上公開。 Yes
--exposed-port exposedPort (僅限 TCP 輸入)TCP 輸入的埠。 如果 externaltrue,則如果輸入是外部的,則值在 Container Apps 環境中必須是唯一的。 1 到的 65535埠號碼。 ( 不能 80 是 或 443 No
--transport transport 傳輸通訊協議類型。 auto (預設值) 會針對 HTTP/1 http2 偵測 HTTP/1 或 HTTP/2,http針對 HTTP/2,針對 TCP 偵測 HTTP/2tcp No

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

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

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

開啟容器應用程式的輸入:

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

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

容器應用程式的 [輸入設定] 頁面也可讓您設定IP限制。 如需設定IP限制的資訊,請參閱 IP限制

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

  • transport將 設定為 auto 以偵測 HTTP/1 或 HTTP/2、 http HTTP/1、 http2 HTTP/2 或 tcp TCP。
  • targetPort將設定為容器所使用的埠號碼。 應用程式輸入端點一律會在埠 443上公開。
  • exposedPort如果傳輸類型是 tcp 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.configurationingress以停用容器應用程式的輸入。

使用其他 TCP 連接埠

您可以從應用程式公開其他 TCP 連接埠。 若要深入瞭解,請參閱 輸入概念一文

注意

若要使用這項功能,您必須具有容器應用程式 CLI 擴充功能。 執行 az extension add -n containerapp 以安裝最新版的容器應用程式 CLI 擴充功能。

藉由參考 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 區段configurationingress應該新增additionalPortMappings每個額外的埠。 以下是一個範例:

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

下一步