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

適用於:開發人員 | 進階

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

欲了解更多資訊,請參閱 在 Kubernetes 生產環境中運行自架閘道器的指引。

重要

此參考僅適用於自我裝載閘道 v2。 此參考文獻標示支援每個設定的最小版本。

設定 API 整合

自架閘道器使用 Configuration API 連接 Azure API 管理,取得最新設定,並在啟用時傳送指標。

下表說明了 Configuration API 整合的設定選項:

名稱 描述 是必要欄位 預設 可用性
gateway.name 自我裝載閘道資源的標識碼。 是,使用 Microsoft Entra 驗證時 N/A v2.3+
config.service.endpoint 自我裝載閘道的 Azure API 管理 組態端點。 在 [閘道[Azure 入口網站 中尋找此值。 是的 N/A v2.0+
config.service.auth 定義自架閘道如何向配置 API 進行認證。 目前,閘道支援閘道令牌及 Microsoft Entra 認證。 是的 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。 否 https://login.microsoftonline.com v2.3+
config.service.auth.tokenAudience Microsoft Entra 認證的令牌對象。 否 https://azure-api.net/configuration v2.3+
config.service.endpoint.disableCertificateValidation 定義自架閘道是否驗證配置 API 的伺服器端憑證。 在生產環境中使用憑證驗證。 只在測試時停用,並小心使用,因為可能會帶來安全風險。 否 false v2.0+
config.service.integration.timeout 定義與組態 API 互動的逾時。 否 00:01:40 v2.3.5+

自架閘道支援多種認證選項,以整合組態 API。 請用 config.service.auth定義這些選項。

要定義如何驗證,請提供以下資訊:

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

跨實例發現與同步

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

HTTP

名稱 描述 是必要欄位 預設 可用性
net.server.http.forwarded.proto.enabled 尊重 X-Forwarded-Proto 標頭以識別解析被呼叫 API 路由的方案(僅限 http/https)。 否 false v2.5+

Kubernetes 集成

Kubernetes Ingress (preview)

重要

Kubernetes Ingress 的支援還在實驗階段,Azure 支援不涵蓋。 想了解更多,請參考 Kubernetes Ingress 的 GitHub 倉庫。

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

度量

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

記錄

名稱 描述 是必要欄位 預設 可用性
telemetry.logs.std 啟用標準數據流的記錄 。 值是下列其中一個選項:none、、 textjson。 否 text v2.0+
telemetry.logs.std.level 定義傳送到標準串流的日誌層級。 值為以下選項之一:all、、debuginfo、warnerror、或fatal。 否 info v2.0+
telemetry.logs.std.color 標示是否在標準串流中使用彩色原木。 否 true v2.0+
telemetry.logs.local 啟用本機記錄。 值是下列其中一個選項:none、、auto、localsyslog、rfc5424、 journaljson 否 auto v2.0+
遙測.日誌.本地.local系統日誌.端點 localsyslog 端點。 如果 telemetry.logs.local 設定為 ,則為 localsyslog,否則為 。否則為 。 如需設定的詳細資訊,請參閱 本機 syslog 檔 。 N/A v2.0+
telemetry.logs.local.localsyslog.facility 指定 localsyslog 裝置程式代碼,例如 7。 否 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 否 N/A v2.0+
遙測.日誌.本地.日誌.端點 日誌端點。 如果 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 身分執行自我裝載閘道。 否 false v2.0+
net.server.tls.ciphers.allowed-suites 提供用於 API 用戶端與自架閘道器之間 TLS 連線的逗號分隔密碼列表。 否 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 連線的逗號分隔密碼清單。 否 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 開啟或關閉證書撤銷清單驗證。 否 false v2.3.6+

TLS

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

主權雲端

下表說明你必須設定的設定,才能與主權雲運作:

名稱 公開 Azure 中國 US Gov
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