首页 > 解决方案 > 将 AKS 服务与 Azure API 管理一起使用

问题描述

我已将我的应用程序设置为由 AKS 中的 Kubernetes NGINX 入口提供服务。今天在尝试使用 Azure API 管理时,我尝试对其进行设置,以便进入入口控制器的所有流量都通过 API 管理。我将其后端服务指向入口控制器的当前公共地址,但我想知道何时将入口控制器设为私有或完全删除它以依赖 Kubernetes 服务,API 管理如何访问它以及我将如何定义后端API 管理中的服务。顺便说一句,在配置 API 管理实例时,我向 AKS 实例的现有虚拟网络添加了一个新子网,因此它们位于同一网络中。

标签: kubernetesazure-aksazure-api-management

解决方案


将 API 管理部署到 VNet有两种模式- 外部和内部。

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

在此处输入图像描述

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

在此处输入图像描述

在这两种情况下,AKS 群集都不是公开可见的。入口控制器可能不是必需的。根据您的场景和配置,API 管理和微服务之间可能仍需要身份验证。例如,如果采用 Service Mesh,它总是需要双向 TLS 身份验证。

优点:

  • 最安全的选项,因为 AKS 群集没有公共终结点
  • 简化集群配置,因为它没有公共端点
  • 能够使用内部模式在 VNet 中隐藏 API 管理和 AKS
  • 能够使用网络安全组 (NSG) 等 Azure 网络功能控制网络流量

缺点:

  • 增加了部署和配置 API 管理以在 VNet 中工作的复杂性

参考


若要限制对 Azure Kubernetes 服务 (AKS) 中的应用程序的访问,可以创建和使用内部负载均衡器。内部负载均衡器使 Kubernetes 服务只能被运行在与 Kubernetes 集群相同的虚拟网络中的应用程序访问。

您可以通过内部 Ingress公开 AKS 群集上的后端,也可以简单地使用内部负载均衡器类型的服务

然后,您可以将 API 网关的后端指向内部 Ingress 的私有 IP 地址或内部负载均衡器服务的外部 IP(也可以是私有 IP 地址)。这些专用 IP 地址可在虚拟网络和任何连接的网络中访问(即通过对等互连或 Vnet 到 Vnet 网关连接的 Azure 虚拟网络,或连接到 AKS Vnet 的本地网络)。在您的情况下,如果 API 网关部署在同一个虚拟网络中,那么它应该能够访问这些私有 IP 地址。如果 API 网关部署在不同的虚拟网络中,请使用VNET Peering 或 Vnet-to-Vnet Gateway将其连接到 AKS 虚拟网络,具体取决于您的用例。


推荐阅读