Azure Container Apps 中的輸入

Azure 容器應用程式可讓您藉由啟用輸入,向公用網路、虛擬網路 (VNET) 和其他容器應用程式公開您的容器應用程式。 輸入設定會透過一組規則強制執行,以控制外部和內部流量到容器應用程式的路由傳送。 啟用輸入時,您不需要建立 Azure Load Balancer、公用 IP 位址或任何其他 Azure 資源來啟用內送的 HTTP 要求或 TCP 流量。

輸入支援:

此輸入設定範例顯示兩個修訂版本之間的輸入分割:

Diagram showing an ingress configuration splitting traffic between two revisions.

如需設定詳細數據,請參閱 設定輸入

外部和內部輸入

啟用輸入時,您可以選擇兩種類型的輸入:

  • 外部:接受來自公用網際網路和容器應用程式內部環境的流量。
  • 內部:只允許來自容器應用程式環境的內部存取。

您可以使用不同的輸入設定來設定環境中的每一個容器應用程式。 例如,在具有多個微服務應用程式的案例中,若要提高安全性,您可能會有單一容器應用程式接收公用要求,並將要求傳遞至背景服務。 在此案例中,您可使用外部輸入來設定對外公開的容器應用程式,並使用內部輸入來設定內部使用的容器應用程式。

通訊協定類型

容器應用程式支援兩種輸入通訊協定:HTTP 和 TCP。

HTTP

啟用 HTTP 輸入後,您的容器應用程式具有下列特性:

  • 支援 TLS 終止
  • 支援 HTTP/1.1 和 HTTP/2
  • 支援 WebSocket 和 gRPC
  • 一律使用 TLS 1.2 或 1.3 的 HTTPS 端點在輸入點終止
  • 公開連接埠 80(適用於 HTTP) 和 443 的端點(適用於 HTTPS)
    • 根據預設,傳送至連接埠 80 的 HTTP 要求會自動重新導向至 443 的 HTTPS
  • 完整網域名稱 (FQDN)
  • 要求逾時為 240 秒

HTTP 標頭

HTTP 輸入會新增標頭,以將用戶端要求的相關元數據傳遞至您的容器應用程式。 例如, X-Forwarded-Proto 標頭用來識別用戶端用來與 Container Apps 服務連線的通訊協定。 下表列出與容器應用程式中輸入相關的 HTTP 標頭:

標頭 描述
X-Forwarded-Proto 用戶端用來與 Container Apps 服務連線的通訊協定。 httphttps
X-Forwarded-For 傳送要求的用戶端IP位址。
X-Forwarded-Host 用戶端用來與 Container Apps 服務連線的主機名。
X-Forwarded-Client-Cert 如果 clientCertificateMode 已設定,則為客戶端憑證。 哈希、憑證和鏈結的分號分隔清單。 例如:Hash=....;Cert="...";Chain="...";

TCP

容器應用程式支援 HTTP 或 HTTPS 以外的 TCP 型通訊協定。 例如,您可以使用 TCP 輸入來公開使用 Redis 通訊協定容器應用程式。

注意

只有使用 自定義 VNET 的 Container Apps 環境才支援外部 TCP 輸入。

啟用 TCP 輸入後,您的容器應用程式具有下列特性:

  • 可透過相同環境中的其他容器應用程式名稱存取它(由 name Container Apps 資源中的 屬性定義)和公開的埠號碼。
  • 在輸入設為 [外部] 時,可透過其完整網域名稱 (FQDN) 和公開的連接埠號碼存取。

其他 TCP 連接埠

除了容器應用程式的主要 HTTP/TCP 連接埠之外,您還可以公開其他 TCP 連接埠,以啟用在多個埠上接受 TCP 連線的應用程式。

注意

此功能需要使用容器應用程式 CLI 擴充功能的最新預覽版本。

下列適用於其他 TCP 連接埠:

  • 只有在應用程式本身設定為外部,且容器應用程式使用自定義 VNet 時,其他 TCP 連接埠才能是外部埠。
  • 任何外部公開的其他 TCP 埠在整個 Container Apps 環境中都必須是唯一的。 這包括所有外部額外的 TCP 連接埠、外部主要 TCP 連接埠,以及內建 HTTP 輸入所使用的 80/443 埠。 如果其他埠是內部埠,則多個應用程式可以共用相同的埠。
  • 如果未提供公開的埠,公開的埠預設會符合目標埠。
  • 每個目標埠都必須是唯一的,而且相同的目標埠無法在不同的公開埠上公開。
  • 每個應用程式最多有5個額外的埠。 如果需要其他埠,請開啟支援要求。
  • 只有主要輸入埠支援內建 HTTP 功能,例如 CORS 和會話親和性。 在額外的 TCP 連接埠上執行 HTTP 時,不支援這些內建功能。

如需如何為容器應用程式啟用其他埠的詳細資訊,請流覽如何撰寫輸入文章。

網域名稱

您可以透過下列方式存取您的應用程式:

  • 默認的完整功能變數名稱 (FQDN):容器應用程式環境中的每個應用程式都會根據環境的 DNS 後綴自動指派 FQDN。 若要自定義環境的 DNS 後綴,請參閱 自定義環境 DNS 後綴
  • 自定義功能變數名稱:您可以為 Container Apps 環境設定自定義 DNS 網域。 如需詳細資訊,請參閱 自定義功能變數名稱和憑證
  • 應用程式名稱:您可以使用應用程式名稱在相同環境中的應用程式之間進行通訊。

若要取得應用程式的 FQDN,請參閱 位置

IP 限制

Container Apps 支援輸入的IP限制。 您可以建立規則來設定容器應用程式允許或拒絕存取的IP位址。 如需詳細資訊,請參閱 設定IP限制

驗證

Azure Container Apps 提供內建的驗證和授權功能,以保護您已啟用外部輸入的容器應用程式。 如需詳細資訊,請參閱 Azure Container Apps 中的驗證和授權。

您可以設定應用程式以支援客戶端憑證 (mTLS) 進行驗證和流量加密。 如需詳細資訊,請參閱 設定客戶端憑證

如需如何使用 mTLS 進行環境層級網路加密的詳細資訊,請參閱 網路功能概觀

流量分割

容器應用程式可讓您分割使用中修訂之間的連入流量。 當您定義分割規則時,您會將輸入流量的百分比指派給不同的修訂。 如需詳細資訊,請參閱 流量分割

工作階段親和性

會話親和性,也稱為黏性會話,是一項功能,可讓您將所有 HTTP 要求從用戶端路由傳送至相同的容器應用程式複本。 這項功能適用於需要相同複本一致連線的具狀態應用程式。 如需詳細資訊,請參閱 會話親和性

跨原始資源分享 (CORS)

根據預設,會封鎖透過瀏覽器從頁面到不符合頁面來源網域網域之網域的任何要求。 為避免部署至 Container Apps 的服務有此限制,您可以啟用跨原始來源資源分享 (CORS)。

如需詳細資訊,請參閱 在 Azure Container Apps 中設定 CORS。

下一步