我们正在寻找一种 Azure 解决方案,用于通过单个入口点将传入的 API 消息(基于微服务)路由到多个Azure Web App
实例 (*.azurewebsites.net),而不是多个虚拟机。
路由将基于 URL,因为 URL 部分包含微服务名称。之后,我们打算使用相同的服务进行负载均衡。
目前我们正在使用nginx
带有 URL 重定向的自定义服务器来执行此操作,但我们想知道是否可以使用本机 Azure 服务。
到目前为止,它似乎Azure Application Gateway
是面向 VM 的。
有一个名为Azure Kubernetes Service (AKS)的本机 Azure 服务。它可用于在标准化环境中操作容器。
Kubernetes 有一个名为Ingress的对象,它是一种描述系统提供的基于 HTTP 的服务以及它们背后的相应后端服务的声明性方式。有多种Ingress Controller实现可供您选择,它们将 Ingress 对象描述的服务集转变为实际工作的反向代理/负载均衡器,并具有适当的配置。NGINX Ingress Controller是这些实现之一,是基础 Kubernetes 项目的一部分。它使用由 Ingress Controller 配置和控制的 nginx 反向代理。
作为 Ingress 对象的目标,您可以使用类型 ExternalName Service对象来引用 AKS 外部的目标服务,或者您可以使用其他类型的 Service 对象来引用 AKS 内部的目标服务。
概述
不要害怕陷入困境的公民;Azure API 管理来拯救你!
Azure API 管理允许您使用单个端点进行摄取,并允许您对AKS、Azure Web 应用程序、逻辑应用程序或更多中的各种服务进行基于 URL 的路由!如果需要,您甚至可以将其路由到应用程序网关。
它还允许您通过无需编写完整的新应用程序以在 AKS 或其他服务中托管来帮助保护您的服务。它还允许您将机密安全地存储在资源中,这样您就不需要在代码中存储凭据。
由于该解决方案是无服务器的,因此您可以大大减少您的责任,同时最大限度地提高回报、安全性和可维护性。不需要凌乱的 helm/AKS 清单。
图表
您可以查看 Azure 负载均衡器:
https://docs.microsoft.com/tr-tr/azure/load-balancer/load-balancer-overview