云原生网关Higress介绍与部署指南
文章目录
- Higress从0到1:云原生网关介绍与部署指南
- 一、什么是 Higress
- 核心能力矩阵
- 与传统网关的核心差异
- 二、环境准备
- 1. 前置工具清单
- 2. 资源规划建议
- 三、部署操作:
- 单机 Docker 快速部署
- 步骤 1:拉取官方镜像
- 步骤 2:创建配置文件
- 步骤 3:启动 Higress 服务
- 步骤 4:验证部署
- 四、核心实战:基础路由配置
- 案例 1:配置 HTTP 路由转发到后端服务
- 案例 2:配置限流规则(保护后端服务)
- 五、常见问题排查
- 六、参考资源
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 原生服务 | 存量系统迁移、多云架构部署 |
与传统网关的核心差异
特性维度 | Higress | Nginx/APISIX |
---|---|---|
架构基础 | 基于 Envoy,云原生原生设计 | 基于 Nginx 内核,需适配云原生 |
服务网格支持 | 内置 Istio 控制面能力,无需额外部署 | 需通过插件间接集成 |
动态配置 | 秒级热更新,无重启损耗 | 部分配置需 reload 生效 |
可扩展性 | 基于 WASM 插件生态,扩展灵活 | 基于 Lua/Go 插件,生态相对局限 |
二、环境准备
1. 前置工具清单
部署场景 | 必需工具 | 版本要求 |
---|---|---|
单机 Docker 部署 | Docker | 20.10.0+ |
2. 资源规划建议
- 单机部署:CPU ≥ 2 核,内存 ≥ 4GB,磁盘 ≥ 20GB
三、部署操作:
单机 Docker 快速部署
步骤 1:拉取官方镜像
\# 拉取最新稳定版镜像(当前为1.3.0)docker pull higress.io/higress-gateway:1.3.0docker pull higress.io/higress-console:1.3.0
步骤 2:创建配置文件
新建config.yaml
(基础路由配置示例):
apiVersion: networking.higress.io/v1kind: Gatewaymetadata:name: default-gatewaynamespace: higress-systemspec:selector:higress.io/gateway: defaultlisteners:- port: 80protocol: HTTPname: httphostname: "\*"---apiVersion: networking.higress.io/v1kind: VirtualServicemetadata:name: demo-routenamespace: higress-systemspec:hosts:- "\*"gateways:- default-gatewayhttp:- match:- uri:prefix: /demoroute:- destination:host: httpbin.orgport: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 路由转发到后端服务
- 通过控制台配置:
-
进入「流量管理」→「虚拟服务」→「创建」
-
填写主机名
api.example.com
,添加路由规则:路径/user/*
转发到服务user-service:8080
-
点击「发布」,秒级生效
2 通过 YAML 配置:
apiVersion: networking.higress.io/v1kind: VirtualServicemetadata:name: user-service-routenamespace: defaultspec:hosts:- "api.example.com"gateways:- higress-system/default-gatewayhttp:- match:- uri:prefix: /user/route:- destination:host: user-service.default.svc.cluster.localport:number: 8080
应用配置:kubectl apply -f user-route.yaml
案例 2:配置限流规则(保护后端服务)
apiVersion: networking.higress.io/v1kind: RateLimitmetadata:name: user-api-limitnamespace: defaultspec:targetRef:kind: VirtualServicename: user-service-routerateLimits:- actions:- requestHeader:name: "X-User-ID" # 按用户ID限流limit:requests: 100 # 每分钟100次请求duration: 60
五、常见问题排查
- 路由配置不生效:
-
检查网关关联:VirtualService 的
gateways
字段需包含目标 Gateway -
验证域名解析:确保请求 Host 头匹配 VirtualService 的
hosts
字段
- 镜像拉取失败:
- 配置阿里云镜像加速:
sudo mkdir -p /etc/docker && echo '{"registry-mirrors":["``https://xxxx.mirror.aliyuncs.com``"]}' | sudo tee /etc/docker/daemon.json && sudo systemctl restart docker
- 限流规则不生效:
-
确认 RateLimit 的 targetRef 指向正确的 VirtualService
-
检查请求头是否包含限流维度字段(如 X-User-ID)
六、参考资源
- 官方文档:[https://higress.io/docs/](https://higress.io/docs/)