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

时间:2018-11-19 22:34:07

标签: azure azure-aks

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

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

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

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

2 个答案:

答案 0 :(得分:3)

证书的颁发和更新不会由入口处理,但是使用cert-manager可以轻松添加自己的CA或使用“加密”功能在注释入口或服务对象时自动颁发证书。 AKS的http_application_routing插件完全可以与cert-manager一起使用;甚至可以使用ConfigMaps(在kube-system名称空间中的addon-http-application-routing-nginx-configuration)进行进一步配置。您还可以将Application Gateway的初始支持视为入口here

答案 1 :(得分:3)

是的,AKS创建的默认负载均衡器是第4层LB,不支持SSL卸载。 Application Gateway与Azure中的AWS Application Load Balancer等效。到目前为止,AKS中没有选项可以选择应用程序网关,而不是经典的负载均衡器,但是就像alev所说的那样,ongoing project仍处于预览状态,这将允许部署一个特殊的入口控制器,将根据您的入口规则在外部Application Gateway上驱动路由规则。如果您确实需要可以用于生产的产品,则可以选择以下方法:

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

我们最近实现了类似的操作,因此决定管理自己的应用程序网关,因为我们想在集群外部进行SSL卸载,并且因为我们需要应用程序网关的WAF功能。我们能够在部署管道中自动管理路由规则。当生产准备就绪时,我们可能会将Application Gateway用作入口项目。