配置 GatewayAPI Gateway
目录
前提条件通过 Web 控制台配置通过 YAML 配置介绍服务类型LoadBalancer(推荐)NodePortClusterIP监听器监听器支持的类型允许的路由命名空间TLS主机名监听器主机名与路由主机名的交集规则配套 EnvoyProxy镜像仓库下一步前提条件
请确保您已阅读安装文档后再继续操作。
通过 Web 控制台配置
-
进入
Alauda Container Platform -> Networking -> Gateways -
点击
Create Gateway按钮 -
在
Create Gateway页面选择 GatewayClass 下的envoy-gateway-operator-cpaas-default,将显示以下配置选项:WARNINGWeb 控制台表单仅支持由
EnvoyGatewayCtl创建的 GatewayClasses。对于其他 GatewayClasses,请使用 YAML 编辑器。NOTE使用
EnvoyGatewayCtl创建的GatewayClass时,Web 控制台会自动创建一个与 Gateway 名称和命名空间匹配的配套 envoyproxy 资源。
通过 YAML 配置
- 配套 envoyproxy
- 指定所属的
GatewayClass - 监听器
- 监听器主机名
- 监听器支持的类型
- 监听器允许的命名空间
- TLS 配置
- 配套 envoyproxy 的名称
- 服务类型
- 请保持并勿修改默认的镜像仓库值
envoy-proxy 实例的资源配置- 请保持并勿修改
介绍
服务类型
服务类型本质上配置了网关的暴露方式。共有三种模式:LoadBalancer、NodePort 和 ClusterIP。
LoadBalancer(推荐)
优点是使用方便,且具备高可用的负载均衡能力。 要使用 LoadBalancer,集群必须支持 LoadBalancer,可以通过MetalLB启用。
NodePort
优点是不依赖任何外部组件。
但使用 NodePort 有以下缺点:
- 只能用于节点数少于 16 的集群,否则网关状态可能异常。
- 使用 NodePort 时,Kubernetes 会分配与服务端口不同的 NodePort 端口号。访问时必须使用 NodePort 端口号,而非服务端口。
- 服务可通过集群中任意节点 IP 访问,存在潜在安全风险。
使用 NodePort 时如何获取正确端口
输出即为 NodePort 端口号。
ClusterIP
如果不需要外部暴露,非常方便。
监听器
监听器定义了网关监听的端口和协议。 在 HTTP 或 HTTPS 协议下,不同的主机名可视为不同的监听器。
不能创建端口、协议或主机名冲突的监听器。
Gateway 中必须至少创建一个监听器。
监听器支持的类型
每个监听器根据协议支持不同的路由类型:
配置路由时,确保路由类型与监听器协议匹配。例如,不能将 HTTPRoute 附加到 TCP 监听器。
允许的路由命名空间
默认情况下,路由只能附加到同一命名空间的 Gateway。若允许跨命名空间路由,需要通过 allowedRoutes 字段指定允许附加路由的命名空间。
详情请参考附加到其他命名空间创建的 Gateway。
TLS
默认只能使用同一命名空间创建的 secret,否则请参考使用其他命名空间创建的 secret。
默认使用 Terminate 模式,其他模式请参考ssl passthrough。
主机名
监听器中的主机名是同协议监听器的唯一标识,不能在网关中添加或更新冲突的监听器。
监听器主机名与路由主机名的交集规则
请求到达时,会匹配监听器主机名与路由主机名的交集,只有交集中的主机名用于流量路由。
通配符(*)执行后缀匹配。例如,*.example.com 匹配 foo.example.com 和 bar.example.com,但不匹配 example.com。
无交集时,路由状态异常,无法处理流量。
配套 EnvoyProxy
Envoy Gateway 提供了不同粒度的网关部署控制方式。建议为每个 Gateway 创建专用的 EnvoyProxy 资源,并通过 Gateway 的 .spec.infrastructure.parametersRef 字段引用。
这种一对一映射方式能更好地隔离并细粒度控制部署配置,如副本数、资源和调度约束。
其他部署配置方式请参考 deployment-mode。
镜像仓库
这是默认值,会被当前集群的实际镜像仓库替换,请勿修改。