我已经建立了我的申请由一个库伯内特斯NGINX入口在AKS。今天,在试验Azure API管理时,我尝试设置它,以便入口控制器的所有流量都通过API管理。我将它的后端服务指向入口控制器的当前公共地址,但我想知道何时使入口控制器私有或完全删除它以依赖Kubernetes服务,API管理如何访问它,以及如何在API管理中定义后端服务。顺便说一下,在提供API管理实例时,我在AKS实例的现有虚拟网络中添加了一个新的子网,因此它们位于同一个网络中。
发布于 2021-10-03 15:31:58
将API管理部署到VNet中有外部和内部两种模式。
如果API使用者不在集群VNet中,则应该使用外部模式(如下图所示)。在这种模式下,网关被注入到集群VNet中,但通过外部负载均衡器从公共internet访问。它有助于完全隐藏集群,同时仍然允许外部客户端使用微服务。此外,您还可以使用Azure网络功能(如网络安全组(NSG) )来限制网络流量。

如果所有的API使用者都驻留在集群VNet中,那么可以使用内部模式(下图)。在这种模式下,网关被注入到集群VNET中,并且只能通过内部负载均衡器从这个VNet中访问。无法从公共internet访问API管理网关或AKS集群。

在这两种情况下,AKS集群都不是公开可见的。可能没有必要使用大会主计长。根据您的场景和配置,可能仍然需要在API管理和微服务之间进行身份验证。例如,如果采用服务网格,则始终需要相互的TLS身份验证。
优点:
缺点:
要限制对Azure Kubernetes服务(AKS)中应用程序的访问,可以创建和使用内部负载均衡器。内部负载均衡器使Kubernetes服务只对运行在与Kubernetes集群相同的虚拟网络中的应用程序访问。
您可以通过内部入侵公开AKS集群上的后端,也可以简单地使用型内负荷平衡器的服务。
然后,您可以将API网关的后端指向内部internal的私有IP地址或内部负载平衡器服务的外部IP (这也是一个私有IP地址)。这些私有IP地址可在虚拟网络和任何连接的网络内访问(即通过对等或Vnet到Vnet网关连接的Azure虚拟网络,或连接到AKS Vnet的现场网络)。在您的例子中,如果API网关部署在同一个虚拟网络中,那么它应该能够访问这些私有IP地址。如果API网关部署在不同的虚拟网络中,请使用VNET窥视或Vnet到Vnet网关将其连接到AKS虚拟网络,这取决于您的用例。
发布于 2022-09-17 17:00:40
现在起作用了吗。如果没有,请尝试在apim中添加vnet和子网。大多数情况下,这是不需要的,因为两者都是在同一个vnet中,我们可以直接通过privateip访问。请检查入口控制器中的路由配置是否正确。另一种选择是,仅用于测试,您可以通过避免入口控制器直接从api调用服务。这样我们就可以确保,没有任何请求被nsg或其他人阻止。
https://stackoverflow.com/questions/69423626
复制相似问题