azure - 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,否则我无法通过自定义域访问它
解决方案
实际的请求永远不会通过流量管理器。流量管理器是 Azure 提供的基于 DNS 的负载平衡解决方案。
当您浏览 Azure TM 端点时,它会解析并为您提供 IP。然后您的浏览器请求该 IP 地址。
在您的情况下,您的 AKS 应该有一个公共终结点,TM 可以将 DNS 查询解析到该终结点。您还需要创建 CNAME 记录以将 TM FQDN 映射到您的自定义域。如果不这样做,您将得到 404。
上述自定义标头设置用于探测,但实际请求将从客户端浏览器发送到 TM 解析到的端点/IP。