Higress 从部署到使用全流程指南

作者:demo2025.10.29 15:55浏览量:9

简介:本文详细解析Higress开源网关的部署、配置及使用全流程,涵盖环境准备、安装部署、核心功能配置及实战案例,帮助开发者快速掌握企业级流量治理能力。

Higress 从部署到使用详解

一、Higress 简介与核心价值

Higress 是阿里巴巴开源的下一代云原生网关,基于 Envoy 构建并深度集成 Istio 生态,提供高性能、低延迟的流量治理能力。其核心价值体现在三方面:

  1. 统一流量入口:整合 API 网关、Ingress 控制器、Service Mesh 网关能力,降低多组件维护成本。
  2. 全链路安全:支持 WAF 防护、JWT 验证、mTLS 加密等安全机制,满足企业级安全需求。
  3. 动态流量管理:通过 CRD(Custom Resource Definitions)实现灰度发布、流量镜像、熔断降级等高级功能。

相较于传统网关(如 Nginx、Kong),Higress 的优势在于与云原生生态的无缝集成,支持声明式配置和自动化运维。典型应用场景包括微服务架构的流量治理、Kubernetes 集群的南北向流量管理、以及多云环境下的统一网关层。

二、部署前环境准备

2.1 硬件与软件要求

组件 最低配置 推荐配置
服务器 2核4G(开发环境) 4核8G(生产环境)
操作系统 Linux(CentOS 7+/Ubuntu 20.04+) 同左
Kubernetes v1.19+ v1.22+
存储 10GB 可用空间 50GB SSD

2.2 依赖组件安装

  1. Kubernetes 集群

    1. # 使用 kubeadm 初始化集群(示例)
    2. kubeadm init --pod-network-cidr=10.244.0.0/16
    3. mkdir -p $HOME/.kube
    4. cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  2. Helm 3

    1. curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
    2. chmod 700 get_helm.sh
    3. ./get_helm.sh
  3. 证书管理工具(可选):

    1. # 安装 cert-manager 用于自动签发证书
    2. kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.11.0/cert-manager.yaml

2.3 网络与安全配置

  • 防火墙规则:开放 80(HTTP)、443(HTTPS)、15021(Istio Pilot)等端口。
  • RBAC 权限:创建 ServiceAccount 并绑定集群管理员权限(生产环境建议细化权限)。
  • 资源配额:通过 LimitRangeResourceQuota 防止资源耗尽。

三、Higress 部署流程

3.1 Helm 安装方式

  1. 添加 Higress Helm 仓库

    1. helm repo add higress https://higress.io/helm-charts
    2. helm repo update
  2. 创建命名空间

    1. kubectl create namespace higress-system
  3. 自定义配置(可选):

    1. # values-custom.yaml 示例
    2. controller:
    3. replicaCount: 2
    4. resources:
    5. limits:
    6. cpu: "1"
    7. memory: "1Gi"
    8. gateway:
    9. service:
    10. type: LoadBalancer
  4. 执行安装

    1. helm install higress higress/higress -n higress-system -f values-custom.yaml

3.2 验证部署状态

  1. kubectl get pods -n higress-system
  2. # 预期输出:所有 Pod 状态为 Running
  3. NAME READY STATUS RESTARTS AGE
  4. higress-controller-xxxxxx-xxx 1/1 Running 0 2m
  5. higress-gateway-xxxxxx-xxx 1/1 Running 0 2m

3.3 常见问题排查

  • Pod 启动失败:检查 kubectl describe pod <pod-name> -n higress-system 中的 Events 日志
  • 镜像拉取失败:配置国内镜像源(如阿里云容器镜像服务)。
  • 端口冲突:确保 80/443 端口未被占用,或修改 gateway.service.nodePort 配置。

四、核心功能配置指南

4.1 路由规则配置

通过 GatewayHTTPRoute CRD 定义路由:

  1. # gateway.yaml 示例
  2. apiVersion: gateway.networking.k8s.io/v1
  3. kind: Gateway
  4. metadata:
  5. name: higress-gateway
  6. spec:
  7. gatewayClassName: higress
  8. listeners:
  9. - name: http
  10. port: 80
  11. protocol: HTTP
  12. allowedRoutes:
  13. namespaces:
  14. from: All
  15. ---
  16. # http-route.yaml 示例
  17. apiVersion: gateway.networking.k8s.io/v1
  18. kind: HTTPRoute
  19. metadata:
  20. name: product-route
  21. spec:
  22. parentRefs:
  23. - name: higress-gateway
  24. hostnames: ["example.com"]
  25. rules:
  26. - matches:
  27. - path:
  28. type: PathPrefix
  29. value: /api/products
  30. backendRefs:
  31. - name: product-service
  32. port: 8080

