我已经在AKS集群上部署了多个微服务,并在nginx入口控制器上公开了它。指向dns为blabla.eastus.azure.com的静态ip的入口
应用程序在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时,响应是default backend - 404
当我将主机更新为http://blabla.trafficmanager.net时,我能够通过http://blabla.trafficmanager.net\application1访问该应用程序
对于创建的任何自定义cname也是如此。我创建了一个名为custom.domain.com的cname,并将其重定向到blabla.eastus.azure.com。因此,除非我将入口中的主机直接更新到custom.domain.com,否则我无法通过自定义域访问它
发布于 2019-12-20 17:24:35
实际的请求永远不会通过Traffic Manager传递。流量管理器是Azure提供的基于DNS的负载平衡解决方案。
当您浏览Azure TM终结点时,它会解析并为您提供一个IP。然后您的浏览器请求该IP地址。
在您的情况下,您的AKS应该有一个公共端点,TM可以将DNS查询解析到该公共端点。此外,您还需要创建CNAME记录以将TM FQDN映射到您的自定义域。如果不这样做,你将得到404。
上面提到的自定义标头设置用于探测,但实际请求将从客户端浏览器发送到TM解析到的端点/IP。
发布于 2020-07-21 18:05:42
满足您需求的一种方法是严格控制每个地域的公网DNS和Ingress Controller公网IP之间的流量;将服务发布方式的灵活性委托给HTTP SNI协议:

为简单起见,入口控制器没有为其公网IP分配任何A DNS记录。
因此,我们将按照图从右到左实现该体系结构。
流量管理器将有两个端点:每个区域一个。每个端点的值将是对应的入口公网IP。
DNS服务将为app.mydomain.com配置一个CNAME (别名)为mine-apps.trafficmanager.net。
以这种方式,连接到app.mydomain.com的客户端将解析作为Geo DNS的流量管理器(TM)服务,并且基于客户端的IP,将A和B之间较近的目标区域返回给客户端。
同样,您可以使用URL或基于路径的路由通过Ingres公开服务,并控制客户端连接到这些服务的方式。只需确保您的DNS知道如何连接到Traffic Manager。其余的将由TM和Kubernetes中的Ingress对象神奇地处理。
最后但并非最不重要的一点是,一旦正确配置了所有集成,并且它们满足了您的主要需求,您就可以开始扩展现有体系结构并适应您的实际需求;例如:在Traffic Manager的端点中去除静态in。
https://stackoverflow.com/questions/59281497
复制相似问题