Kubernetes 下的网关服务 APISIX

1. 几种常见网关的比较

  • Nginx, 模块化设计的反向代理软件,C 语言开发
  • OpenResty, 以 Nginx 为核心的 Web 开发平台,可以解析执行 Lua 脚本
  • Kong, OpenResty 的一个应用,是一个 API 网关,具有 API 管理和请求代理的功能,使用 PostgreSQL 存储
  • APISIX, 替换了 Kong 的 PostgreSQL 为 Etcd,基于 Nginx 的核心库实现
1
2
3
4
5
export NODE_PORT=$(kubectl get --namespace apisix -o jsonpath="{.spec.ports[0].nodePort}" services apisix-dashboard)
export NODE_IP=$(kubectl get nodes --namespace apisix -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT

http://1.1.1.1:31501

3.4 安装 ingress-controller

  • 安装 ingress-controller
1
helm install apisix-ingress-controller apisix/apisix-ingress-controller   --set config.apisix.baseURL=http://apisix-admin:9180/apisix/admin  --set config.apisix.adminKey=edd1c9f034335f136f87ad84b625c8f1  -n apisix
  • 访问测试

  • 查看创建的路由
可以发现路由是被 ingress-controller 接管的,人工不要编辑。
  • 查看服务
可以看到服务主要是由四个后端提供。
  • 查看服务 Pod 的 IP

1
2
3
4
5
6
7
kubectl get pod  -o wide

NAME                   READY   STATUS    RESTARTS   AGE   IP              NODE    NOMINATED NODE   READINESS GATES
web-79d88c97d6-2sdlj   1/1     Running   0          27d   10.233.105.34   node4   <none>           <none>
web-79d88c97d6-7bfbb   1/1     Running   0          27d   10.233.105.32   node4   <none>           <none>
web-79d88c97d6-hccqk   1/1     Running   0          27d   10.233.105.33   node4   <none>           <none>
web-79d88c97d6-mh9gz   1/1     Running   0          28d   10.233.105.22   node4   <none>           <none>