在 Azure Container Apps 中設定應用程式的輸入
本文說明如何啟用 容器應用程式的輸入 功能。 輸入是整個應用程式的設定。 輸入設定的變更會同時套用至所有修訂,而且不會產生新的修訂。
輸入設定
您可以設定下列輸入樣本屬性:
屬性 | 描述 | 值 | 必要 |
---|---|---|---|
allowInsecure |
允許不安全的流量傳送到您的容器應用程式。 當設定為 true 埠 80 的 HTTP 要求時,不會使用 HTTPS 自動重新導向至埠 443,允許不安全的連線。 |
false (預設值), true 啟用不安全的連線 |
No |
clientCertificateMode |
mTLS 驗證的客戶端憑證模式。 Ignore 表示伺服器在轉送時卸除客戶端憑證。 Accept 表示伺服器轉送客戶端憑證,但不需要客戶端憑證。 Require 表示伺服器需要客戶端憑證。 | Required 、、 Accept Ignore (預設值) |
No |
customDomains |
Container Apps 主機名的自定義網域系結。 請參閱 自定義網域和憑證 | 系結的陣列 | No |
exposedPort |
(僅限 TCP 輸入)埠 TCP 會接聽。 如果 external 為 true ,則值在 Container Apps 環境中必須是唯一的。 |
從 1 到的 65535 埠號碼。 ( 不能 80 是 或 443 ) |
No |
external |
允許從其 Container Apps 環境外部輸入您的應用程式。 | true 或 false (預設值) |
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 環境的輸入。 | external 或 internal |
Yes |
--allow-insecure |
allowInsecure | 允許 HTTP 連線到您的應用程式。 | No | |
--target-port |
targetPort | 容器接聽傳入要求的埠。 | 將此值設定為容器所使用的埠號碼。 應用程式輸入端點一律會在埠 443 上公開。 |
Yes |
--exposed-port |
exposedPort | (僅限 TCP 輸入)TCP 輸入的埠。 如果 external 為 true ,則如果輸入是外部的,則值在 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 入口網站,在建立容器應用程式時設定輸入。
- 將 [輸入] 設定為 [已啟用]。
- 設定容器應用程式的輸入設定。
- 針對 內部輸入選取 [限制為容器應用程式環境 ] 或 [接受來自任何位置 的流量] 進行外部輸入。
- 選取輸入 類型: HTTP 或 TCP (TCP 輸入僅適用於使用自訂 VNET 設定的環境)。
- 如果已針對輸入類型選取 HTTP,請選取 [傳輸:自動]、[HTTP/1] 或 [HTTP/2]。
- 如果您想要允許 HTTP 連線到您的應用程式,請選取 [不安全 的連線]。
- 輸入容器應用程式的目標埠。
- 如果您已針對 [傳輸] 選項選擇 [TCP],請輸入容器應用程式的 [公開埠]。 公開的連接埠號碼可以是
1
65535
。 ( 不能80
是 或443
)
容器應用程式的 [輸入設定] 頁面也可讓您設定IP限制。 如需設定IP限制的資訊,請參閱 IP限制。
使用 ingress
組態屬性啟用容器應用程式的輸入。 將 external
屬性設定為 true
,並將與 transport
targetPort
屬性設定為 。
-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> \
您可以使用入口網站停用容器應用程式的輸入。
- 從容器應用程式頁面的 [設定] 功能選取 [輸入]。
- 取消選取 [已啟用輸入] 設定。
- 選取 [儲存]。
藉由完全省略組態屬性properties.configuration
,ingress
以停用容器應用程式的輸入。
使用其他 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
區段configuration
內ingress
應該新增additionalPortMappings
每個額外的埠。 以下是一個範例:
{
...
"properties": {
...
"configuration": {
"ingress": {
...
"additionalPortMappings": [
{
"external": false
"targetPort": 80
"exposedPort": 12000
}
]
}
}
...
}