配置 GatewayAPI Policy
目录
概述前提条件Policy Attachment 基础Policy Attachment 概览在 Web Console 中创建 PolicySecurityPolicy通过 Web Console 配置API Key AuthenticationCORS Configuration通过 YAML 配置参考功能工作原理说明官方文档BackendTLSPolicy通过 Web Console 配置通过 YAML 配置参考功能说明官方文档ClientTrafficPolicy通过 Web Console 配置通过 YAML 配置参考功能说明官方文档BackendTrafficPolicy通过 Web Console 配置通过 YAML 配置参考功能说明官方文档相关任务概述
本文档说明在 Gateway 和 Route 资源就绪后,如何配置 policy 资源。Policy 通过 .spec.targetRefs 使用 Policy Attachment 模式,将额外的流量、安全和后端行为附加到受支持的资源上。
在推荐的工作流中,本文档位于 配置 GatewayAPI Route 之后。
Envoy Gateway 目前提供四种 policy 类型:SecurityPolicy、BackendTLSPolicy、ClientTrafficPolicy 和
BackendTrafficPolicy。
前提条件
在继续之前,请确保你已完成以下操作:
- 阅读 配置 GatewayAPI Gateway 和 配置 GatewayAPI Route
- 创建 policy 将要附加到的目标资源,例如
Gateway、Route或Service
Policy Attachment 基础
Policy 通过 .spec.targetRefs 附加到其他资源。
默认情况下,policy 只能附加到同一命名空间中的资源。
对于 Gateway 目标,当 policy 类型支持时,可以使用 sectionName 指定某个特定的 listener。对于
Service 目标,sectionName 表示 Service 端口名称。
Policy Attachment 概览
sectionName 用于指定 Gateway 上的特定 listener,或 Service 上的特定端口。若省略,或设置为 ALL,则该 policy 适用于所有 listener 或端口。
在 Web Console 中创建 Policy
所有 policy 类型都从同一个入口创建:
- 导航到
Alauda Container Platform -> Networking -> Gateway -> Policies - 在
Policy Type下拉列表中选择所需值 - 点击
Create Policy按钮
以下章节仅关注各 policy 类型特有的字段。
SecurityPolicy
通过 Web Console 配置
通用字段(所有 policy 共享):
SecurityPolicy 特有字段:
API Key Authentication
CORS Configuration
通过 YAML 配置
参考
SecurityPolicy 用于为你的 Gateway 和 Route 配置认证、授权以及其他安全相关功能。它提供了一种声明式方式,可在请求到达后端应用之前验证传入请求,从而保护你的服务。
功能
- 认证:使用多种方法验证客户端身份(API Key、JWT、OIDC、Basic Auth)
- 授权:基于已验证的凭据控制对资源的访问
- CORS Configuration:管理跨域资源共享策略
工作原理
- 使用你需要的认证/授权规则创建 SecurityPolicy
- 将其附加到特定的 Gateway、HTTPRoute 或 GRPCRoute
- Envoy Gateway 根据该 policy 验证传入请求
- 合法请求将转发到后端服务;非法请求将返回相应的 HTTP 状态码并被拒绝
说明
- Web Console 当前支持配置 API Key Authentication 和 CORS。对于其他认证方式和高级安全功能,需要使用 YAML 配置。
- 每个 Route 只能关联一个 SecurityPolicy。
- 如果 SecurityPolicy 引用了一个没有值的 secret,则所有发送到该附加 route 的请求都会被拒绝,并返回
401 Unauthorized。 - 在 Web Console 中,默认情况下,
Extract From字段设置为header,Header Name字段设置为authorization。 - 你可以通过在 Web Console 中导航到 Route 的 topology 选项卡 来查看某个 route 关联了哪些 policy。
官方文档
BackendTLSPolicy
通过 Web Console 配置
通用字段:
BackendTLSPolicy 特有字段:
CACertificateRefs 配置:
在创建或选择 CA 证书 secret 时:
- secret 类型必须适用于 CA 证书
- 键必须为
ca.crt - 你可以导入证书文件,该文件必须以
-----BEGIN CERTIFICATE-----开头,并以-----END CERTIFICATE-----结尾 - 当导入无效的证书格式时,将显示错误信息 "must contain PEM-encoded TLS certificates"
- 当选择一个不存在
ca.crt键的现有 secret 时,将显示错误信息 "must have ca.crt key"
通过 YAML 配置
参考
BackendTLSPolicy 控制 Envoy Gateway 与后端服务之间的 TLS 配置。它允许你配置:
- SNI (Server Name Indication):建立到后端的 TLS 连接时使用的 hostname
- Certificate Validation:如何验证后端服务器证书
- CA Certificates:用于验证后端证书的自定义 CA 证书
功能
- 为连接到后端服务的连接配置 TLS 设置
- 支持自定义 CA 证书或系统已知 CA 证书
- 提供正确 TLS 握手所需的 SNI 配置
说明
targetRefs中的sectionName对应于 Service 的端口名称。- 使用
WellKnownCACertificates时,验证将使用系统默认 CA 证书。 - hostname 为必填项,并在 Envoy 连接后端时用作 SNI 值。
官方文档
ClientTrafficPolicy
通过 Web Console 配置
通用字段:
超时配置(选项):
通过 YAML 配置
参考
ClientTrafficPolicy 控制来自客户端到 Envoy Gateway 的连接行为。它提供了对以下内容的细粒度控制:
- TCP Settings:连接级超时和 keepalive 设置
- HTTP Settings:请求/响应超时和 HTTP 协议行为
功能
- 配置 TCP 连接空闲超时
- 控制 HTTP 请求接收超时
- 设置 HTTP 连接空闲超时
- 配置 HTTP stream 空闲超时
说明
- 超时值以持续时间字符串指定(例如
"30s"、"5m"、"1h")。
官方文档
BackendTrafficPolicy
通过 Web Console 配置
通用字段:
超时配置(选项):
通过 YAML 配置
参考
BackendTrafficPolicy 控制从 Envoy Gateway 到后端服务的连接行为。它提供了对以下内容的细粒度控制:
- TCP Settings:连接建立超时
- HTTP Settings:连接持续时间、空闲超时和请求超时
功能
- 配置 TCP 连接建立超时
- 控制 HTTP 连接空闲超时
- 设置 HTTP 连接最长持续时间
- 配置 HTTP 请求超时
说明
- 超时值以持续时间字符串指定(例如
"30s"、"5m"、"1h")。 requestTimeout字段支持设置为"unlimited"以禁用超时。
官方文档
相关任务
在附加 policy 之后,继续查看 Envoy Gateway 的任务,了解更多 运维示例和高级配置任务。