适用于:开发人员 | 高级
本文提供了用于配置 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 启用本地指标收集。 值是以下选项之一:none、statsd。 |
否 | 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 导出程序标记格式。 值是以下选项之一:librato、dogStatsD、influxDB。 |
否 | 不可用 | 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 |
启用记录到标准流。 值是以下选项之一:none、text、json。 |
否 | text |
v2.0+ |
| telemetry.logs.std.level | 定义发送到标准流的日志日志层级。 值是以下选项之一:all, debug, info, warnerror, 。fatal |
否 | info |
v2.0+ |
| telemetry.logs.std.color | 指示是否在标准流中使用彩色原木。 | 否 | true |
v2.0+ |
| telemetry.logs.local |
启用本地日志记录。 值是以下选项之一:none、auto、localsyslog、rfc5424、journal、json |
否 | 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