通过dns名称而不是IP地址访问Azure Kubernetes-内部负载均衡器

时间:2019-01-15 13:11:43

标签: azure kubernetes azure-api-management azure-kubernetes

问题陈述

我们计划将azure api管理服务用作AKS的反向代理。我参考了以下URL,以使用AKS配置azure api管理器。尽管它提供了有关节点端口的信息,但是可以通过内部负载平衡器IP地址应用相同的信息。

https://fizzylogic.nl/2017/06/16/how-to-connect-azure-api-management-to-your-kubernetes-cluster/

我们当前有多个环境,例如dev1,dev2,dev3,dev,uat,stage,prod。 我们正在尝试使此配置步骤自动化,并且不需要绑定到特定IP,而需要指向与k8s内部负载平衡器关联的dns名称。

3 个答案:

答案 0 :(得分:1)

如果您在服务上使用注释来使用内部负载平衡器,您将在vNet上获得服务的IP地址,而不是外部IP。

注释:     service.beta.kubernetes.io/azure-load-balancer-internal:“真”

然后,您可以使用external-dns服务(https://github.com/kubernetes-incubator/external-dns)为Azure DNS区域内的服务自动创建DNS条目。然后,您应该可以解析为服务DNS名称。

尽管未明确支持,但它也适用于专用DNS区域。

答案 1 :(得分:1)

部分问题由@Ben回答。我会警告您使用外部DNS开源,因为您可能不希望依赖此非常重要的功能。它要求您授予其他权限!

您将需要一个虚拟的专用IP,它是通过内部负载平衡器注释实现的,并且可以正常工作。我最近用内部负载平衡器记录了tls / ssl的结尾,可以在https://blogs.aspnet4you.com/2019/01/06/end-to-end-tlsssl-offloading-with-application-gateway-and-kubernetes-ingress/上找到它。

请记住,在删除http应用程序路由附加组件之前,我的解决方案一直有效。为什么?该加载项附带了Azure Dns(公共)和公共负载平衡器。当我删除附加组件时,它们都被永久删除了,但是删除破坏了与内部负载均衡器的VIP相关的dns条目。我无意删除dns区域。我尝试创建新的DNS区域并使用私有IP添加A记录的尝试无效。 Kubernetes无法解析fqdn。尝试过Azure私有DNS,但无法解决!我尝试将configmap与kube-dns配合使用不起作用,而且如果我将其包含在上游,则会破坏dns的其他分辨率!因此,调查仍在继续!

我很想听听您如何解决fqdn问题。

乐观地说,我认为基于VM的自定义dns服务器可能是个不错的选择,并且您可能会有一个混合解决方案。

答案 2 :(得分:0)

应该可以将Azure VNET配置为依赖您自己的DNS服务器:https://docs.microsoft.com/en-us/azure/virtual-network/virtual-networks-name-resolution-for-vms-and-role-instances#name-resolution-that-uses-your-own-dns-server。一次安装APIM将使用它来解析所有传出请求的地址。只需确保您也支持解析公共地址,因为对APIM的依赖很少,没有它,它将无法工作。