51CTO 博客地址:https://blog.51cto.com/14669127
需求:企业正在设计一个将托管在Azure Kubernetes 服务(AKS)集群中的微服务架构。使用这些微服务的应用程序将托管在Azure虚拟机上,同时虚拟机和AKS集群将驻留在同一个虚拟网络中,身份管理员的你需要设计一个解决方案来向Consumer Apps公开微服务,解决方案需要满足以下3点要求:
1. 对微服务的入口访问必须被限制为单个私有IP地址,并通过使用相互的TLS身份验证进行保护
2. 呼入的微服务呼叫数量必须有速率限制
3. 费用必须减至最低限制
解决方案分析:一种选择是在集群VNet中部署APIM(API Management),AKS集群和使用微服务的应用程序可能驻留在同一个VNet中,因此没有理由公开集群,因为所有的API通信都将保留在VNet中,对于这些场景,你可以将API Management部署到集群VNet中,API Management Premium Tier支持 VNet部署。
VNet中部署API Management有两种模式:外部和内部。
如果API Consumer不在Cluster VNet中,那么应该部署外部模式,如下图所示:
在这种模式下,API Management网关被注入到集群VNet中,但可以通过外部负载均衡器从公共Internet访问,它有助于完全隐藏集群,同时仍然允许external clients使用微服务,此外,你也可以使用Azure网络功能,比如网络安全组(NSG)来限制网络流量。
如果所有的API Consumers都在Cluster VNet中,那么可以使用内部模式,如下图所示:
在这种模式下,API Management 网关被注入到集群VNet中,并且只能通过内部负载均衡器从这个VNet中访问,从公共Internet无法到达API管理网关或AKS集群。
优点:
· 这是最安全的选项,因为AKS集群没有公共端点
· 简化了集群配置,因为它没有公共端点
· 能够使用内部模式在VNet中隐藏API Management和AKS
· 使用Azure网络功能(比如网络安全组NSG)控制网络流量的能力
Azure 虚拟网络 VNet允许你将任何Azure资源放置在一个非Internet可路由的网络中,你可以控制对网络的访问,然后可以使用各种VPN技术将这些网络连接到你的本地网络。Azure API管理可以部署在VNet中,这样它就可以访问网络中的后端服务,可以将开发人员门户和API网关配置为可以从Internet或者仅在虚拟网络中访问。
说明:如何使用Azure API Management和虚拟网络该功能仅在API Management Premium和Developer Tiers中可用。
配置中注意事项:
· 首先在Azure Portal中,启用VNet Connectivity
· 其次,在一个虚拟网路中连接web service hosted
相关资料:
· How to use Azure API Management with Virtual Networks
· Use Azure API Management with Microservices deployed in Azure Kubernetes Service