分享方式:


參考:自我裝載閘道容器組態設定

適用於:開發人員 | 進階

本文提供必要和選擇性設定的參考,這些設定可用來設定 API 管理 自我裝載網關容器

若要深入瞭解我們的 (Kubernetes) 生產指導方針,建議您閱讀 這篇文章

重要

此參考僅適用於自我裝載閘道 v2。 提供設定可用性的最低版本。

設定 API 整合

自我裝載閘道會使用組態 API 來連線到 Azure API 管理,以在啟用時取得最新的設定和傳送計量。

以下是所有組態選項的概觀:

名稱 描述 是必要欄位 預設 可用性
gateway.name 自我裝載閘道資源的標識碼。 是,使用 Microsoft Entra 驗證時 N/A v2.3+
config.service.endpoint 自我裝載閘道的 Azure API 管理 組態端點。 在 [閘道>部署] 底下的 [Azure 入口網站 中尋找此值。 Yes N/A v2.0+
config.service.auth 定義自我裝載閘道應該如何向組態 API 進行驗證。 目前支援閘道令牌和Microsoft Entra 驗證。 Yes N/A v2.0+
config.service.auth.azureAd.tenantId Microsoft Entra 租用戶的標識碼。 是,使用 Microsoft Entra 驗證時 N/A v2.3+
config.service.auth.azureAd.clientId 要驗證之Microsoft Entra 應用程式的用戶端標識碼(也稱為應用程式識別符)。 是,使用 Microsoft Entra 驗證時 N/A v2.3+
config.service.auth.azureAd.clientSecret 要驗證之Microsoft Entra 應用程式的秘密。 是,使用 Microsoft Entra 驗證時(除非指定憑證) N/A v2.3+
config.service.auth.azureAd.certificatePath 要針對 Microsoft Entra 應用程式進行驗證的憑證路徑。 是,使用 Microsoft Entra 驗證時(除非指定秘密) N/A v2.3+
config.service.auth.azureAd.authority Microsoft Entra 標識符的授權 URL。 No https://login.microsoftonline.com v2.3+
config.service.auth.tokenAudience 用於Microsoft Entra 驗證的令牌物件 No https://azure-api.net/configuration v2.3+
config.service.endpoint.disableCertificateValidation 定義自我裝載閘道是否應該驗證組態 API 的伺服器端憑證。 建議您使用憑證驗證,只針對測試目的停用,並謹慎謹慎,因為它可能會帶來安全性風險。 No false v2.0+
config.service.integration.timeout 定義與組態 API 互動的逾時。 No 00:01:40 v2.3.5+

自我裝載閘道提供一些驗證選項的支援,以與可使用 config.service.auth來定義的組態 API 整合。

本指南可協助您提供必要資訊來定義如何驗證:

  • 針對閘道令牌型驗證,請在 [閘道>部署] 底下的 Azure 入口網站 [網關部署] 下,指定自我裝載閘道的存取令牌(驗證密鑰)。
  • 針對Microsoft以專案標識碼為基礎的驗證,請指定 azureAdApp 並提供其他 config.service.auth.azureAd 驗證設定。

跨實例探索和同步處理

名稱 描述 是必要欄位 預設 可用性
neighborhood.host DNS 名稱,用來解析跨實例同步處理之自我裝載網關部署的所有實例。 在 Kubernetes 中,可以使用無前端服務來達成。 No N/A v2.0+
neighborhood.heartbeat.port 用於自我裝載網關部署實例的 UDP 埠,以將活動訊號傳送至其他實例。 No 4291 v2.0+
policy.rate-limit.sync.port 用於自我裝載網關實例的 UDP 連接埠,可跨多個實例同步處理速率限制。 No 4290 v2.0+

HTTP

名稱 描述 是必要欄位 預設 可用性
net.server.http.forwarded.proto.enabled 允許 X-Forwarded-Proto 標頭識別配置,以解析稱為 API 路由的配置(僅限 HTTP/https)。 No false v2.5+

Kubernetes 整合

Kubernetes 輸入

重要

Kubernetes 輸入的支援目前為實驗性,但未涵蓋透過 Azure 支援。 深入瞭解 GitHub

名稱 描述 是必要欄位 預設 可用性
k8s.ingress.enabled 啟用 Kubernetes 輸入整合。 No false v1.2+
k8s.ingress.namespace 用來監看 Kubernetes 輸入資源的 Kubernetes 命名空間。 No default v1.2+
k8s.ingress.dns.suffix DNS 後綴,用來建置要傳送要求的服務的 DNS 主機名。 No svc.cluster.local v2.4+
k8s.ingress.config.path Kubernetes 組態的路徑(Kubeconfig)。 No N/A v2.4+

度量

名稱 描述 是必要欄位 預設 可用性
telemetry.metrics.local 透過 StatsD 啟用 本機計量集合 。 值是下列其中一個選項:、nonestatsd No none v2.0+
telemetry.metrics.local.statsd.endpoint StatsD 端點。 是,如果 telemetry.metrics.local 設定為 ,則為 statsd,否則為 。 N/A v2.0+
telemetry.metrics.local.statsd.sampling StatsD 計量取樣率。 值必須介於 0 到 1 之間,例如 0.5。 No N/A v2.0+
telemetry.metrics.local.statsd.tag-format StatsD 匯出工具的標記格式。 值是下列其中一個選項:ibrato、、 dogStatsDinfluxDB No N/A v2.0+
telemetry.metrics.cloud 指示是否要 啟用向 Azure 監視器發出計量。 No true v2.0+
observability.opentelemetry.enabled 指出是否要在 Kubernetes 上啟用 向 OpenTelemetry 收集器 發出計量。 No false v2.0+
observability.opentelemetry.collector.uri 要傳送計量的 OpenTelemetry 收集器的 URI。 是,如果 observability.opentelemetry.enabled 設定為 ,則為 true,否則為 。 N/A v2.0+
observability.opentelemetry.system-metrics.enabled 啟用將系統計量傳送至 OpenTelemetry 收集器,例如 CPU、記憶體、垃圾收集等。 No false v2.3+
observability.opentelemetry.histogram.buckets 應該報告 OpenTelemetry 計量的直方圖貯體。 格式:“x,y,z,...”。 No "5,10,25,50,100,250,500,1000,2500,5000,10000" v2.0+

記錄

名稱 描述 是必要欄位 預設 可用性
telemetry.logs.std 啟用標準數據流的記錄 。 值是下列其中一個選項:none、、 textjson No text v2.0+
telemetry.logs.std.level 定義傳送至標準數據流的記錄層級。 值是下列其中一個選項:all、、debuginfowarnerrorfatal No info v2.0+
telemetry.logs.std.color 指示是否應該在標準數據流中使用彩色記錄。 No true v2.0+
telemetry.logs.local 啟用本機記錄。 值是下列其中一個選項:none、、autolocalsyslogrfc5424journaljson No auto v2.0+
telemetry.logs.local.localsyslog.endpoint localsyslog 端點。 如果 telemetry.logs.local 設定為 ,則為 localsyslog,否則為 。否則為 。 如需設定的詳細資訊,請參閱 本機 syslog 檔 N/A v2.0+
telemetry.logs.local.localsyslog.facility 指定 localsyslog 裝置程式代碼,例如 7 No N/A v2.0+
telemetry.logs.local.rfc5424.endpoint rfc5424 端點。 如果 telemetry.logs.local 設定為 ,則為 rfc5424,否則為 。否則為 。 N/A v2.0+
telemetry.logs.local.rfc5424.facility 例如,每個 rfc5424 的設施程序代碼 7 No N/A v2.0+
telemetry.logs.local.journal.endpoint 日誌端點。 如果 telemetry.logs.local 設定為 ,則為 journal,否則為 。否則為 。 N/A v2.0+
telemetry.logs.local.json.endpoint 接受 JSON 數據的 UDP 端點,指定為檔案路徑、IP:埠或主機名:埠。 如果 telemetry.logs.local 設定為 ,則為 json,否則為 。否則為 。 127.0.0.1:8888 v2.0+

安全性

憑證和加密

名稱 描述 是必要欄位 預設 可用性
certificates.local.ca.enabled 指出自我裝載網關是否應該使用掛接的本機 CA 憑證。 必須以根目錄或使用者標識碼 1001 身分執行自我裝載閘道。 No false v2.0+
net.server.tls.ciphers.allowed-suites 要用於 API 用戶端與自我裝載閘道之間 TLS 連線的逗號分隔密碼清單。 No TLS_AES_256_GCM_SHA384,TLS_CHACHA20_POLY1305_SHA256,TLS_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256,TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA v2.0+
net.client.tls.ciphers.allowed-suites 自我裝載閘道與後端之間用於 TLS 連線的逗號分隔密碼清單。 No TLS_AES_256_GCM_SHA384,TLS_CHACHA20_POLY1305_SHA256,TLS_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256,TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA v2.0+
security.certificate-revocation.validation.enabled 提供開啟/關閉證書吊銷清單驗證的功能 No false v2.3.6+

TLS

名稱 描述 是必要欄位 預設 可用性
Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls13 指示是否允許TLS 1.3 進入後端。 類似於 在受控網關中管理通訊協定加密。 No true v2.0+
Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls12 指示是否允許TLS 1.2 進入後端。 類似於 在受控網關中管理通訊協定加密。 No true v2.0+
Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls11 指示是否允許TLS 1.1 進入後端。 類似於 在受控網關中管理通訊協定加密。 No false v2.0+
Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls10 指示是否允許TLS 1.0 進入後端。 類似於 在受控網關中管理通訊協定加密。 No false v2.0+
Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Ssl30 指出是否允許 SSL 3.0 進入後端。 類似於 在受控網關中管理通訊協定加密。 No false v2.0+

主權雲端

以下是需要設定才能使用主權雲端的設定概觀:

名稱 公開 Azure 中國 美國政府
config.service.auth.tokenAudience https://azure-api.net/configuration (預設值) https://azure-api.cn/configuration https://azure-api.us/configuration
logs.applicationinsights.endpoint https://dc.services.visualstudio.com/v2/track (預設值) https://dc.applicationinsights.azure.cn/v2/track https://dc.applicationinsights.us/v2/track

如何進行設定

Kubernetes YAML 檔案

使用 YAML 檔案將自我裝載閘道部署至 Kubernetes 時,請將設定設定設定為閘道 ConfigMap 元素中的 data 名稱/值組。 例如:

apiVersion: v1
    kind: ConfigMap
    metadata:
        name: contoso-gateway-environment
    data:
        config.service.endpoint: "contoso.configuration.azure-api.net"
        telemetry.logs.std: "text"
        telemetry.logs.local.localsyslog.endpoint: "/dev/log"
        telemetry.logs.local.localsyslog.facility: "7"

[...]

Helm 圖表

使用 Helm 將自我裝載閘道部署至 Kubernetes 時,請將圖表組態設定當做參數傳遞helm install命令。 例如:

helm install azure-api-management-gateway \
    --set gateway.configuration.uri='contoso.configuration.azure-api.net' \
    --set gateway.auth.key='GatewayKey contosogw&xxxxxxxxxxxxxx...' \
    --set secret.createSecret=false \
    --set secret.existingSecretName=`mysecret` \
    azure-apim-gateway/azure-api-management-gateway

下一步