干货分享:如何使用Kubernetes的Ingress API

导读:以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的理想解决方案。为此,它为全部客户端提供一个入口点,而后处理对后端服务的请求。这一般称为扇出配置。spa

 

 

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

 

 

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

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

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生命周期内极大地提升生产力和安全性。

相关文章
相关标签/搜索