4.2 安全策略配置

  1. JWT 验证

    1. # jwt-auth.yaml 示例
    2. apiVersion: security.higress.io/v1
    3. kind: JWTAuth
    4. metadata:
    5. name: jwt-auth
    6. spec:
    7. authenticator:
    8. jwksURI: https://auth.example.com/.well-known/jwks.json
    9. rules:
    10. - paths: ["/api/*"]
  2. WAF 防护

    1. # waf-policy.yaml 示例
    2. apiVersion: security.higress.io/v1
    3. kind: WAFPolicy
    4. metadata:
    5. name: default-waf
    6. spec:
    7. rules:
    8. - id: 920300 # SQL 注入防护
    9. action: Block

4.3 流量管理配置

  1. 金丝雀发布

    1. # canary-traffic.yaml 示例
    2. apiVersion: traffic.higress.io/v1
    3. kind: TrafficSplit
    4. metadata:
    5. name: product-canary
    6. spec:
    7. service: product-service
    8. backends:
    9. - service: product-v1
    10. weight: 90
    11. - service: product-v2
    12. weight: 10
  2. 流量镜像

    1. # mirror-traffic.yaml 示例
    2. apiVersion: traffic.higress.io/v1
    3. kind: MirrorTraffic
    4. metadata:
    5. name: product-mirror
    6. spec:
    7. sourceService: product-service
    8. mirrorService: product-shadow
    9. mirrorPercentage: 10

五、实战案例:电商系统流量治理

5.1 场景需求

  • 促销活动期间将 30% 流量导向新版本服务。
  • 对支付接口实施 WAF 防护。
  • 实时监控接口延迟和错误率。

5.2 配置实现

  1. 创建金丝雀路由

    1. apiVersion: traffic.higress.io/v1
    2. kind: TrafficSplit
    3. metadata:
    4. name: promotion-canary
    5. spec:
    6. service: order-service
    7. backends:
    8. - service: order-v1
    9. weight: 70
    10. - service: order-v2
    11. weight: 30
  2. 应用 WAF 策略

    1. apiVersion: security.higress.io/v1
    2. kind: WAFPolicy
    3. metadata:
    4. name: payment-waf
    5. spec:
    6. rules:
    7. - id: 942100 # 防止敏感信息泄露
    8. action: Block
    9. - id: 941100 # XSS 防护
    10. action: Block
    11. applyTo:
    12. - paths: ["/api/payment/*"]
  3. 配置 Prometheus 监控

    1. # prometheus-scraper.yaml 示例
    2. apiVersion: monitoring.coreos.com/v1
    3. kind: ServiceMonitor
    4. metadata:
    5. name: higress-monitor
    6. spec:
    7. selector:
    8. matchLabels:
    9. app.kubernetes.io/name: higress
    10. endpoints:
    11. - port: metrics
    12. interval: 15s

六、运维与优化建议

6.1 日常维护

  • 日志收集:通过 kubectl logs -f <pod-name> -n higress-system 查看实时日志。
  • 配置备份:定期导出 Helm Values 和 CRD 配置。
  • 版本升级:使用 helm upgrade 命令平滑升级。

6.2 性能调优

  1. 线程池优化

    1. # values-tuning.yaml 示例
    2. gateway:
    3. config:
    4. threadPool:
    5. coreSize: 100
    6. maxSize: 200
  2. 缓存配置

    1. controller:
    2. config:
    3. cache:
    4. ttlSeconds: 300
    5. maxItems: 10000

6.3 故障处理流程

  1. 问题定位

    • 检查 Pod 状态和事件日志。
    • 验证 CRD 配置语法。
    • 对比预期与实际流量路径。
  2. 回滚方案

    1. helm rollback higress 1 # 回滚到第一个修订版本

七、总结与展望

Higress 通过云原生架构实现了网关能力的质变,其动态配置、安全集成和流量治理能力显著提升了研发效率。未来发展方向包括:

  1. eBPF 加速:进一步降低延迟。
  2. AI 运维:基于流量模式的自动调优。
  3. 多集群管理:支持跨云流量治理。

建议开发者从简单路由配置入手,逐步掌握高级功能。对于生产环境,建议结合 Prometheus + Grafana 构建监控体系,并定期进行混沌工程演练。