首页 > 解决方案 > Azure 流量管理器上的 AKS 入口终结点

问题描述

我在 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: /(.*)

当我点击 curlhttp://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,否则我无法通过自定义域访问它

标签: azurekubernetesnginx-ingressazure-aksazure-traffic-manager

解决方案


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

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

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

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


推荐阅读