导语

以Kubernetes的Kong为例,聊聊当前流行的开源且与云无关的Ingress控制器。

正文

您可以通过使用诸如Kong for Kubernetes的Ingress控制器(使用自定义资源定义并提供许多插件)来极大地扩展Ingress资源的功能。

Kubernetes正在整个技术行业中得到采用,并且正逐渐成为现代云服务交付的实际编排平台。Kubernetes不仅提供了用于在云中部署微服务的原语,而且更进一步,帮助开发人员定义交互并管理其API的生命周期。

Kubernetes中的Ingress API允许您将微服务公开给外部世界,并为南北流量(即进入虚拟数据中心的流量)定义路由策略。使用Ingress 使用持续集成和持续交付(CI / CD)管道来管理API生命周期的好处很多,但是在我们介绍这些之前,让我们从一些基础知识开始。

Ingress资源的设计和目的

Kubernetes集群的最简单描述是在容器中运行应用程序的一组受管节点。在大多数情况下,Kubernetes集群中的节点不会直接暴露于公共互联网。这是有道理的,因为将所有服务公开在一个节点上会带来不可思议的风险。为了向公众提供对选定服务的访问,Kubernetes提供了Ingress资源。

Ingress资源公开了从群集外部到其中的选定服务的HTTP和HTTPS路由。Ingress资源还提供控制流量的规则。这使得Ingress资源成为处理大量独立服务提供的各种API的理想解决方案。为此,它为所有客户端提供一个入口点,然后处理对后端服务的请求。这通常称为扇出配置。

还可以为基于名称的虚拟主机设置Ingress资源,该资源将基于主机头路由请求:

为了使Ingress资源正常工作,需要在Kubernetes集群上安装Ingress控制器。控制器在Kubernetes集群和现有的各种面向公众的接口之间建立了桥梁。例如,大多数托管Kubernetes的云提供商都提供了一个独特的Ingress控制器,以与他们规定的面向公众的方法对接。各个控制器的操作彼此不同,并且可以提供不同数量的附加功能。

使用Ingress通过CI / CD管道管理API生命周期的好处

Ingress资源是通过声明性配置文件定义的,该文件通常在YAML中进行描述。这与所有Kubernetes资源一致,并允许直接集成到现代部署模式中,例如CI / CD的组合实践。这就是快速,频繁且安全地部署Ingress更改的能力。这样,可以将Ingress资源与应用程序本身合并到相同类型的软件开发生命周期模式中。

开发人员如何使用Kong for Kubernetes完成Ingress

面向Kubernetes的Kong是一个流行的开源且与云无关的Ingress控制器。Kong for Kubernetes入口控制器是作为Kubernetes中的自定义资源定义(CRD)构建的。这为那些已经习惯在该平台内定义资源的人提供了Kubernetes原生体验。

像您的应用程序和服务一样,可以通过Manifest,Helm或Kustomize安装Kong for Kubernetes。

Kong for Kubernetes Ingress Controller通过提供广泛的插件集来扩展Ingress资源的功能,这些插件涵盖了包括身份验证,分析,监视以及请求和响应转换在内的各种功能,仅举几例。通过在Ingress控制器上提供这些常见(有时不是很常见)的要求,Kong for Kubernetes可使开发人员将更多精力放在服务的核心要求上。当组织从少数的单一应用程序迁移到数百个(甚至数千个)微服务时,其价值变得尤为明显。

有关常见插件的列表,请访问 https://docs.konghq.com/hub/。

Kong插件被定义为Kubernetes资源,其中的config部分提供了各个插件的设置。以下是一个限速插件示例,该插件将流量限制为每分钟五个请求:

通过在资源的元数据部分中的简单注释即可将Kong插件添加到Kubernetes资源中。这允许将插件应用于不同的层。例如,您可以将一个插件应用于整个Ingress资源,或者以一种更细粒度的方式将其应用于单个服务资源。

这是将上述插件应用于Ingress资源的示例:

Kong for Kubernetes还可以集成到Kong Enterprise产品的完整套件中,包括Kong Studio,Kong Dev Portal,Kong Manager,  Kong Brain和Kong Immunity。这样就可以使用更高级的Kong插件以及完整的API生命周期解决方案。这套产品涵盖API规范的创作和发布,以及Kong资源的管理,甚至流量分析。

您可以采用“规范优先”的方法来使用Kong Studio开发API。在该库中,您将找到用于在标准OpenAPI规范中编写文档的工具以及用于立即反馈的测试工具。Kong Studio还提供了使用GraphQL的工具。Kong Studio直接同步到Git,这可以将您的规格文件集成到CI / CD工作流程中,从而可以自动更新Kong Dev Portal。

Kong Dev Portal托管您的API文档(可以是私人的也可以是公共的)。它具有极高的可定制性,可让您使其适应组织的风格和品牌。拥有完善文档的API对于提高生产力很重要,并且在Kong Studio和Dev Portal之间进行良好管理的流程可以帮助确保文档尽可能保持最新。

Kong Manager提供了图形界面来观察和管理整个Kong产品套件。从这里,您可以观察路由,服务和插件之间的关系。您可以实时了解流量并跟踪消费者。

Kong Brain会分析通过Ingress的流量,并创建服务间依赖关系的可视服务图。它还具有根据生成的地图自动生成OpenAPI规范文档的功能。这是一项有价值的功能,因为即使出于最佳意图,也可能无法正确记录所部署的服务。

