将 Azure API 管理与 Azure Kubernetes 服务中部署的微服

时间:2021-07-15 | 标签: | 作者:Q8 | 来源:Microsoft Azure网络

小提示:您能找到这篇{将 Azure API 管理与 Azure Kubernetes 服务中部署的微服}绝对不是偶然,我们能帮您找到潜在客户,解决您的困扰。如果您对本页介绍的将 Azure API 管理与 Azure Kubernetes 服务中部署的微服内容感兴趣,有相关需求意向欢迎拨打我们的服务热线,或留言咨询,我们将第一时间联系您!

< ">微服务非常适合用于生成Api。使用Azure Kubernetes Service(AKS),你可以在云中快速部署和运行基于微服务的体系结构。然后,你可以利用AZURE Api管理(api管理)将微服务作为api发布到内部和外部使用。本文介绍了通过AKS部署API管理的选项。它假定Kubernetes、API管理和Azure网络的基本知识。

< ">背景

< ">将微服务发布为用于使用的Api时,管理微服务和使用它们的客户端之间的兔狗科技通信可能会很困难。需要考虑多种跨切削问题,例如身份验证、授权、限制、缓存、转换和监视。不管是否向内部或外部客户端公开微服务,这些问题都是有效的。

< ">API网关模式解决了这些问题。API网关充当微服务的前端,将客户端与微服务分离,增加额外的安全层,并通过消除处理交叉切削问题的负担,降低微服务的复杂性。

< ">AZURE Api管理是一种全包式解决方案,用于解决API网关需求。可以为微服务快速创建一致的新式网关,并将其发布为Api。它还提供了其他功能,包括用于API发现、API生命周期管理和API分析的自助服务开发人员门户。

< ">结合使用时,AKS和API管理提供了一个平台,用于部署、发布、保护、监视和管理基于微服务的Api。在本文中,我们将逐步介绍几个与API管理一起部署AKS的选项。

< ">Kubernetes服务和Api

< ">在Kubernetes群集中,容器部署在pod中,并具有生命周期。辅助角色节点停止运行时,节点上运行的盒将丢失。因此,Pod的IP地址可随时更改。我们不能依靠它来与pod通信。

< ">为了解决此问题,Kubernetes引入了服务的概念。Kubernetes服务是一种抽象层,它定义了pod的逻辑组,并为这些pod启用了外部流量泄露、负载平衡和服务发现。

< ">当我们准备通过API管理将微服务发布为Api时,我们需要考虑如何将Kubernetes中的服务映射到API管理中的Api。没有设置规则。这取决于你在一开始就将业务功能或域划分到微服务中的方式。例如,如果服务背后的pod负责给定资源的所有操作(例如,客户),则该服务可能会映射到一个API。如果对资源的操作分区为多个微服务(例如,GetOrder、PlaceOrder),则可在API管理中将多个服务逻辑聚合为一个API(请参阅图1)。

< ">映射也可以发展。由于API管理在微服务的前面创建了一个外观,因此,我们可以在一段时间内重构微服务并调整舆情监测的作用其大小。

< ">将服务映射到Api

< ">在AKS之前部署API管理

< ">有几个选项可用于在AKS群集前面部署API管理。

< ">尽管AKS群集始终部署在虚拟网络中(VNet),但不需要在VNet中部署API管理实例。如果API管理不在群集VNet中,AKS群集必须发布公共终结点,以便API管理连接到。在这种情况下,需要保护API管理和AKS之间的连接。换句话说,我们需要确保群集只能通过API管理以独占方式访问。我们来看一下这些选项。

< ">选项1:公开公开服务

< ">可以使用NodePort、LoadBalancer或ExternalName服务类型公开公开AKS群集中的服务。在这种情况下,可以直接从公共internet访问服务。将API管理部署到群集之前,我们需要确保所有入站流量通过API管理,方法是在微服务中应用身份验证。例如,API管理可以在对群集发出的每个请求中包含一个访问令牌。每个微服务负责在处理请求之前验证令牌。

< ">这可能是在AKS之前部署API管理的最简单选项,尤其是在微服务中实现了身份验证逻辑时。

直接发布服务

< ">优点:

< ">API管理端上的轻松配置,因为无需注入群集VNet

< ">如果服务已公开公开并且微服务中已存在身份验证逻辑,则无AKS端的更改。

< ">缺点:

< ">服务终结点的公共可见性导致的潜在安全风险

< ">没有入站群集流量的单一入口点



< ">利用重复的身份验证逻辑使微服务复杂化

< ">选项2:安装入口控制器

