文章目录
- Higress从0到1:云原生网关介绍与部署指南
-
-
- [一、什么是 Higress](#一、什么是 Higress)
- 二、环境准备
-
- [1. 前置工具清单](#1. 前置工具清单)
- [2. 资源规划建议](#2. 资源规划建议)
- 三、部署操作:
-
- [单机 Docker 快速部署](#单机 Docker 快速部署)
-
- [步骤 1:拉取官方镜像](#步骤 1:拉取官方镜像)
- [步骤 2:创建配置文件](#步骤 2:创建配置文件)
- [步骤 3:启动 Higress 服务](#步骤 3:启动 Higress 服务)
- [步骤 4:验证部署](#步骤 4:验证部署)
- 四、核心实战:基础路由配置
-
- [案例 1:配置 HTTP 路由转发到后端服务](#案例 1:配置 HTTP 路由转发到后端服务)
- [案例 2:配置限流规则(保护后端服务)](#案例 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.0
docker pull higress.io/higress-console:1.3.0
步骤 2:创建配置文件
新建config.yaml
(基础路由配置示例):
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 路由转发到后端服务
- 通过控制台配置:
-
进入「流量管理」→「虚拟服务」→「创建」
-
填写主机名
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
五、常见问题排查
- 路由配置不生效:
-
检查网关关联: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)