Azure Kubernetes 服务 (AKS) 中的入口

AKS 中的入口是一种 Kubernetes 资源,用于管理对群集中服务的类似外部 HTTP 的流量访问。 AKS 入口可以提供负载均衡、SSL 终止和基于名称的虚拟托管等服务。 有关 Kubernetes 入口的详细信息,请参阅 Kubernetes 入口文档

入口控制器

管理应用程序流量时,入口控制器可通过在第 7 层运行来提供高级功能。 它们可以基于入站 URL 将 HTTP 流量路由到不同的应用程序,从而支持更智能和灵活的流量分配规则。 例如,入口控制器可以根据 URL 路径将流量定向到不同的微服务,从而提高服务的效率和组织。

另一方面,创建 LoadBalancer 类型的服务会设置基础 Azure 负载均衡器资源。 此负载均衡器在第 4 层工作,从而在指定的端口上将流量分发到服务中的 Pod。 但第 4 层服务不了解实际的应用程序,无法实现这些类型的复杂传递规则。

了解这两种方法之间的区别将有助于选择合适的工具来满足流量管理需求。

显示 AKS 群集中入口流量的示意图

比较入口选项

下表列出了不同入口控制器选项之间的功能差异:

功能 应用程序路由加载项 适用于容器的应用程序网关 Azure 服务网格/基于 Istio 的服务网格
入口/网关控制器 NGINX 入口控制器 适用于容器的 Azure 应用程序网关 Istio 入口网关
API 入口 API 入口 API 和网关 API Istio 入口 API
承载 在群集中 Azure 托管 在群集中
缩放 自动缩放 自动缩放 自动缩放
负载均衡 内部/外部 外部 内部/外部
SSL 终止 在群集中 是:卸载和 E2E SSL 在群集中
mTLS 空值 是到后端 空值
静态 IP 地址 空值 FQDN 空值
Azure Key Vault 存储的 SSL 证书 空值
用于 DNS 区域管理的 Azure DNS 集成 空值

下表列出了可以使用每个入口控制器的不同方案:

入口选项 何时使用
托管 NGINX - 应用程序路由加载项 • 群集中托管、可自定义且可缩放的 NGINX 入口控制器。
• 基本负载均衡和路由功能。
• 内部和外部负载均衡器配置。
• 静态 IP 地址配置。
• 与 Azure Key Vault 集成,以便进行证书管理。
• 与 Azure DNS 区域集成,以便进行公共和专用 DNS 管理。
• 支持入口 API。
适用于容器的应用程序网关 • Azure 托管入口网关。
• 由控制器管理的灵活部署策略,或自带适用于容器的应用程序网关。
• 先进的流量管理功能,如自动重试、可用性区域复原能力、后端目标的相互身份验证 (mTLS)、流量拆分/加权轮循机制以及自动缩放。
• 与 Azure Key Vault 集成,以便进行证书管理。
• 与 Azure DNS 区域集成,以便进行公共和专用 DNS 管理。
• 支持入口和网关 API。
Istio 入口网关 • 与 Istio 一起用于服务网格时,基于 Envoy。
• 高级流量管理功能,例如速率限制和断路。
• 对 mTLS 的支持

注意

用于 Istio 入口流量 的网关 API 尚不支持 Istio 加载项,但目前正在开发中。

创建入口资源

建议使用应用程序路由加载项在 AKS 中配置入口控制器。 应用程序路由加载项是 Azure Kubernetes 服务 (AKS) 的完全托管入口控制器,提供以下功能:

  • 基于 IngressKubernetes NGINX Ingress 控制器轻松配置托管 NGINX Ingress 控制器。

  • 与 Azure DNS 集成,以便进行公共区域和专用区域管理。

  • SSL 终止,证书存储在 Azure Key Vault 中。

有关应用程序路由加载项的详细信息,请参阅使用应用程序路由加载项的托管 NGINX 入口

客户端源 IP 保留

可配置入口控制器,以便在对 AKS 群集中的容器发出请求时保留客户端源 IP。 当入口控制器将客户端的请求路由到 AKS 群集中的容器时,该请求的原始源 IP 不可用于目标容器。 如果启用客户端源 IP 保留,则可以在请求标头中的 X-Forwarded-For 下使用客户端的源 IP。

如果在入口控制器上使用“客户端源 IP 保留”,则无法使用 TLS 直通。 可对其他服务(例如 LoadBalancer 类型的服务)使用“客户端源 IP 保留”和 TLS 直通。

若要详细了解客户端源 IP 保留,请参阅如何将客户端源 IP 保留用于 AKS 中的 LoadBalancer 服务