< ">尽管选项1可能更简单,但它具有上面提到的显著缺点。如果API管理实例不在群集VNet中,则相互TLS身份验证(mTLS)是一种可靠的方式,可确保在API管理实例和AKS群集之间的两个方向上都安全且信任流量。

< ">API管理以本机方式支持相互TLS身份验证,并且可在Kubernetes中通过安装入口控制器(图3)启用。因此,将在入口控制器中执行身份验证,这将简化微服务。此外,可以通过入口将API管理的IP地址添加到允许列表,以确保只有API管理可以访问群集。

通过入口控制器发布

< ">优点:

< ">API管理端上的轻松配置,因为无需注入群集VNet,而mTLS是本机支持的

< ">为入口控制器层上的入站群集流量集中保护

< ">通过最大程度减少公开可见的群集终结点来降低安全风险

< ">缺点:



< ">增加群集配置的复杂性,原因是安装、配置和维护入口控制器并管理用于mTLS的证书

< ">由于入口控制器终结点的公开可见性(s的安全风险)

< ">通过API管理发布API时,使用订阅密钥保护对这些API的访问容易且常见。需要使用已发布API的开发人员在调用这些API时必须在HTTP请求中包括一个有效的订阅密钥。否则,API管理网关会立即拒绝调用。不会将它们转发到后端服务。

< ">若要获取访问API所需的订阅密钥,必须拥有订阅。订阅实质上是一个已命名的容器,该容器包含一对订阅密钥。需要使用已发布API的开发人员可以获取订阅。不需要API发布者批准。API发布者也可以直接为API使用者创建订阅。

< ">选项3:在群集VNet内部署APIM

< ">在某些情况下,由于公开的终结点,具有法规约束或严格安全要求的客户可能会找到选项1和2不可行的解决方案。在其他情况下,AKS群集和使用微服务的应用程序可能驻留在同一VNet中,因此没有理由公开群集,因为所有API流量将保留在VNet中。在这些情况下,你可以将API管理部署到群集VNet中。API管理高级层支持VNet部署。

< ">将API管理部署到VNet中的模式有两种:外部和内部。

< ">如果API使用者不在群集VNet中,则应使用外部模式(图4)。在此模式下,API管理网关注入群集VNet,但可通过外部负载均衡器从公共internet访问。它有助于完全隐藏群集,同时仍允许外部客户端使用微服务。此外,还可以使用Azure网络功能,例如网络安全组(NSG)来限制网络流量。

外部VNet模式

< ">如果所有API使用者都驻留在群集VNet中,则可以使用内部模式(图5)。在此模式下,API管理网关注入群集VNET,只能通过内部负载均衡器在此VNet内访问。无法从公共internet访问API管理网关或AKS群集。

内部VNet模式

< ">在这两种情况下,AKS群集都不公开可见。与选项2相比,入口控制器可能不是必需的。根据你的方案和配置,可能仍需要在API管理与微服务之间进行身份验证。例如,如果采用服务网格,则它始终需要相互TLS身份验证。

< ">优点:

< ">最安全的选项,因为AKS群集没有公共终结点

< ">简化群集配置,因为它没有公共终结点

< ">能够使用内部模式在VNet中隐藏API管理和AKS

< ">使用Azure网络功能控制网络流量的能力(NSG的网络安全组)

< ">缺点:

< ">增加在VNet中部署和配置API管理的复杂性

将 Azure API 管理与 Azure Kubernetes 服务中部署的微服

上一篇:关于Azure API 管理
下一篇:欢迎使用 Azure Cosmos DB


版权声明:以上主题为“将 Azure API 管理与 Azure Kubernetes 服务中部署的微服"的内容可能是本站网友自行发布,或者来至于网络。如有侵权欢迎联系我们客服QQ处理,谢谢。
相关内容
推荐内容
扫码咨询
    将 Azure API 管理与 Azure Kubernetes 服务中部署的微服
    打开微信扫码或长按识别二维码

小提示:您应该对本页介绍的“将 Azure API 管理与 Azure Kubernetes 服务中部署的微服”相关内容感兴趣,若您有相关需求欢迎拨打我们的服务热线或留言咨询,我们尽快与您联系沟通将 Azure API 管理与 Azure Kubernetes 服务中部署的微服的相关事宜。

关键词:将,Azure,API,管理与,Azure,K

关于 | 业务 | 案例 | 免责 | 隐私
客服邮箱:sales@1330.com.cn
电话:400-021-1330 | 客服QQ:865612759
沪ICP备12034177号 | 沪公网安备31010702002418号