Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
可用性
重要
此功能在 API 管理的“高级”和“开发人员”层中可用。
本文提供了用于配置 API 管理自承载网关容器的必需设置和可选设置的参考。
若要详细了解我们的 (Kubernetes) 生产指南,建议阅读此文章。
重要
此参考仅适用于自托管网关 v2。 我们提供了支持进行设置的最低版本。
配置 API 集成
配置 API 可供自承载网关用于连接到 Azure 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.endpoint.disableCertificateValidation | 定义自承载网关是否应验证配置 API 的服务器端证书。 建议使用证书验证,仅出于测试目的禁用,并谨慎使用,因为它可能会带来安全风险。 | 否 | false |
v2.0+ |
自承载网关可为一些身份验证选项提供支持,以与可以使用 config.service.auth
定义的配置 API 集成。
本指南可帮助你提供定义如何进行身份验证所需的信息:
- 对于基于网关令牌的身份验证,请在 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)。 |
否 | 假 | v2.5+ |
Kubernetes 集成
Kubernetes 入口
重要
对 Kubernetes 入口的支持目前是试验性的,不包含在 Azure 支持中。 在 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 导出程序标记格式。 值是以下选项之一:ibrato 、dogStatsD 、influxDB 。 |
否 | 不可用 | v2.0+ |
telemetry.metrics.cloud | 指示是否启用向 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 指标的直方图 Bucket。 格式:“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 、warn 、error 或 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 时,将图表配置设置作为参数传递给 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