在 Azure 容器應用程式中設定應用程式輸入
本文顯示如何啟用容器應用程式的輸入功能。 輸入是全應用程式設定。 輸入設定的變更會同時套用至所有修訂,而且不會產生新的修訂。
輸入設定
您可以設定下列輸入範本屬性:
屬性 | 描述 | 值 | 必要 |
---|---|---|---|
allowInsecure |
允許不安全的流量流向您的容器應用程式。 如果設定為 true ,則不會使用 HTTPS 自動將連接埠 80 的 HTTP 要求重新導向至連接埠 443,而允許不安全的連線。 |
false (預設值),true 會啟用不安全的連線 |
No |
clientCertificateMode |
mTLS 驗證的用戶端憑證模式。 忽略表示伺服器在轉送時卸除用戶端憑證。 接受表示伺服器轉送用戶端憑證,但不需要用戶端憑證。 要求表示伺服器需要用戶端憑證。 | Required 、Accept 、Ignore (預設值) |
No |
customDomains |
容器應用程式主機名稱的自訂網域繫結。 參閱自定義網域和憑證 (部分機器翻譯) | 繫結的陣列 | No |
exposedPort |
(僅限 TCP 輸入) 接聽連接埠 TCP。 如果 external 為 true ,則值在容器應用程式環境中必須唯一。 |
從 1 到 65535 的連接埠號碼。 (不可為 80 或 443 ) |
No |
external |
允許從容器應用程式環境外部輸入您的應用程式。 | true 或 false (預設值) |
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 | 允許從任何地方輸入您的應用程式,或限制其內部容器應用程式環境進行輸入。 | external 或 internal |
Yes |
--allow-insecure |
allowInsecure | 允許 HTTP 連線到您的應用程式。 | No | |
--target-port |
targetPort | 容器接聽傳入要求的連接埠。 | 將此值設定為容器所使用的連接埠號碼。 應用程式輸入端點一律會在連接埠 443 上公開。 |
Yes |
--exposed-port |
exposedPort | (僅限 TCP 輸入) TCP 輸入連接埠。 若 external 為 true ,此值在輸入為外部輸入時,其在容器應用程式環境中必須唯一。 |
從 1 到 65535 的連接埠號碼。 (不可為 80 或 443 ) |
No |
--transport |
transport | 傳輸通訊協定類型。 | 自動 (預設值) 會偵測 HTTP/1 或 HTTP/2、HTTP/1 的 http 、HTTP/2 的 http2 、用於 TCP 的 tcp 。 |
No |
使用入口網站針對您的容器應用程式啟用輸入。
您可以在建立容器應用程式時啟用輸入,也可以為現有容器應用程式啟用輸入。
- 若要在建立容器應用程式時設定輸入,請從容器應用程式建立精靈的「應用程式組態」索引標籤選取「輸入」。
- 若要設定現有容器應用程式的輸入,請從容器應用程式資源頁面的「設定」功能表中選取「輸入」。
針對您的容器應用程式啟用輸入:
您可以使用 Azure 入口網站,在建立容器應用程式時設定輸入。
- 將「輸入」設定為「已啟用」。
- 設定容器應用程式的輸入。
- 針對內部輸入選取「限制為容器應用程式環境」,或「接受來自任何位置的流量」進行外部輸入。
- 選取輸入 類型: HTTP 或 TCP (TCP 輸入僅適用於使用自訂虛擬網路設定的環境)。
- 如果已針對「輸入類型」選取 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/1 的http
、HTTP/2 的http2
、用於 TCP 的tcp
。 - 將
targetPort
設為容器使用的連接埠號碼。 應用程式輸入端點一律會在連接埠443
上公開。 - 如果傳輸類型是 TCP 輸入連接埠的
tcp
,請設定exposedPort
屬性。 若輸入為外部輸入時,則該值在容器應用程式環境中必須唯一。 從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 延伸模組。 若要安裝最新版的容器應用程式 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
- 展開 [輸入] 刀鋒視窗中的 [ 其他 TCP 連接埠 ] 區段。
- 在 [目標埠] 字段中新增應用程式將接受流量 的其他 TCP 連接埠 。 如果 [公開的埠] 保留空白,這會取自目標埠中設定的相同值。
- 視需要變更輸入流量欄位。 這會設定每個埠的輸入流量限制在何處。
- 完成時,按一下 [儲存]。
下列 ARM 範本提供如何將其他連接埠新增至容器應用程式的範例。 若為容器應用程式 properties
內的 configuration
,則應該在 ingress
區段內的 additionalPortMappings
底下新增每個額外的連接埠。 以下是一個範例:
{
...
"properties": {
...
"configuration": {
"ingress": {
...
"additionalPortMappings": [
{
"external": false
"targetPort": 80
"exposedPort": 12000
}
]
}
}
...
}