Kong Immunity会分析通过Ingress的所有流量,并学习识别异常的模式。这些通常是微妙的请求,它们并不引人注目,但可能会引起人们的兴趣,例如不断尝试通过的未知参数。这也是一个非常有价值的功能,因为将这些针刺入成千上万个日志条目的大海捞针并不容易。

充分利用Ingress

Kubernetes入口资源提供了从外部Kubernetes到内部后端服务的单个入口点。通过利用声明性定义文件,可以像对待所有其他形式的代码一样对待Ingress资源,并将其集成到常见的软件开发生命周期中。

为了桥接Kubernetes之外的通信,需要一个Ingress控制器。Kong for Kubernetes是一个Ingress控制器,它使用自定义资源定义通过提供大量插件来极大地扩展Ingress资源的功能,从而使开发人员可以专注于核心业务价值。Kong拥有一套企业工具,可以在整个API生命周期内极大地提高生产力和安全性。

干货分享:如何使用Kubernetes的Ingress API相关推荐

  1. 【干货分享】云服务平台的架构及优势(上)

    来源商业新知网,原标题:[干货分享]云服务平台的架构及优势(上) 前言 我们通常所说的云服务或云平台广义上是一个概念,但其实内部是两个部分. 1.支撑云服务运行的硬件和软件系统环境(云架构平台,简称云 ...

  2. vs code vue插件_干货分享 | Vue框架常见问题浅谈

    友情提示:全文7800多文字,预计阅读时间10分钟 Vue是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层,不仅易于上手, ...

  3. eureka 之前的服务如何关闭_干货分享 | 服务注册中心Spring Cloud Eureka部分源码分析...

    友情提示:全文13000多文字,预计阅读时间10-15分钟 Spring Cloud Eureka作为常用的服务注册中心,我们有必要去了解其内在实现机制,这样出现问题的时候我们可以快速去定位问题.当我 ...

  4. Kubernetes 部署 Ingress 控制器 Traefik v1.7.4

    标签: kubernetes   ingress   traefik   nginx   haproxy   kong 介绍 Traefik Ingress 对象 上节课我们学习了在Kubernete ...

  5. Kubernetes 部署 Ingress 控制器 Traefik v2.1

    目录[-] . 一.Traefik 简介 . 二.Kubernetes 部署 Traefik . 1.创建 CRD 资源 . 2.创建 RBAC 权限 . 3.创建 Traefik 配置文件 . 4. ...

  6. android 移除泛型中元素_最新(2020)Android高级面试知识点干货分享(二)

    最新Android高级面试知识点干货分享(一) *转载请说明出处*! 四.Java集合(List.Set.Queue.Map) Java集合体系是一个树状,如果按照类似OSI网络模型来看的话,整个Ja ...

  7. 干货 | 京东云托管Kubernetes集成镜像仓库并部署原生DashBoard

    干货 | 京东云托管Kubernetes集成镜像仓库并部署原生DashBoard 原创: 成晨 京东云开发者社区  昨天 在上一篇"Cloud Native 实操系列"文章中,我们 ...

  8. (修订)斩获腾讯微信后台开发offer大神的近1.5W字的面试干货分享

    微信又改版了,为了方便第一时间看到我的推送,请按照下列操作,设置"置顶":点击上方蓝色字体"程序员乔戈里"-点击右上角"-"-点击" ...

  9. kubernetes的ingress:Ingress controller,traefik

    文章目录 Ingress介绍 nginx ingress controller ingress URL Rewrite Basic Auth 灰度发布等各种发布方式 HTTPS CertManager ...

最新文章

  1. 几篇关于Hadoop+Hive数据仓库的入门文章
  2. 相机成像原理_数码相机的工作原理
  3. 怎么在电脑安装php文件夹在哪个文件夹,php进行文件上传时找不到临时文件夹怎么办,电脑自动保存的文件在哪里...
  4. 低学历的人就不能创业了吗?
  5. 使用Json.net进行序列化时,如何更改属性名称?
  6. Bailian4129 变换的迷宫【BFS】
  7. Cocos2d-x属性变化动作
  8. 批处理文件(.bat)的写法——DOS命令大全
  9. 傅立叶级数到傅立叶变换推导与理解
  10. 螺旋无限延伸_无限螺旋篇 其之四
  11. Queen Collisions(分行列模拟)
  12. Mycat(7):分片详解之枚举
  13. Javascript-循环
  14. 论文:麦克风阵列增强
  15. 江浙沪计算机调剂,往年有调剂缺额的江浙沪985/211,竞争较小
  16. 获取页面form表单对象的方式
  17. (java)scanner.next()与scanner.nextLine()的区别
  18. 2019学硕计算机分数,2019计算机考研408分数要求以及复习攻略?
  19. 联通C网彩信群发的问题
  20. 【项目精选】JAVA_JSP电子政务网(源码+视频+论文)

热门文章

  1. OAuth认证与授权
  2. centos 7.1 apache 源码编译安装
  3. RTP在。net中的使用(资料)
  4. 12月16日课程安排
  5. asp.net网页上嵌入Flash显示
  6. 收银员英文缩写_如何在没有收银员的苹果商店购买东西
  7. 【Filecoin源码仓库全解析】第一章:搭建Filecoin测试节点
  8. 在Kubernetes集群上部署和管理JFrog Artifactory
  9. 洛谷P4364 [九省联考2018]IIIDX(线段树)
  10. javascript高程3 学习笔记(三)