Kubernetes正在整个技术行业中得到采用,并且正逐渐成为现代云服务交付的实际编排平台。 Kubernetes不仅提供了在云中部署微服务的原语,而且更进一步,帮助开发人员定义交互并管理其API的生命周期。
Kubernetes中的Ingress API允许您将微服务公开给外界,并为南北流量(即进入虚拟数据中心的流量)定义路由策略。
[ 同样在InfoWorld上:隔离期间最好的免费编程课程 ]
使用带有Ingress的持续集成和持续交付 ( CI / CD )管道管理API生命周期的好处很多,但是在我们涵盖这一点之前,让我们从一些基础知识开始。
Ingress资源的设计和目的
Kubernetes集群的最简单描述是在容器中运行应用程序的一组受管节点。 在大多数情况下,Kubernetes集群中的节点不会直接暴露于公共互联网。 这是有道理的,因为将所有服务公开在一个节点上会带来不可思议的风险。 为了向公众提供对选定服务的访问,Kubernetes提供了Ingress资源。
Ingress资源公开了从群集外部到其中的选定服务的HTTP和HTTPS路由。 Ingress资源还提供控制流量的规则。 这使得Ingress资源成为处理大量独立服务提供的各种API的理想解决方案。 为此,它为所有客户端提供一个入口点,然后处理对后端服务的请求。 这通常称为扇出配置。
![k8s入口01](https://images.idgesg.net/images/article/2020/05/k8s-ingress-01-100841247-large.jpg)
还可以为基于名称的虚拟主机设置Ingress资源,该资源将根据主机头路由请求:
![k8s入口02](https://images.idgesg.net/images/article/2020/05/k8s-ingress-02-100841248-large.jpg)
为了使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部分提供了各个插件的设置。
[ 同样在InfoWorld上:每个开发人员心血来潮的17个聪明的API ]
以下是一个速率限制插件的示例,该插件将流量限制为每分钟五个请求:
![k8s入口03](https://images.idgesg.net/images/article/2020/05/k8s-ingress-03-100841249-large.jpg)
通过在资源的元数据部分中的简单注释即可将Kong插件添加到Kubernetes资源中。 这允许将插件应用于不同的层。 例如,您可以将一个插件应用于整个Ingress资源,或者以一种更精细的方式将其应用于单个服务资源。
这是将上述插件应用于Ingress资源的示例:
![k8s入口04](https://images.idgesg.net/images/article/2020/05/k8s-ingress-04-100841250-large.jpg)
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的所有流量,并学习识别异常的模式。 这些通常是微妙的请求,它们并不引人注目,但可能会引起人们的兴趣,例如不断尝试通过的未知参数。 这也是非常有价值的功能,因为将这些针刺入成千上万个日志条目的大海捞针并不容易。
![k8s入口05](https://images.idgesg.net/images/article/2020/05/k8s-ingress-05-100841251-large.jpg)
充分利用Ingress
Kubernetes入口资源提供了从外部Kubernetes到内部的后端服务的单个入口点。 通过利用声明性定义文件,可以像对待所有其他形式的代码一样对待Ingress资源,并将其集成到通用软件开发生命周期中。
[ 同样在InfoWorld上:我们不像以前那样编写代码的5个原因 ]
为了桥接Kubernetes之外的通信,需要一个Ingress控制器。 Kong for Kubernetes是一个Ingress控制器,它使用自定义资源定义通过提供大量插件来极大地扩展Ingress资源的功能,从而使开发人员可以专注于核心业务价值。 Kong拥有一套企业工具,可以在整个API生命周期内极大地提高生产力和安全性。
旧金山的发明家,软件开发人员和互联网企业家Marco Palladino是 Kong Inc. 的首席技术官和联合创始人 。
-
新技术论坛提供了一个以前所未有的深度和广度探索和讨论新兴企业技术的场所。 选择是主观的,是基于我们选择的技术,我们认为这些技术对InfoWorld读者来说是重要的,也是他们最感兴趣的。 InfoWorld不接受发布的营销担保,并保留编辑所有贡献内容的权利。 将所有查询发送到newtechforum@infoworld.com 。
翻译自: https://www.infoworld.com/article/3542633/how-to-use-the-kubernetes-ingress-api.html