ITPub博客

首页 > 云计算 > 开源云工具 > Higress on K8s 5分钟开箱即用

Higress on K8s 5分钟开箱即用

原创 开源云工具 作者:阿里巴巴云原生 时间:2023-03-07 12:01:59 0 删除 编辑

> *作者:澄潭*


## Higress 简介


Higress 是云原生网关的提出者和定义者,实现了 K8s 的 Ingress API 标准,历经阿里双十一洪峰考验,对比 Ingress Nginx 具备以下优势:


![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/be0905f1050e435ca2ca03dfe2932afa~tplv-k3u1fbpfcp-zoom-1.image "image.png")


## 5 分钟开箱即用


### Step 0. 配置 ACK &准备应用


若 ACK 上没有安装其他 Ingress Provider,直接按后续步骤安装 Higress 即可。若 ACK 上已经安装了 Nginx Ingress 等 Ingress Provider,希望迁移到 Higress,请注意 Higress 默认只会监听 IngressClassName 为 higress 的 Ingress。可以通过 helm 参数设置 --set global.ingressClass="",这样 Higress 会监听所有 Ingress,从而实现平滑迁移。


> ![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/fb2ce687ed374bdebe3b1353818dea86~tplv-k3u1fbpfcp-zoom-1.image "image.png")

>

> *ACK Ingress Provider 还可以选择 MSE Ingress,这是 Higress 的商业托管版,无需自己运维 Higress,提供 SLA 保障。可以在阿里云搜索“云原生网关”了解详情*


首先安装一个 wordpress 应用,用于后续 Higress 的路由测试,可以直接在 ACK 应用市场安装:![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d92b820870e546c7a64b1c11396053db~tplv-k3u1fbpfcp-zoom-1.image "image.png")


创建成功后,为这个 wordpress-ack-wordpress-sample workload 创建一个虚拟集群 IP 类型的 service


![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ad69367033a14e41932d0f670049e31d~tplv-k3u1fbpfcp-zoom-1.image "image.png")


### Step 1. 安装 Higress (2 分钟)


可以使用 ACK 控制台的 CloudShell 直接完成 Higress 的安装


![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/76281611a6c442c9bacb1647a8da838d~tplv-k3u1fbpfcp-zoom-1.image "image.png")


安装命令:


```

# 添加Higress的官方helm仓库

helm repo add higress.io https://higress.io/helm-charts

# 安装Higress

helm install higress higress.io/higress -n higress-system --create-namespace

# 安装Higress Console

helm install higress-console higress.io/higress-console -n higress-system

```


安装完成后可以执行 kubectl get ing -n higress-system,看到已经有一个 higress-console Ingress 资源存在,这是 Higress UI 控制台的访问入口,ADDRESS 字段即 Higress 的公网访问 IP,可以修改本机 Hosts 文件,将 console.higress.io 解析至这个 ip,这样就可以用浏览器直接访问 *[http://console.higress.io](http://console.higress.i0)*


![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c881c62d288341bfb382f043e642d691~tplv-k3u1fbpfcp-zoom-1.image "image.png")


> *Higress 控制台目前处于 0.0.2 版本,正式生产可用版本将在3月份推出,当前版本尚未提供登陆认证功能,请勿用于生产,以免引入安全隐患*


首先在 Higress 控制台创建一个 wordpress.higress.io 的域名


![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/415339fe20de40d5a5c0c01a3218069c~tplv-k3u1fbpfcp-zoom-1.image "image.png")


接着创建一条前缀匹配根路径的路由转发给 wordpress 应用


![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/7ea7437759814b1d9856bc0e2e242c6f~tplv-k3u1fbpfcp-zoom-1.image "image.png")


通过编辑本机 Hosts 文件,将 wordpress.higress.io 也解析到 Higress 的公网入口 IP,可以看到 wordpress 已经可以访问了


![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/577da0338a214858bc1b7112189fec44~tplv-k3u1fbpfcp-zoom-1.image "image.png")


### Step 2. 配置 ARMS 监控(2 分钟)


Higress 的指标支持多种方式对外暴露,这里以 Prometheus 为例,基于阿里云 ARMS Prometheus 实现监控大盘开箱即用。首先输入 ACK 名称,找到对应的 Prometheus 实例:


![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f6e2a542517545e294902360e985be02~tplv-k3u1fbpfcp-zoom-1.image "image.png")


打开服务发现配置中 kubernetes-pods 的开关,支持从 pod annotation 中解析指标暴露地址


![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/626abba3656f4f428b72c250a0240daa~tplv-k3u1fbpfcp-zoom-1.image "image.png")


然后点击 grafana 工作区链接,跳转到 grafana 控制台


![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/aab18449616d4b9b961948d90a80ab7b~tplv-k3u1fbpfcp-zoom-1.image "image.png")


再 Dashboards 中点击 Import 导入 Higress 监控大盘的 Json 文件:


*<https://higress.io/grafana/dashboard.json>*


![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/4ada085eec1f4b4bb6afb3d0714435c6~tplv-k3u1fbpfcp-zoom-1.image "image.png")


这样就可以看到 Higress 的监控大盘啦,撒花🎉


![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/4fab372285554fedacbb6f49dcc30484~tplv-k3u1fbpfcp-zoom-1.image "image.png")


### Step 3. 开启插件,WAF 防护为例(1 分钟)


Higress 除了支持很方便地开发自定义插件,也原生提供了多种开箱即用的插件:*<https://github.com/alibaba/higress/tree/main/plugins>*


这里以 WAF 插件(基于 corazawaf 开源的 Wasm 插件)为例,可以执行以下命令直接生效:


```

kubectl apply -f https://higress.io/samples/waf.yaml

```


这里的配置是开启了全部的 OWASP CRS 规则


![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/48326e79cfcc48a7935eec9bb5e9c6af~tplv-k3u1fbpfcp-zoom-1.image "image.png")


试试在 wordpress 中提交一个模拟 SQL 注入的评论


![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/9c95c34a426e484e8b208ac2fa528e70~tplv-k3u1fbpfcp-zoom-1.image "image.png")


请求被识别为 SQL 注入,Higress 返回了 403


![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/23a7d522a3d44483a6fda1e8ea32b958~tplv-k3u1fbpfcp-zoom-1.image "image.png")


因为这个 Wasm 插件实现了指标上报,在 Higress 大盘可以看到被拦截的阶段和命中拦截的规则ID


![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/5cc9fbf38de54f709470052942686054~tplv-k3u1fbpfcp-zoom-1.image "image.png")


Higress 的日志中可以看到具体拦截原因


![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/6625c9d9b21e4712ae20cb69a17bba23~tplv-k3u1fbpfcp-zoom-1.image "image.png")


## Higress 开源社区


欢迎加入 Higress 社区群,及时了解 Higress 动向:


![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/45819706bc784506b2f1ad3ea1bce17e~tplv-k3u1fbpfcp-zoom-1.image "image.png")


点击[此处](https://higress.io/zh-cn/)访问 Higress 官网,了解更多相关信息


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69953029/viewspace-2938438/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
阿里云云原生公众号(ID:Alicloudnative)发布云原生技术最新资讯、汇集云原生技术最全内容,定期举办云原生活动、直播,阿里产品及用户最佳实践发布。与你并肩探索云原生技术点滴,分享你需要的云原生内容。

注册时间:2019-11-07

  • 博文量
    1497
  • 访问量
    710957