简介:本文详细解析Higress开源网关的部署、配置及使用全流程,涵盖环境准备、安装部署、核心功能配置及实战案例,帮助开发者快速掌握企业级流量治理能力。
Higress 是阿里巴巴开源的下一代云原生网关,基于 Envoy 构建并深度集成 Istio 生态,提供高性能、低延迟的流量治理能力。其核心价值体现在三方面:
相较于传统网关(如 Nginx、Kong),Higress 的优势在于与云原生生态的无缝集成,支持声明式配置和自动化运维。典型应用场景包括微服务架构的流量治理、Kubernetes 集群的南北向流量管理、以及多云环境下的统一网关层。
| 组件 | 最低配置 | 推荐配置 |
|---|---|---|
| 服务器 | 2核4G(开发环境) | 4核8G(生产环境) |
| 操作系统 | Linux(CentOS 7+/Ubuntu 20.04+) | 同左 |
| Kubernetes | v1.19+ | v1.22+ |
| 存储 | 10GB 可用空间 | 50GB SSD |
Kubernetes 集群:
# 使用 kubeadm 初始化集群(示例)kubeadm init --pod-network-cidr=10.244.0.0/16mkdir -p $HOME/.kubecp -i /etc/kubernetes/admin.conf $HOME/.kube/config
Helm 3:
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3chmod 700 get_helm.sh./get_helm.sh
证书管理工具(可选):
# 安装 cert-manager 用于自动签发证书kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.11.0/cert-manager.yaml
LimitRange 和 ResourceQuota 防止资源耗尽。添加 Higress Helm 仓库:
helm repo add higress https://higress.io/helm-chartshelm repo update
创建命名空间:
kubectl create namespace higress-system
自定义配置(可选):
# values-custom.yaml 示例controller:replicaCount: 2resources:limits:cpu: "1"memory: "1Gi"gateway:service:type: LoadBalancer
执行安装:
helm install higress higress/higress -n higress-system -f values-custom.yaml
kubectl get pods -n higress-system# 预期输出:所有 Pod 状态为 RunningNAME READY STATUS RESTARTS AGEhigress-controller-xxxxxx-xxx 1/1 Running 0 2mhigress-gateway-xxxxxx-xxx 1/1 Running 0 2m
kubectl describe pod <pod-name> -n higress-system 中的 Events 日志。gateway.service.nodePort 配置。通过 Gateway 和 HTTPRoute CRD 定义路由:
# gateway.yaml 示例apiVersion: gateway.networking.k8s.io/v1kind: Gatewaymetadata:name: higress-gatewayspec:gatewayClassName: higresslisteners:- name: httpport: 80protocol: HTTPallowedRoutes:namespaces:from: All---# http-route.yaml 示例apiVersion: gateway.networking.k8s.io/v1kind: HTTPRoutemetadata:name: product-routespec:parentRefs:- name: higress-gatewayhostnames: ["example.com"]rules:- matches:- path:type: PathPrefixvalue: /api/productsbackendRefs:- name: product-serviceport: 8080
JWT 验证:
# jwt-auth.yaml 示例apiVersion: security.higress.io/v1kind: JWTAuthmetadata:name: jwt-authspec:authenticator:jwksURI: https://auth.example.com/.well-known/jwks.jsonrules:- paths: ["/api/*"]
WAF 防护:
# waf-policy.yaml 示例apiVersion: security.higress.io/v1kind: WAFPolicymetadata:name: default-wafspec:rules:- id: 920300 # SQL 注入防护action: Block
金丝雀发布:
# canary-traffic.yaml 示例apiVersion: traffic.higress.io/v1kind: TrafficSplitmetadata:name: product-canaryspec:service: product-servicebackends:- service: product-v1weight: 90- service: product-v2weight: 10
流量镜像:
# mirror-traffic.yaml 示例apiVersion: traffic.higress.io/v1kind: MirrorTrafficmetadata:name: product-mirrorspec:sourceService: product-servicemirrorService: product-shadowmirrorPercentage: 10
创建金丝雀路由:
apiVersion: traffic.higress.io/v1kind: TrafficSplitmetadata:name: promotion-canaryspec:service: order-servicebackends:- service: order-v1weight: 70- service: order-v2weight: 30
应用 WAF 策略:
apiVersion: security.higress.io/v1kind: WAFPolicymetadata:name: payment-wafspec:rules:- id: 942100 # 防止敏感信息泄露action: Block- id: 941100 # XSS 防护action: BlockapplyTo:- paths: ["/api/payment/*"]
配置 Prometheus 监控:
# prometheus-scraper.yaml 示例apiVersion: monitoring.coreos.com/v1kind: ServiceMonitormetadata:name: higress-monitorspec:selector:matchLabels:app.kubernetes.io/name: higressendpoints:- port: metricsinterval: 15s
kubectl logs -f <pod-name> -n higress-system 查看实时日志。helm upgrade 命令平滑升级。线程池优化:
# values-tuning.yaml 示例gateway:config:threadPool:coreSize: 100maxSize: 200
缓存配置:
controller:config:cache:ttlSeconds: 300maxItems: 10000
问题定位:
回滚方案:
helm rollback higress 1 # 回滚到第一个修订版本
Higress 通过云原生架构实现了网关能力的质变,其动态配置、安全集成和流量治理能力显著提升了研发效率。未来发展方向包括:
建议开发者从简单路由配置入手,逐步掌握高级功能。对于生产环境,建议结合 Prometheus + Grafana 构建监控体系,并定期进行混沌工程演练。