Kubernetes与API网关Kong的集成

微信扫一扫,分享到朋友圈

Kubernetes与API网关Kong的集成

说明

经过前面的学习( Nginx、OpenResty和Kong的基本概念与使用方法 ),对Api网关是什么,以及Kong能够做什么已经有了足够的了解。 现在Kubernetes一统计算资源与应用发布编排的趋势已经形成,我们更关心Kong能否和Kubernetes结合。

Kong是一个Api网关,也是一个特性更丰富的反向代理。既然它有代理流量的功能,那么能不能直接成为Kubernetes的流量入口?使Kubernetes上托管的服务都通过Kong发布。

Kong实现了一个 Kubernetes Ingress Controller (后面用kong-ingress-controller指代这个项目)来做这件事。另外也可以把Kong部署在Kubernetes中,见 Kong CE or EE on Kubernetes

先说设计

Kubernetes Ingress Controller for Kong 中介绍了部署方法。不算PostgreSQL,总共有两个Deployment。

第一个Deployment是 ingress-controller.yaml ,部署的是一个有三个容器的Pod: 第一个容器是InitContainer,负责初始化数据库; 第二个容器是只开启了Admin管理地址的kong-proxy,负责提供Kong的管理API; 第三个容器是kong-ingress-controller,负责Kubernetes资源与Kong的衔接:监测Kubernetes资源的变动,及时调用Kong的管理API,更新Kong的配置。

第二个Deployment是[Deployment:Kong],pod中包含的是只开启了代理地址的kong-proxy。

第一个Deployment属于控制平面,负责管理Kong。第二个Deployment属于数据平面,负责根据指示反向代理API请求。下面的图片是kong-ingress-controller中的图片, 红色箭头表示控制信息的流动,绿色箭头表示API请求的流动:

kong自定义的kubernetes资源

Kubernetes支持自定义资源( Extend the Kubernetes API with CustomResourceDefinitions ,kong-ingress-controller充分利用了这个CRD特性。 在 custer-types.yml 中定义了 KongPluginKongConsumerKongCredentialKongIngress 四种自定义资源(@2018-09-30 17:19:38)。

Kong ingress controller: custom types 中对这四种自定义资源用法做了说明:

KongPlugin:     kong插件的配置项
KongConsumer:   kong的用户
KongCredential: kong用户的认证凭证
KongIngress:    对ingress的增强配置,可以设置更多细节

开始部署

参考

  1. Kong CE or EE on Kubernetes
  2. Kong/kubernetes-ingress-controller
  3. Nginx、OpenResty和Kong的基本概念与使用方法
  4. Kubernetes Ingress Controller for Kong
  5. Deployment: ingress-controller.yaml
  6. [Deployment: Kong]
  7. Extend the Kubernetes API with CustomResourceDefinitions
  8. Kong ingress controller: custom types

第5天数据类型之整形,字符串和列表

上一篇

基于深度学习的自然场景文字检测及端到端的OCR中文文字识别

下一篇

你也可能喜欢

Kubernetes与API网关Kong的集成

长按储存图像,分享给朋友