作者:澄潭

Higress 简介

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

Higress on K8s 5分钟开箱即用_ide

5 分钟开箱即用

Step 0. 配置 ACK &准备应用

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

Higress on K8s 5分钟开箱即用_阿里云_02

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

首先安装一个 wordpress 应用,用于后续 Higress 的路由测试,可以直接在 ACK 应用市场安装:

Higress on K8s 5分钟开箱即用_IP_03

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

Higress on K8s 5分钟开箱即用_ide_04

Step 1. 安装 Higress (2 分钟)

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

Higress on K8s 5分钟开箱即用_IP_05

安装命令:

# 添加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

Higress on K8s 5分钟开箱即用_Higress_06

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

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

Higress on K8s 5分钟开箱即用_Nginx_07

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

Higress on K8s 5分钟开箱即用_Higress_08

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

Higress on K8s 5分钟开箱即用_IP_09

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

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

Higress on K8s 5分钟开箱即用_Higress_10

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

Higress on K8s 5分钟开箱即用_IP_11

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

Higress on K8s 5分钟开箱即用_IP_12

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

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

Higress on K8s 5分钟开箱即用_IP_13

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

Higress on K8s 5分钟开箱即用_ide_14

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 规则

Higress on K8s 5分钟开箱即用_Higress_15

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

Higress on K8s 5分钟开箱即用_ide_16

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

Higress on K8s 5分钟开箱即用_Higress_17

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

Higress on K8s 5分钟开箱即用_Nginx_18

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

Higress on K8s 5分钟开箱即用_Higress_19

Higress 开源社区

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

Higress on K8s 5分钟开箱即用_Higress_20

点击​​此处​​访问 Higress 官网,了解更多相关信息