您可以通过使用诸如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. Python(4)

    lst = [1,2,4,8,16,32,64,128,256,512,1024,32769,65536,4294967296] # 输出 { 1:[1,2,3,8], 2:[16,32,64], 3 ...

  2. 咦,Java拆分个字符串都这么讲究

    提到 Java 拆分字符串,我猜你十有八九会撂下一句狠话,"这有什么难的,直接上 String 类的 split() 方法不就拉到了!"假如你真的这么觉得,那可要注意了,事情远没这 ...

  3. HashMap源码解析JDK8

    一.HashMap基础 1.1 HashMap的定义 我们先看一下HashMap的定义: public class HashMap<K,V> extends AbstractMap< ...

  4. 基于jenkins自动打包并部署Tomcat环境

    传统网站部署的流程 在运维过程中,网站部署是运维的工作之一.传统的网站部署的流程大致分为:需求分析->原型设计->开发代码->提交代码->内网部署->内网测试->确 ...

  5. 基于NFS共享存储实现KVM虚拟机动态迁移

    基于NFS共享存储实现KVM虚拟机动态迁移 一:配置环境 二:安装相关的依赖包 三:实现NFS共享存储 四:KVM机配置相同的步骤 五:安装KVM01安装虚拟机 六:实现迁移  实验初始配置:所有主机 ...

  6. 【Linux常见命令】wc命令

    wc - print newline, word, and byte counts for each file wc命令用于计算字数. 利用wc指令我们可以计算文件的Byte数.字数.或是列数,若不指 ...

  7. Hard filters (by GATK)

    Filter Symbol T. Definition QualByDepth QD 2.0 The variant confidence (from the QUAL field) divided ...

  8. Condition的await()和signal()流程

    介绍 Condition是j.u.c包下提供的一个接口. 可以翻译成 条件对象,其作用是线程先等待,当外部满足某一条件时,在通过条件对象唤醒等待的线程.ArrayBlockingQueue就是通过Co ...

  9. 小猪的Python学习之旅 —— 16.再尝Python数据分析:采集拉勾网数据分析Android就业行情...

    一句话概括本文: 爬取拉钩Android职位相关数据,利用numpy,pandas和matplotlib对招人公司 情况和招聘要求进行数据分析. 引言: 在写完上一篇<浅尝Python数据分析: ...

  10. nodeJS生成xlsx以及设置样式

    参考: https://www.npmjs.com/package/xlsx-style https://www.jianshu.com/p/877631e7e411 https://sheetjs. ...