Higress on K8s 5分钟开箱即用
作者:澄潭
Higress 简介
Higress 是云原生网关的提出者和定义者,实现了 K8s 的 Ingress API 标准,历经阿里双十一洪峰考验,对比 Ingress Nginx 具备以下优势:
5 分钟开箱即用
Step 0. 配置 ACK &准备应用
若 ACK 上没有安装其他 Ingress Provider,直接按后续步骤安装 Higress 即可。若 ACK 上已经安装了 Nginx Ingress 等 Ingress Provider,希望迁移到 Higress,请注意 Higress 默认只会监听 IngressClassName 为 higress 的 Ingress。可以通过 helm 参数设置 --set global.ingressClass="",这样 Higress 会监听所有 Ingress,从而实现平滑迁移。
ACK Ingress Provider 还可以选择 MSE Ingress,这是 Higress 的商业托管版,无需自己运维 Higress,提供 SLA 保障。可以在阿里云搜索“云原生网关”了解详情
首先安装一个 wordpress 应用,用于后续 Higress 的路由测试,可以直接在 ACK 应用市场安装:
创建成功后,为这个 wordpress-ack-wordpress-sample workload 创建一个虚拟集群 IP 类型的 service
Step 1. 安装 Higress (2 分钟)
可以使用 ACK 控制台的 CloudShell 直接完成 Higress 的安装
安装命令:
# 添加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 控制台目前处于 0.0.2 版本,正式生产可用版本将在3月份推出,当前版本尚未提供登陆认证功能,请勿用于生产,以免引入安全隐患
首先在 Higress 控制台创建一个 wordpress.higress.io 的域名
接着创建一条前缀匹配根路径的路由转发给 wordpress 应用
通过编辑本机 Hosts 文件,将 wordpress.higress.io 也解析到 Higress 的公网入口 IP,可以看到 wordpress 已经可以访问了
Step 2. 配置 ARMS 监控(2 分钟)
Higress 的指标支持多种方式对外暴露,这里以 Prometheus 为例,基于阿里云 ARMS Prometheus 实现监控大盘开箱即用。首先输入 ACK 名称,找到对应的 Prometheus 实例:
打开服务发现配置中 kubernetes-pods 的开关,支持从 pod annotation 中解析指标暴露地址
然后点击 grafana 工作区链接,跳转到 grafana 控制台
再 Dashboards 中点击 Import 导入 Higress 监控大盘的 Json 文件:
https://higress.io/grafana/dashboard.json
这样就可以看到 Higress 的监控大盘啦,撒花🎉
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 规则
试试在 wordpress 中提交一个模拟 SQL 注入的评论
请求被识别为 SQL 注入,Higress 返回了 403
因为这个 Wasm 插件实现了指标上报,在 Higress 大盘可以看到被拦截的阶段和命中拦截的规则ID
Higress 的日志中可以看到具体拦截原因
Higress 开源社区
欢迎加入 Higress 社区群,及时了解 Higress 动向:
点击此处访问 Higress 官网,了解更多相关信息