目录

  • 1、安装 KubeSphere 。
  • 2、安装 Loadbalancer,允许通过外网访问服务。
  • 3、helm chart 打包 APISIX 应用模板 。
  • 4、部署 APISIX。
  • 5、配置 APISIX 的应用路由,外网访问APISIX。
  • 6、在 Dashboard 配置 APISIX 的路由。

安装 KubeSphere3.0

KubeSphere 快速安装与入门必读清单
https://kubesphere.com.cn/forum/d/2062-awesome-kubesphere-kubesphere-3-0/12

安装过程中遇到比较多的问题都是因为端口问题引起的。

建议参考这里的端口说明。

安装 Loadbalancer 插件 ,支持外网访问服务

参考地址:https://v2-1.docs.kubesphere.io/docs/zh-CN/installation/qingcloud-lb/

在 项目设置 -> 高级设置里面 配置如下:

每个云厂商都有对应的 LB 插件

以青云为例:https://github.com/yunify/qingcloud-cloud-controller-manager
上面的插件会帮助你自动在云平台创建一个LB(负载均衡器)

安装云厂商的LB的插件之后,需要去云厂商后台观察 LB 有没有被建立,后续的服务域名需要解析到LB的公网IP。

验证插件成功创建了LB(负载均衡器)。

helm chart 打包 APISIX 应用模板

https://github.com/kubesphere/helm-charts
目前上述仓库使用的镜像是 apache/apisix:1.5-alpine , 如果有需要,可以更新 clone 上面的仓库代码 修改 src/test/apisix/values.yaml 里面的版本号,再执行 helm 打包命令。

执行完 打包命令 helm package apisix 之后,会在本地生成一个 apisix-0.1.5.tgz 文件,就是下面要上传到Kubesphere平台的应用模板。

命令如下:

开始部署 APISIX

在 kubeSphere 的应用管理(App Managment)里面,选择手动上传 Helm Chart 包,然后上传刚刚我们再本地打包好的 apisix-0.1.5.tgz。
这样就算成功创建了一个 APISIX 的 应用模板了,如果有需要可以自己修改 APISIX 的 helm chart 文件, 通常手动打包用来自己要调整一些APISIX配置。

另外我们可直接使用 https://charts.kubesphere.io/test 作为模板仓库,里面内置了 APISIX。

模板创建完整之后,就可以去在“应用模板”里面使用刚刚上传的模板创建应用了。

如图所示:

另外我们也可以使用 应用仓库来部署 APISIX

根据提示,一步一步部署即可,如果有需要可以手动调整应用配置,比如端口,但是大部分时候都不需要手动调整。

开通 APISIX 的应用路由,外网访问APISIX

部署了 APISIX 之后,这个时候需要配置一个应用网关,使得可以通过 外网访问到,如果是公网,记得域名要解析到前面的负载均衡器的公网IP。这里路径是 “/” ,表示所有的该域名下的请求都会去到APISIX, 也可以根据需求调整,但是 /apisix/dashboard 是APISIX的管理后台,必须放开。

在 Dashboard 配置 APISIX 的路由

上一步完成之后 就可以通过URL apisix-demo.*.com/apisix/dashboard 直接访问APISIX 的 dashboard了。

但是这里因为 APISIX dashboard 没有安全认证,不建议在公网暴露,。

接下来 我们尝试配置一个上游服务,并在路由上加频率控制的插件。

这里我做实验需要,直接配置的,KS内置的 bookinfo的服务的内网IP和PORT。
这里 我们可以使用 productpage 这个服务的 内网域名:productpage.apisix-test-proejct.svc.cluster.local
规则是 服务名-项目名称.svc.cluster.local

参考案列服务:
https://kubesphere.com.cn/zh/docs/quick-start/deploy-bookinfo-to-k8s/

配置路由,并且挂载 limit-req 插件,控制请求频率。

可以看到如果请求太快,就如如下图所示,返回503,从而保护上游服务不会过载。

更多APISIX使用教程:
https://github.com/apache/apisix/tree/master/doc