Kong Ingress Controller允许用户在现有的Kubernetes实施中包含Kong Gateway的功能,所有这些都不需要太多努力。

Spring Boot服务和Kubernetes
       让我们假设你的功能团队已经将Spring Boot的使用标准化,用于API服务。由于你的团队的辛勤工作和详细设计,你的API被公共消费者视为成功。你的组织决定为这些服务使用Kubernetes。对于你的团队开发的每个Spring Boot服务,这就是高层次的生命周期的样子。

kong-spring-boot-kubernetes

一个Spring Boot服务被初始化,并添加了自定义代码。该服务被容器化为一个Docker镜像,最终被部署到Kubernetes。

通过使用Kubernetes,我们可以获得以下优势。

  • 一组基于Spring Boot的Docker容器被放入一个 "Pod "中,作为一个单一的应用程序。这使得每个Spring Boot服务都能专注于由此产生的API的某个方面。
  • 一个或多个Pod可以被分组,形成最终的API服务,这可以被配置为可发现性、可观察性、水平扩展和负载平衡。
  • 滚动更新(Rolling updates)和金丝雀部署(Canary deployments)被利用来实现稳定的消费者体验。

如果你对使用Kubernetes与Spring Boot感兴趣,请查看以下网址。

Spring Boot Kubernetes

      基于这些受欢迎的API的成功,让我们想象一下,执行领导层希望将服务货币化,从最活跃的消费者那里获得收入。免费层仍然可用,但将引入对API使用的限制。虽然团队可以在Spring Boot层面上实现一些自定义逻辑,但这并没有意义。我们需要的是一种集中的方式来处理这个新的要求。

Kong Ingress Controller救援

关于Kong, 对于上面提到的用例,我们可以在API网关层面处理以下组件。

应用程序注册(密钥认证)

速率限制

集中式日志记录

由于Kong Gateway是开源的,并且是2021年Gartner全生命周期API管理魔力象限的 "领导者",Kong Gateway是处理这些常见组件的安全方式。了解到Kong还提供了一个在Kubernetes内使用的入口控制器,进一步验证了产品决策。你可以在这个GitHub页面上找到开始使用Kong Ingress Controller(KIC)所需的一切。

用于Kubernetes的Kong Ingress控制器

下面的插图显示了两个服务的理想设计:

kong-kong-ingress-controller

请求到达Kubernetes的API服务#1或#2。Kong Ingress控制器拦截这些请求,并验证所提供的API密钥。根据这些信息,控制器确定提出请求的消费者是否超过了其请求限制。

如果没有超过速率限制,该请求将被转发到适当的服务。然而,如果超过了速率限制,那么将返回一个429(请求过多)的HTTP响应。在所有情况下,日志模块可以很容易地被配置为跟踪所有传入的请求,包括由API消费者提供的所有元数据。

系统设计的价值
当我们退一步看一看所产生的架构和设计时,我们很快就能看到其中的好处:

  • Spring Boot服务是真正的微服务,每个服务都专注于API的一个方面。
  • Docker允许Spring Boot服务自成一体,并在开发生命周期内的任何时候都可以分布。
  • Kubernetes提供了将这些目的明确的Docker镜像组合成Pod的能力,这些Pod作为一个单一的应用程序。在我们的例子中,这些Pod会被分组,作为API服务出现。
  • 共享组件--如应用注册、速率限制和记录--存在于Kong Gateway的一个集中位置。
  • Kong Ingress Controller成为Kong Gateway和Kubernetes之间的中间件层,以利用所有共享组件。

由于这种模式,从事Spring Boot服务的功能团队开发人员只需要专注于产品所有者提供的工作,以改进或扩展服务。这些开发人员不需要担心API密钥、速率限制或任何其他在其他地方管理的共享组件。

支持Kubernetes实施的DevOps工程师也不需要架构任何自定义设计方面来处理这些共享组件。这是因为Kong Gateway是为适应这些需求而建立的,并通过Kong Ingress Controller很好地工作。



今天先到这儿,希望对云原生,技术领导力, 企业管理,系统架构设计与评估,团队管理, 项目管理, 产品管管,团队建设 有参考作用 , 您可能感兴趣的文章:
领导人怎样带领好团队
构建创业公司突击小团队
国际化环境下系统架构演化
微服务架构设计
视频直播平台的系统架构演化
微服务与Docker介绍
Docker与CI持续集成/CD
互联网电商购物车架构演变案例
互联网业务场景下消息队列架构
互联网高效研发团队管理演进之一
消息系统架构设计演进
互联网电商搜索架构演化之一
企业信息化与软件工程的迷思
企业项目化管理介绍
软件项目成功之要素
人际沟通风格介绍一
精益IT组织与分享式领导
学习型组织与企业
企业创新文化与等级观念
组织目标与个人目标
初创公司人才招聘与管理
人才公司环境与企业文化
企业文化、团队文化与知识共享
高效能的团队建设
项目管理沟通计划
构建高效的研发与自动化运维
某大型电商云平台实践
互联网数据库架构设计思路
IT基础架构规划方案一(网络系统规划)
餐饮行业解决方案之客户分析流程
餐饮行业解决方案之采购战略制定与实施流程
餐饮行业解决方案之业务设计流程
供应链需求调研CheckList
企业应用之性能实时度量系统演变

如有想了解更多软件设计与架构, 系统IT,企业信息化, 团队管理 资讯,请关注我的微信订阅号:

MegadotnetMicroMsg_thumb1_thumb1_thu[2]

作者:Petter Liu
出处:http://www.cnblogs.com/wintersun/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 该文章也同时发布在我的独立博客中-Petter Liu Blog。

posted on 2022-02-26 18:52  PetterLiu  阅读(614)  评论(0编辑  收藏  举报