Azure Traffic Manager上的AKS Ingress终结点

时间:2019-12-11 08:24:10

标签: azure kubernetes nginx-ingress azure-aks azure-traffic-manager

我在AKS集群上部署了多个微服务,并在nginx入口控制器上公开了它。指向具有dns的静态IP的入口blabla.eastus.azure.com

应用程序已在blabla.eastus.azure.com/application/和blabla.eastus.azure.com/application2/ ..等上公开。

我已经在Azure的blabla.trafficmanager.net中创建了流量管理器配置文件。我应该如何在流量管理器中配置AKS入口,以便流量管理器将请求重新路由到部署在AKS入口上的应用程序。

---Ingress.yaml configuration used
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress
  namespace: ns
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
    nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
  rules:
  - host: blabla.eastus.azure.com
    http:
      paths:
      - backend:
          serviceName: application1
          servicePort: 80
        path: /application1(/|$)(.*)
      - backend:
          serviceName: application2
          servicePort: 80
        path: /application2(/|$)(.*)
      - backend:
          serviceName: aks-helloworld
          servicePort: 80
        path: /(.*)

当我碰到curl http://blabla.trafficmanager.net时,响应为默认后端-404

将主机更新为http://blabla.trafficmanager.net时,我可以通过http://blabla.trafficmanager.net \ application1

访问该应用程序

对于创建的任何自定义cname都是如此。我创建了一个名为custom.domain.com的cname,并将其重定向到blabla.eastus.azure.com。因此,除非我将入口的主机直接更新为custom.domain.com,否则无法通过自定义域访问它

2 个答案:

答案 0 :(得分:1)

一种满足您需求的方法是严格控制每个区域中公共DNS和Ingress Controller公共IP之间的流量;代表 将服务发布到HTTP SNI协议的灵活性:

Basic Traffic Management architecture for Highly Available parallel services running in multi-regional AKS clusters

为简单起见,Ingress Controller没有为其公共IP分配任何DNS记录。

因此,我们将按照该图从右到左实现该体系结构。

流量管理器将具有两个端点:每个区域一个。每个端点的值将是对应的Ingress公用IP。

DNS服务将为app.mydomain.com配置CNAME(别名)为mine-apps.trafficmanager.net。

通过这种方式,连接到app.mydomain.com的客户端将解析流量管理器(TM)服务(即地理DNS),并基于客户端的IP,将与A之间更近的目标区域返回给客户端和B。

以相同的方式,您可以使用URL或基于路径的路由来通过Ingres公开服务,并控制客户端如何连接它们。只要确保您的DNS知道如何连接到流量管理器即可。其余的将被处理 TM和Kubernetes中的Ingress对象令人着迷。

最后但并非最不重要的一点是,一旦正确配置了所有集成并满足了您的主要需求,您就可以开始扩展现有体系结构并适应您的实际需求;例如:在流量管理器的端点中消除静态IP。

答案 1 :(得分:0)

实际请求永远不会通过流量管理器传递。流量管理器是Azure提供的基于DNS的负载平衡解决方案。

浏览Azure TM终结点时,它将解析并提供IP。然后您的浏览器请求该IP地址。

在您的情况下,您的AKS应该具有一个公共端点,TM可以将其解析为DNS查询。另外,您还需要创建一个CNAME记录,以将TM FQDN映射到您的自定义域。如果不这样做,您将得到404。

上述自定义标头设置用于探针,但是实际请求将从客户端浏览器发送到TM解析为的端点/ IP。