1、Higress介绍
Higress是基于阿里内部的Envoy Gateway实践沉淀、以开源Istio + Envoy为核心构建的下一代云原生网关,实现了流量网关 + 微服务网关 + 安全网关三合一的高集成能力,深度集成Dubbo、Nacos、Sentinel等微服务技术栈,能够帮助用户极大的降低网关的部署及运维成本且能力不打折;在标准上全面支持Ingress与Gateway API,积极拥抱云原生下的标准API规范;同时,Higress Controller也支持Nginx Ingress平滑迁移,帮助用户零成本快速迁移到Higress。
2、架构图
3、安装部署
3.1、安装 Istio
kubectl create ns istio-system
helm install istio -n istio-system oci://higress-registry.cn-hangzhou.cr.aliyuncs.com/charts/istio
注意:
若 Higress 网关没有安装在默认的 higress-system 的命名空间,需要在安装 Higress Istio 时指定通过 --set global.higressNamespace= 指定命名空间,如:
helm install istio -n istio-system --set global.higressNamespace=foo oci://higress-registry.cn-hangzhou.cr.aliyuncs.com/charts/istio
3.2、安装 Higress
Higress 网关由控制面组件 higress-controller 和数据面组件 higress-gateway 组成。Istio 负责管理数据平面的 API 配置,higress-controller 负责管理控制平面的 API 配置。
kubectl create ns higress-system
helm install higress -n higress-system oci://higress-registry.cn-hangzhou.cr.aliyuncs.com/charts/higress
安装参数
-
enableStatus
为避免从 Nginx Ingress 迁移过程中,覆盖 Ingress 对象的 status 字段,Higress 默认不会将入口 IP 写入 Ingress 的 status。可以通过 --set enableStatus=true 启用此功能。
-
ingressClass
在集群内部署了多个网关时,可以基于 IngressClass 区分每个网关的职责范围。可以通过 --set ingressClass=
指定 Higress 监听哪些 Ingress。 -
watchNamespace
当基于 K8s 命名空间进行业务系统隔离时,若需要对每个命名空间部署一套独立的网关,可以通过 watchNamespace 限制 Higress 监听此命名空间内的 Ingress。可以通过 --set watchNamespace=
指定。
查看部署后的服务
[root@192.168.96.51 ~]$ kubectl get pod -n istio-system
NAME READY STATUS RESTARTS AGE
istiod-848cd6cb44-66zpf 1/1 Running 1 (5m ago) 5m
[root@192.168.96.51 ~]$ kubectl get pod -n higress-system
NAME READY STATUS RESTARTS AGE
higress-controller-7f78b6fb8d-457dp 1/1 Running 0 5m
higress-gateway-5bfcfb4dc7-75vw4 1/1 Running 0 5m
** 注意**
由于higress-gateway的service类型默认为LoadBalancer,我们没有使用云环境,所以我们需要修改为NodePort类型
kubectl edit svc higress-gateway -n higress-system
# 将spec.type从LoadBalancer修改为NodePort
4、测试
部署官方测试应用
kubectl apply -f https://github.com/alibaba/higress/releases/download/v0.5.2/quickstart.yaml
查看部署后的应用
kubectl get pod
NAME READY STATUS RESTARTS AGE
bar-app 1/1 Running 0 5m
foo-app 1/1 Running 0 5m
测试ingress
[root@192.168.96.51 ~]$ curl localhost/foo
foo
[root@192.168.96.51 ~]$ curl localhost/bar
bar
[root@192.168.96.51 ~]$ curl 192.168.96.51/bar
bar
[root@192.168.96.51 ~]$ curl 192.168.96.51/foo
foo
卸载资源
kubectl delete -f https://github.com/alibaba/higress/releases/download/v0.5.2/quickstart.yaml
helm uninstall istio -n istio-system
helm uninstall higress -n higress-system
kubectl delete ns istio-system
kubectl delete ns higress-system
评论区