请确保您已阅读安装文档后再继续操作。
进入 Alauda Container Platform -> Networking -> Gateways
点击 Create Gateway 按钮
在 Create Gateway 页面选择 GatewayClass 下的 envoy-gateway-operator-cpaas-default,将显示以下配置选项:
| 字段 | 说明 | YAML 路径 |
|---|---|---|
| Name | 名称 | gateway: .metadata.nameenvoygateway: .metadata.name |
| GatewayClass | 使用的 GatewayClass | gateway: .spec.gatewayClassName |
| Service Type | 服务类型 | envoygateway: .spec.provider.kubernetes.envoyService.type |
| Service Annotation | 服务注解 | envoygateway: .spec.provider.kubernetes.envoyService.annotations |
| Resource Limits | 部署资源限制 | envoygateway: .spec.provider.kubernetes.envoyDeployment.container.resources |
| Replicas | 部署副本数 | envoygateway: .spec.provider.kubernetes.envoyService.replicas |
| Node Labels | 部署节点标签 | envoygateway: .spec.provider.kubernetes.envoyService.nodeSelector |
| Listener | 监听器 | gateway: .spec.listeners |
Web 控制台表单仅支持由 EnvoyGatewayCtl 创建的 GatewayClasses。对于其他 GatewayClasses,请使用 YAML 编辑器。
使用 EnvoyGatewayCtl 创建的 GatewayClass 时,Web 控制台会自动创建一个与 Gateway 名称和命名空间匹配的配套 envoyproxy 资源。
GatewayClassenvoy-proxy 实例 的资源配置服务类型本质上配置了网关的暴露方式。共有三种模式:LoadBalancer、NodePort 和 ClusterIP。
优点是使用方便,且具备高可用的负载均衡能力。 要使用 LoadBalancer,集群必须支持 LoadBalancer,可以通过MetalLB启用。
优点是不依赖任何外部组件。
但使用 NodePort 有以下缺点:
输出即为 NodePort 端口号。
如果不需要外部暴露,非常方便。
监听器定义了网关监听的端口和协议。 在 HTTP 或 HTTPS 协议下,不同的主机名可视为不同的监听器。
不能创建端口、协议或主机名冲突的监听器。
Gateway 中必须至少创建一个监听器。
每个监听器根据协议支持不同的路由类型:
| 监听器协议 | 支持的路由类型 |
|---|---|
| HTTP | HTTPRoute |
| HTTPS | HTTPRoute, GRPCRoute |
| TLS | TLSRoute |
| TCP | TCPRoute |
| UDP | UDPRoute |
配置路由时,确保路由类型与监听器协议匹配。例如,不能将 HTTPRoute 附加到 TCP 监听器。
默认情况下,路由只能附加到同一命名空间的 Gateway。若允许跨命名空间路由,需要通过 allowedRoutes 字段指定允许附加路由的命名空间。
详情请参考附加到其他命名空间创建的 Gateway。
默认只能使用同一命名空间创建的 secret,否则请参考使用其他命名空间创建的 secret。
默认使用 Terminate 模式,其他模式请参考ssl passthrough。
监听器中的主机名是同协议监听器的唯一标识,不能在网关中添加或更新冲突的监听器。
请求到达时,会匹配监听器主机名与路由主机名的交集,只有交集中的主机名用于流量路由。
| 监听器主机名 | 路由主机名 | 交集结果 | 示例 |
|---|---|---|---|
| 无主机名 | 无主机名 | 匹配所有主机 | 接受任何传入的 Host 头 |
| 无主机名 | 有主机名(如 api.example.com) | 全部路由主机名 | 仅匹配 api.example.com 的请求 |
有主机名(如 api.example.com) | 无主机名 | 全部监听器主机名 | 仅匹配 api.example.com 的请求 |
有主机名(如 api.example.com) | 有完全匹配的主机名(如 api.example.com) | 精确匹配主机名 | 仅匹配 api.example.com 的请求 |
有通配符(如 *.example.com) | 有匹配的主机名(如 api.example.com、web.example.com) | 匹配具体主机名 | 匹配 api.example.com 或 web.example.com 的请求 |
有主机名(如 api.example.com) | 有不匹配的主机名(如 web.example.com) | 无交集 - 路由状态异常 | 路由无法处理流量 |
通配符(*)执行后缀匹配。例如,*.example.com 匹配 foo.example.com 和 bar.example.com,但不匹配 example.com。
无交集时,路由状态异常,无法处理流量。
Envoy Gateway 提供了不同粒度的网关部署控制方式。建议为每个 Gateway 创建专用的 EnvoyProxy 资源,并通过 Gateway 的 .spec.infrastructure.parametersRef 字段引用。
这种一对一映射方式能更好地隔离并细粒度控制部署配置,如副本数、资源和调度约束。
其他部署配置方式请参考 deployment-mode。
这是默认值,会被当前集群的实际镜像仓库替换,请勿修改。