代码改变世界

完整教程:云原生网关Higress介绍与部署指南

2025-10-10 14:35  tlnshuju  阅读(19)  评论(0)    收藏  举报

Higress从0到1:云原生网关介绍与部署指南

一、什么是 Higress

Higress 是阿里云主导的开源云原生网关,基于 Istio 与 Envoy 构建,融合了 API 网关、服务网格(Service Mesh)、安全网关的核心能力,核心价值在于统一流量入口管理,为微服务、Serverless、AI 应用提供高性能、高可用的流量治理解决方案。

核心能力矩阵
能力模块核心价值应用场景示例
全量流量治理支持 HTTP/HTTPS/GRPC/WebSocket,含路由、负载均衡、限流熔断微服务 API 网关、前端静态资源代理
服务网格集成无缝对接 Istio,兼具数据面与控制面能力混合云服务治理、跨集群服务通信
企业级安全防护WAF 防护、JWT 鉴权、HTTPS 加密、IP 黑白名单对外 API 安全、内部服务访问控制
低代码可视化管控控制台图形化配置,支持 YAML/UI 双模式运维高效配置、权限精细化管理
多生态适配兼容 Spring Cloud、Dubbo、K8s 原生服务存量系统迁移、多云架构部署
与传统网关的核心差异
特性维度HigressNginx/APISIX
架构基础基于 Envoy,云原生原生设计基于 Nginx 内核,需适配云原生
服务网格支持内置 Istio 控制面能力,无需额外部署需通过插件间接集成
动态配置秒级热更新,无重启损耗部分配置需 reload 生效
可扩展性基于 WASM 插件生态,扩展灵活基于 Lua/Go 插件,生态相对局限

二、环境准备

1. 前置工具清单
部署场景必需工具版本要求
单机 Docker 部署Docker20.10.0+
2. 资源规划建议
  • 单机部署:CPU ≥ 2 核,内存 ≥ 4GB,磁盘 ≥ 20GB

三、部署操作:

单机 Docker 快速部署
步骤 1:拉取官方镜像
\# 拉取最新稳定版镜像(当前为1.3.0)
docker pull higress.io/higress-gateway:1.3.0
docker pull higress.io/higress-console:1.3.0
步骤 2:创建配置文件

新建config.yaml(基础路由配置示例):

apiVersion: networking.higress.io/v1
kind: Gateway
metadata:
name: default-gateway
namespace: higress-system
spec:
selector:
higress.io/gateway: default
listeners:
- port: 80
protocol: HTTP
name: http
hostname: "\*"
---
apiVersion: networking.higress.io/v1
kind: VirtualService
metadata:
name: demo-route
namespace: higress-system
spec:
hosts:
- "\*"
gateways:
- default-gateway
http:
- match:
- uri:
prefix: /demo
route:
- destination:
host: httpbin.org
port:
number: 80
步骤 3:启动 Higress 服务
# 创建自定义网络
docker network create higress-network
# 启动控制面(含控制台)
docker run -d --name higress-console \\
--network higress-network \\
-p 8080:8080 \\
-v \$(pwd)/config.yaml:/etc/higress/config.yaml \\
higress.io/higress-console:1.3.0
# 启动数据面(网关代理)
docker run -d --name higress-gateway \\
--network higress-network \\
-p 80:80 -p 443:443 \\
-e "HIGRESS\_CONSOLE\_ADDR=http://higress-console:8080" \\
higress.io/higress-gateway:1.3.0
步骤 4:验证部署
# 测试基础路由转发
curl http://localhost/demo/get
# 预期返回httpbin.org的/get接口响应
# 访问控制台(默认账号密码:admin/admin)
open http://localhost:8080

四、核心实战:基础路由配置

案例 1:配置 HTTP 路由转发到后端服务
  1. 通过控制台配置
  • 进入「流量管理」→「虚拟服务」→「创建」

  • 填写主机名api.example.com,添加路由规则:路径/user/*转发到服务user-service:8080

  • 点击「发布」,秒级生效

2 通过 YAML 配置

apiVersion: networking.higress.io/v1
kind: VirtualService
metadata:
name: user-service-route
namespace: default
spec:
hosts:
- "api.example.com"
gateways:
- higress-system/default-gateway
http:
- match:
- uri:
prefix: /user/
route:
- destination:
host: user-service.default.svc.cluster.local
port:
number: 8080

应用配置:kubectl apply -f user-route.yaml

案例 2:配置限流规则(保护后端服务)
apiVersion: networking.higress.io/v1
kind: RateLimit
metadata:
name: user-api-limit
namespace: default
spec:
targetRef:
kind: VirtualService
name: user-service-route
rateLimits:
- actions:
- requestHeader:
name: "X-User-ID" # 按用户ID限流
limit:
requests: 100 # 每分钟100次请求
duration: 60

五、常见问题排查

  1. 路由配置不生效
  • 检查网关关联:VirtualService 的gateways字段需包含目标 Gateway

  • 验证域名解析:确保请求 Host 头匹配 VirtualService 的hosts字段

  1. 镜像拉取失败
  • 配置阿里云镜像加速:sudo mkdir -p /etc/docker && echo '{"registry-mirrors":["``https://xxxx.mirror.aliyuncs.com``"]}' | sudo tee /etc/docker/daemon.json && sudo systemctl restart docker
  1. 限流规则不生效
  • 确认 RateLimit 的 targetRef 指向正确的 VirtualService

  • 检查请求头是否包含限流维度字段(如 X-User-ID)

六、参考资源

  • 官方文档:[https://higress.io/docs/](https://higress.io/docs/)