跳转到内容
铭师堂的云原生升级实践点此了解

使用 Helm 进行云原生部署

Helm 是一个用于自动化管理和发布 Kubernetes 软件的包管理系统。通过 Helm 可以在您的 Kubernetes 集群上快速部署安装 Higress 网关。

安装 Higress

Higress 网关由控制面组件 higress-controller 和数据面组件 higress-gateway 组成。higress-gateway负责承载数据流量higress-controller 负责管理配置下发

Helm 安装命令

Terminal window
helm repo add higress.io https://higress.io/helm-charts
helm install higress higress.io/higress -n higress-system --create-namespace

常用安装参数

完整参数介绍请查看运维参数说明

参数名参数说明默认值
全局参数
global.local如果要安装至本地 K8s 集群(如 Kind、Rancher Desktop 等),请设置为 truefalse
global.ingressClass用于过滤被 Higress Controller 监听的 Ingress 资源的 IngressClass
在集群内部署了多个网关时,可以使用这一参数来区分每个网关的职责范围。
IngressClass 有一些特殊的取值:
1. 如果设置为“nginx”,Higress Controller 将监听 Ingress 为 nginx 或为空的 Ingress 资源。
2. 如果设为空,Higress Controller 将监听 K8s 集群内的全部 Ingress 资源。
higress
global.watchNamespace如果值不为空,Higress Controller 将只会监听指定命名空间下的资源。
当基于 K8s 命名空间进行业务系统隔离时,若需要对每个命名空间部署一套独立的网关,可以通过这一参数来限制 Higress 监听指定命名空间内的 Ingress。
""
global.disableAlpnH2是否在 ALPN 中禁用 HTTP/2 协议false
global.enableStatus若为true, Higress Controller 将会更新 Ingress 资源的 status 字段。
为避免从 Nginx Ingress 迁移过程中,覆盖 Ingress 对象的 status 字段,可以将这一参数设置为false,这样 Higress 默认就不会将入口 IP 写入 Ingress 的 status 字段。
true
global.enableIstioAPI若为true,Higress Controller 将同时监听 istio 资源false
global.enableGatewayAPI若为true,Higress Controller 将同时监听 Gateway API 资源false
global.onlyPushRouteCluster若为true,Higress Controller 将会只推送被路由关联的服务true
global.o11y.enabled若为 true,将同时安装可观测性套件(Grafana、Promethues、Loki、PromTail)false
global.pvc.rwxSupported标识目标 K8s 集群是否支持 PersistentVolumeClaim 的 ReadWriteMany 操作方式。true
核心组件参数
higress-core.gateway.replicasHigress Gateway 的 pod 数量2
higress-core.gateway.httpPortHigress Gateway 将监听的 HTTP 端口。80
higress-core.gateway.httpsPortHigress Gateway 将监听的 HTTPS 端口。443
higress-core.controller.replicasHigress Controller 的 pod 数量1
控制台参数
higress-console.replicaCountHigress Console 的 pod 数量1
higress-console.service.typeHigress Console 所使用的 K8s Service 类型ClusterIP
higress-console.web.login.prompt登录页面上显示的提示信息""

支持 Istio CRD(可选)

集群里需要提前安装好 Istio 的 CRD,如果不希望安装 Istio,也可以只安装 Istio 的 CRD:

Terminal window
helm repo add istio https://istio-release.storage.googleapis.com/charts
helm install istio-base istio/base -n istio-system --create-namespace

这种模式下,需要更新 Higress 的部署参数:

Terminal window
helm upgrade higress -n higress-system --set global.enableIstioAPI=true higress.io/higress --reuse-values

支持 Gateway API CRD(可选)

集群里需要提前安装好 Gateway API 的 CRD:https://github.com/kubernetes-sigs/gateway-api/releases

以1.0.0为例:

Terminal window
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.0.0/experimental-install.yaml

这种模式下,需要更新 Higress 的部署参数:

Terminal window
helm upgrade higress -n higress-system --set global.enableGatewayAPI=true higress.io/higress --reuse-values

可以使用这份配置验证 Gateway API 功能:

https://github.com/alibaba/higress/blob/main/samples/gateway-api/demo.yaml