为HTTPS访问配置AKS负载均衡器

use*_*383 6 azure azure-aks

我要将最初为AWS Fargate容器服务开发的应用程序移植到Azure下的AKS。在AWS实施中,将创建一个应用程序负载平衡器,并将其放置在UI微服务的前面。该负载平衡器配置为使用签名证书,从而允许https访问我们的后端。

我已经对此主题进行了一些搜索,以及如何在AKS中配置类似的内容。对于各种相似的问题,我已经找到了许多不同的答案,但没有一个正是我想要的。据我了解,Azure中没有与AWS方法完全相同的方法。AWS解决方案中的不同之处在于,您可以预先创建一个应用程序负载平衡器,并将其配置为使用证书,然后为后端UI微服务配置一个https侦听器。

在Azure情况下,当您发出“ az aks create”命令时,将自动创建负载均衡器。似乎没有办法进行大量配置,尤其是与证书有关的配置。我的印象是,AKS创建的默认负载均衡器最终不是用于此目的的机制。另一种选择可能是一个应用网关,如所描述这里。我不确定如何使此讨论适应AKS。UI窗格必须是通过应用程序网关的任何流量的最终目标,但是网关使用的子网与AKS集群中用于Pod的子网不同。

所以我不确定如何进行。我的问题是:应用程序网关是提供HTTP访问AKS集群中运行的UI的正确解决方案,还是我需要使用其他方法?

Jea*_*ond 5

没错,AKS 创建的默认负载均衡器是第 4 层 LB,不支持 SSL 卸载。与 Azure 中的 AWS 应用程序负载均衡器等效的是应用程序网关。截至目前,AKS 中没有允许选择应用程序网关而不是经典负载均衡器的选项,但正如 alev 所说,有一个正在进行的项目仍处于预览阶段,它将允许部署一个特殊的入口控制器来驱动基于您的入口规则的外部应用程序网关上的路由规则。如果您真的需要生产就绪的东西,这里是您的选择:

  1. 部署一个 Ingress 控制器,如NGINXTraefik等,并使用cert-manager生成您的证书。
  2. 创建一个应用程序网关并管理您自己的路由规则,该规则将指向默认的第 4 层 LB(k8s LoadBalancer 服务或通过入口控制器)

我们最近实现了类似的东西,我们决定管理我们自己的应用程序网关,因为我们想要在集群外进行 SSL 卸载,因为我们需要应用程序网关的 WAF 功能。我们能够自动管理部署管道内的路由规则。当它准备好生产时,我们可能会使用应用程序网关作为入口项目。


小智 3

证书颁发和续订不是由入口处理的,但是使用cert-manager,您可以轻松添加自己的 CA 或使用 Let's crypt 在注释入口或服务对象时自动颁发证书。AKS 的 http_application_routing 插件完全能够与 cert-manager 配合使用;甚至可以使用 ConfigMaps(kube-system 命名空间中的 addon-http-application-routing-nginx-configuration)进一步配置。您还可以在此处查看对应用程序网关作为入口的初始支持

  • 我的问题与如何生成和管理证书无关,而是与如何配置负载均衡器以使用它们有关(假设您已从某处获得了签名证书)。这确实是两个不同的问题。不过我会检查一下证书管理器。 (2认同)