您可以通过使用诸如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. 32位汇编第四讲,干货分享,汇编注入的实现,以及快速定位调用API的数量(OD查看)

    32位汇编第四讲,干货分享,汇编注入的实现,以及快速定位调用API的数量(OD查看) 昨天,大家可能都看了代码了,不知道昨天有没有在汇编代码的基础上,实现注入计算器. 如果没有,今天则会讲解,不过建议 ...

  2. 逆向实用干货分享,Hook技术第一讲,之Hook Windows API

    逆向实用干货分享,Hook技术第一讲,之Hook Windows API 作者:IBinary出处:http://www.cnblogs.com/iBinary/版权所有,欢迎保留原文链接进行转载:) ...

  3. Kubernetes笔记(三):Gitlab+Jenkins Pipeline+Docker+k8s+Helm自动化部署实践(干货分享!)

    通过前面两篇文章,我们已经有了一个"嗷嗷待哺"的K8s集群环境,也对相关的概念与组件有了一个基本了解(前期对概念有个印象即可,因为只有实践了才能对其有深入理解,所谓"纸上 ...

  4. 干货分享:SQLSERVER使用裸设备

    干货分享:SQLSERVER使用裸设备 这篇文章也适合ORACLE DBA和MYSQL DBA 阅读 裸设备适用于Linux和Windows 在ORACLE和MYSQL里也是支持裸设备的!! 介绍 大 ...

  5. 【干货分享】Node.js 中文资料导航

    这篇文章与大家分享一批高质量的的 Node.js 中文资料.Node.js 是一个基于 Chrome JavaScript 运行时建立的一个平台, 用来方便地搭建快速的, 易于扩展的网络应用 Node ...

  6. kubernetes nginx ingress 使用记录

    前言 ingress是一种可以暴露k8s集群内部service的方式,用户编辑配置文件定义一个ingress资源即可实现外部网络访问内网service. ingress controller是来管理所 ...

  7. kubernetes Traefik ingress配置详解

    理解Ingress 简单的说,ingress就是从kubernetes集群外访问集群的入口,将用户的URL请求转发到不同的service上.Ingress相当于nginx.apache等负载均衡方向代 ...

  8. 【转】Kubernetes的Ingress控制器比较

    Kubernetes的Ingress控制器比较 fiisio Kubernetes/云计算/资源调度/Go语言 21 人赞同了该文章 翻译:https://medium.com/flant-com/c ...

  9. Kubernetes---Service(SVC)服务--ingress api

    对于k8s传统的svc来说 它仅支持4层代理,如果遇到7层代理的话,是没有办法去实现的 k8s官方在1.11中推出了ingress api接口,通过ingress达到7层代理的效果 对于ingress ...

随机推荐

  1. 不论是 Basic Auth 还是 Digest Auth,都会有 Authorization 字段

    GET /dir/index.html HTTP/1.0 Host: localhost Authorization: Digest username="Mufasa", real ...

  2. Makefile 头文件 <> 与 "" 的差别,与 Visual Studio 不同

    #include "" : 首先在所有被编译的.c所在的路径中,查找头文件,如果找不到,则到 -I路径下去找头文件 #inclue <> :首先在-I路径下去找,如果找 ...

  3. GIT分布式版本控制

    1.1Git简介 linus 用C语言编写 2005年诞生 分布式版本管理系统 速度快,适合大规模,跨地区多人协同开发 Git不仅是一款开源的分布式版本控制系统,而且有其独特的功能特性,例如大多数的分 ...

  4. asList和ArrayList不得不说的故事

    目录 简介 创建ArrayList UnsupportedOperationException asList 转换 总结 asList和ArrayList不得不说的故事 简介 提到集合类,ArrayL ...

  5. tensor的复制函数torch.repeat_interleave()

    1. repeat_interleave(self: Tensor, repeats: _int, dim: Optional[_int]=None) 参数说明: self: 传入的数据为tensor ...

  6. .net 使用TCP模拟UDP广播通信加强广播通信的稳定性

    应用场景:当每一台终端开启程序后发出消息,其他终端必须收到消息然后处理 思路1:使用UDP广播.     缺点:UDP广播信号不稳定,无法确定每一台机器能接收到信号 思路2:将一台主机作为服务器,使用 ...

  7. Top 命令数据分析

    一.top 命令详解 当前时间 20:27:12 当前系统运行时间 3:18秒 1个用户 系统负载平均长度为 0.00,0.00,0.00(分别为1分钟.5分钟.15分钟前到现在的平均值) 第二行为进 ...

  8. unittest(封装用例)

    from selenium import webdriver from time import sleep import unittest #导入unittest库 import HTMLTestRu ...

  9. startUML简单使用教程

    最近在startUML上画图搞得我一个头两个大,找了一些比较实用的小方法分享给大家. 类图是可视化地表现类的属性和方法,以及类与类之间的关系. 1.类 a.类 普通实体类,它有对应的属性和方法: 双击 ...

  10. 学习Vue第一节,Vue的模式与写法格式

    引用Vue <script src="js/vue-2.4.0.js" type="text/javascript" charset="utf- ...