官方安装:https://getkong.org/install/kubernetes/
扩展讲解:https://blog.fleeto.us/post/intro-kong/
提示:本文是在k8s(kubernetes)上安装kong以及Kubernetes Ingress Controller,将Kong部署到Kubernetes上很简单,但将Kubernetes的服务与Kong整合是一个手动过程,所以在2018年5月8日,发布了Kubernetes Ingress Controller。通过与Kubernetes Ingress Controller集成,Kong直接与Kubernetes生命周期相关联。随着应用程序的部署和新服务的创建,Kong将自动进行实时配置,为这些服务提供流量
简介:Kong 是在客户端和(微)服务间转发API通信的API网关,通过插件扩展功能。
Kong 有两个主要组件:
Kong Server :基于 nginx 的服务器,用来接收 API 请求。
Apache Cassandra & :用来存储操作数据。
注:Ambassador没有数据库 - 它依赖于ConfigMap来存储状态
Kong 还有如下几个基础功能:
HTTP 基本认证、密钥认证、CORS( Cross-origin Resource Sharing,跨域资源共享)、TCP、UDP、文件日志、API 请求限流、请求转发以及 nginx 监控
不足:数据库不支持常用的mysql,只支持Postgres/Cassandra
扩展Kong需要会写lua脚本
不修改源码的情况下,无法自定义nginx配置文件,因为重启后会重新初始化有变更的nginx配置文件【nginx.conf|nginx-kong.conf】
安装过程中会创建一个 Postgres 的 StatefulSet,前面提到,这一版本对 Kubernetes 集群的最低版本要求是 1.8
Kong的限流从技术上来讲支持三种,分别是本地限流(local)、数据库限流(cluster)和Redis限流
Kong的这三种限流方式都没有考虑并发情况
限流:https://my.oschina.net/chinamerp/blog/851613
当到达限流的临界值(max-1)时,此时有多条请求同时执行get_usage,计算结果全部通过,而我们期望的是仅有一条请求能通过
一、初始设置
1.下载或克隆以下代码
$ git clone
https://github.com/Kong/kong-dist-kubernetes.git
$ cd kong-dist-kubernetes
2. 修改配置文件主要是k8s 对应service 的类型 修改为 type: nodePort
配置文件
Deployment
控制器部署到集群
kubectl create -f kong_postgres.yaml
您现在可以看到已经使用的资源kubectl
:
$ kubectl get all
一旦EXTERNAL_IP
可用于Kong代理和管理服务,您可以通过发出以下请求来测试Kong:
$ curl <kong-admin-ip-address>:8001 $ curl https://<admin-ssl-ip-address>:8444 $ curl <kong-proxy-ip-address>:8000 $ curl https://<kong-proxy-ssl-ip-address>:8443
我这可以看到kong以及启动了,kong-rc都是running,
举例测试例如:curl 192.168.1.216:31572
docker run -d -p 8080:8080 pgbi/kong-dashboard:v2
API node 输入 k8snodeip:service nodeport
例如我的是:192.168.1.216:31572