侧边栏壁纸
博主头像
背锅小王子博主等级

我从事运维工作有十年之久,主要从事云原生相关的工作,对k8s、devops、servicemesh、可观察性等较为熟悉!

  • 累计撰写 59 篇文章
  • 累计创建 64 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

higress云原生网关

背锅小王子
2022-11-17 / 0 评论 / 0 点赞 / 323 阅读 / 784 字
温馨提示:
本文最后更新于 2022-11-17,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

1、Higress介绍

Higress是基于阿里内部的Envoy Gateway实践沉淀、以开源Istio + Envoy为核心构建的下一代云原生网关,实现了流量网关 + 微服务网关 + 安全网关三合一的高集成能力,深度集成Dubbo、Nacos、Sentinel等微服务技术栈,能够帮助用户极大的降低网关的部署及运维成本且能力不打折;在标准上全面支持Ingress与Gateway API,积极拥抱云原生下的标准API规范;同时,Higress Controller也支持Nginx Ingress平滑迁移,帮助用户零成本快速迁移到Higress。

2、架构图

图片-1668667306688

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
0

评论区