Azure 流量管理器上的 AKS 入口终结点

Sam*_*Sam 5 azure azure-traffic-manager kubernetes azure-aks nginx-ingress

我已经在 AKS 集群上部署了多个微服务,并将其暴露在 nginx 入口控制器上。入口指向一个静态 ip,dns 为 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: /(.*)
Run Code Online (Sandbox Code Playgroud)

当我点击 curl 时http://blabla.trafficmanager.net,响应是默认后端 - 404

当我将主机更新为 时http://blabla.trafficmanager.net,我可以通过http://blabla.trafficmanager.net \application1访问该应用程序

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

msr*_*SIT 2

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

当您浏览 Azure TM 端点时,它会解析并为您提供 IP。然后您的浏览器请求该 IP 地址。

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

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