参考:自承载网关容器配置设置

适用于:开发人员 | 高级

本文提供了用于配置 API 管理自承载网关容器的必需设置和可选设置的参考。

欲了解更多信息,请参阅 在生产环境中运行Kubernetes自托管网关的指南

重要

此参考仅适用于自托管网关 v2。 本参考文献标注了支持每个设置的最低版本。

配置 API 集成

自托管网关使用配置API连接Azure API 管理,获取最新配置,并在启用时发送指标。

下表描述了配置API集成的配置选项:

名称 说明 需要 默认 可用性
gateway.name 自承载网关资源的 ID。 是,在使用 Microsoft Entra 身份验证时 不可用 v2.3+
config.service.endpoint Azure API 管理中用于自托管网关的配置终结点。 在 Azure 门户中的“网关”“部署”下找到此值。 不可用 v2.0+
config.service.auth 定义了自托管网关如何向配置API进行认证。 目前,该网关支持网关令牌和 Microsoft Entra 认证。 不可用 v2.0+
config.service.auth.azureAd.tenantId Microsoft Entra 租户的 ID。 是,在使用 Microsoft Entra 身份验证时 不可用 v2.3+
config.service.auth.azureAd.clientId 要用于进行身份验证的 Microsoft Entra 应用的客户端 ID(也称为应用程序 ID)。 是,在使用 Microsoft Entra 身份验证时 不可用 v2.3+
config.service.auth.azureAd.clientSecret 要用于进行身份验证的 Microsoft Entra 应用的机密。 是的,使用Microsoft Entra认证时(除非你指定证书) 不可用 v2.3+
config.service.auth.azureAd.certificatePath 用于对 Microsoft Entra 应用进行身份验证的证书的路径。 是的,使用Microsoft Entra认证时(除非你指定了密钥) 不可用 v2.3+
config.service.auth.azureAd.authority Microsoft Entra ID 的颁发机构 URL。 https://login.partner.microsoftonline.cn v2.3+
config.service.auth.tokenAudience Microsoft Entra认证令牌的受众。 https://azure-api.cn/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定义这些选项。

为了定义认证方式,请提供以下信息:

  • 对于基于网关令牌的身份验证,请在 Azure 门户的“网关”“部署”下指定自承载网关的访问令牌(身份验证密钥)。
  • 对于基于 Microsoft Entra ID 的身份验证,请指定 azureAdApp 并提供其他 config.service.auth.azureAd 身份验证设置。

跨实例发现与同步

名称 说明 需要 默认 可用性
neighborhood.host 用于解析自承载网关部署的所有实例以实现跨实例同步的 DNS 名称。 在 Kubernetes 中,使用无头服务来解析实例。 不可用 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)。 不可用 v2.4+

指标

名称 说明 需要 默认 可用性
telemetry.metrics.local 通过 StatsD 启用本地指标收集。 值是以下选项之一:nonestatsd none v2.0+
telemetry.metrics.local.statsd.endpoint StatsD 终结点。 如果 telemetry.metrics.local 设置为 statsd,则为“是”;否则为“否”。 不可用 v2.0+
telemetry.metrics.local.statsd.sampling StatsD 指标采样率。 值必须介于 0 和 1 之间,例如 0.5。 不可用 v2.0+
telemetry.metrics.local.statsd.tag-format StatsD 导出程序标记格式。 值是以下选项之一:libratodogStatsDinfluxDB 不可用 v2.0+
telemetry.metrics.cloud 指示是否启用 emitting metrics to Azure Monitor true v2.0+
observability.opentelemetry.enabled 指示是否启用 向 Kubernetes 上的 OpenTelemetry 收集器发送度量 false v2.0+
observability.opentelemetry.collector.uri 要将指标发送到的 OpenTelemetry 收集器的 URI。 如果 observability.opentelemetry.enabled 设置为 true,则为“是”;否则为“否”。 不可用 v2.0+
observability.opentelemetry.system-metrics.enabled 启用向 OpenTelemetry 收集器发送系统指标,如 CPU、内存和垃圾回收。 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 启用记录到标准流。 值是以下选项之一:nonetextjson text v2.0+
telemetry.logs.std.level 定义发送到标准流的日志日志层级。 值是以下选项之一:alldebuginfowarnerror, 。fatal info v2.0+
telemetry.logs.std.color 指示是否在标准流中使用彩色原木。 true v2.0+
telemetry.logs.local 启用本地日志记录。 值是以下选项之一:noneautolocalsyslogrfc5424journaljson auto v2.0+
telemetry.logs.local.localsyslog.endpoint localsyslog 终结点。 如果 telemetry.logs.local 设置为 localsyslog,则为“是”;否则为“否”。 有关配置的更多详细信息,请参阅本地 syslog 文档 不可用 v2.0+
telemetry.logs.local.localsyslog.facility 指定 localsyslog 设备代码(例如 7)。 不可用 v2.0+
telemetry.logs.local.rfc5424.endpoint rfc5424 终结点。 如果 telemetry.logs.local 设置为 rfc5424,则为“是”;否则为“否”。 不可用 v2.0+
telemetry.logs.local.rfc5424.facility 每个 rfc5424 的设备代码(例如 7 不可用 v2.0+
telemetry.logs.local.journal.endpoint 日志终结点。 如果 telemetry.logs.local 设置为 journal,则为“是”;否则为“否”。 不可用 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证书。 需要以 root 身份或用户 ID 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
config.service.auth.tokenAudience https://azure-api.cn/configuration
logs.applicationinsights.endpoint https://dc.applicationinsights.azure.cn/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.cn"
        telemetry.logs.std: "text"
        telemetry.logs.local.localsyslog.endpoint: "/dev/log"
        telemetry.logs.local.localsyslog.facility: "7"

[...]

Helm 图表

当你用 Helm 部署自托管网关到Kubernetes时,将 chart配置设置 作为参数传递给 helm install 命令。 例如:

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