配置 TCP 四层路由
前置准备
- Higress 安装在 K8s 内的 higress-system 命名空间下,网关的 Service 名称为 higress-gateway;
- 目标是为 default 命名空间下的 tcp-echo 服务配置一个四层路由,服务监听的端口为 9000,网关监听的端口也为 9000;
- 路由使用 Gateway API CRD 进行配置,需要提前配置 Higress 使其支持监听 Gateway API。参考文档:文档
配置步骤
1. 创建 GatewayClass
- 创建
gatewayclass.yaml
文件,并写入以下内容:apiVersion: gateway.networking.k8s.io/v1kind: GatewayClassmetadata:name: higress-gatewayspec:controllerName: "higress.io/gateway-controller" - 执行命令,将以上配置写入 K8s 集群:
Terminal window kubectl apply -f gatewayclass.yaml
2. 创建 Gateway
- 创建
gateway.yaml
文件,并写入以下内容:apiVersion: gateway.networking.k8s.io/v1kind: Gatewaymetadata:name: higress-gatewaynamespace: higress-systemspec:gatewayClassName: higress-gatewaylisteners:- name: default-tcpprotocol: TCPport: 9000allowedRoutes:namespaces:from: Allkinds:- kind: TCPRoute - 执行命令,将以上配置写入 K8s 集群:
Terminal window kubectl apply -f gateway.yaml
3. 修改 higress-gateway
Service
- 执行命令,进度
higress-gateway
Service 的编辑状态:Terminal window kubectl edit service higress-gateway -n higress-system - 在
spec.ports
列表中增加对9000
的端口的描述信息。增加后的配置如下所示:...ports:- name: http2port: 80protocol: TCPtargetPort: 80- name: httpsport: 443protocol: TCPtargetPort: 443# --- 此处为增加的配置 ---- name: tcpport: 9000protocol: TCPtargetPort: 9000# ----------------------... - 保存编辑内容并退出编辑器。
4. 创建 TCPRoute
- 创建
tcproute.yaml
文件,并写入以下内容:apiVersion: gateway.networking.k8s.io/v1alpha2kind: TCPRoutemetadata:name: tcp-echonamespace: defaultspec:parentRefs:- name: higress-gatewaynamespace: higress-systemport: 9000rules:- backendRefs:- name: tcp-echoport: 9000 - 执行命令,将以上配置写入 K8s 集群:
Terminal window kubectl apply -f tcproute.yaml
5. 配置验证
配置完成。我们可以通过 telnet higress-gateway service 的 9000 端口等方式验证路由是否能够正常工作。