如何使用Azure Kubernetes服务为多个环境和服务定制CoreDNS?

如何使用Azure Kubernetes服务为多个环境和服务定制CoreDNS?,kubernetes,azure-aks,coredns,Kubernetes,Azure Aks,Coredns,我正在处理一个现有的AKS集群,该集群包含多个相互通信的服务。这目前正在工作,但通信使用外部名称。这意味着这些内部请求将被删除 我正在使用的环境是一个预生产集群,它承载多个环境,每个环境都有自己的名称空间。有一个nginx入口负载平衡器(单个外部IP),每个名称空间都有一个入口,用于将主机映射到环境服务。我的主机采用.domain.com的形式。路径采用映射到相应服务的/api/形式 我想要完成的是设置一个ConfigMap,它将重写出口请求并避免头发固定。例如,从service1到servic

我正在处理一个现有的AKS集群,该集群包含多个相互通信的服务。这目前正在工作,但通信使用外部名称。这意味着这些内部请求将被删除

我正在使用的环境是一个预生产集群,它承载多个环境,每个环境都有自己的名称空间。有一个nginx入口负载平衡器(单个外部IP),每个名称空间都有一个入口,用于将主机映射到环境服务。我的主机采用
.domain.com
的形式。路径采用映射到相应服务的
/api/
形式

我想要完成的是设置一个ConfigMap,它将重写出口请求并避免头发固定。例如,从
service1
service2
的请求将是
https://.domain.com/api/service2/
。然后,配置的映射需要将此请求重写为环境和服务的正确内部服务

我读过,不确定如何将他们的样本应用于我的情况。他们的例子如下:

apiVersion: v1
kind: ConfigMap
metadata:
  name: coredns-custom
  namespace: kube-system
data:
  test.server: | # you may select any name here, but it must end with the .server file extension
    <domain to be rewritten>.com:53 {
        errors
        cache 30
        rewrite name substring <domain to be rewritten>.com default.svc.cluster.local
        kubernetes cluster.local in-addr.arpa ip6.arpa {
          pods insecure
          upstream
          fallthrough in-addr.arpa ip6.arpa
        }
        forward .  /etc/resolv.conf # you can redirect this to a specific DNS server such as 10.0.0.10, but that server must be able to resolve the rewritten domain name
    }
  • 为每个环境的
    .svc.cluster.local
    添加入口规则

  • 这是在预生产环境中进行的,所以我有一些余地来尝试和错误配置。然而,我希望确认我走的是正确的道路。上述更改会将我的内部请求重写为一个内部名称,并由入口资源以内部名称作为主机捕获,对吗?

    您的问题在您试图实现的目标中有点混乱。是否希望一个命名空间中的服务与另一个命名空间中的服务通信?此外,CoreDNS的功能是让您的POD解析到您的私有DNS记录,这些记录托管在kubernetes之外的单独DNS服务器上。@vishal.k,这些服务将只与同一命名空间中的其他服务通信。名称空间隔离了我的预生产环境(即开发、演示、测试)。它们使用外部名称进行API调用(即
    .domain.com/API/service1/action
    .domain.com/API/service2/action
    )。我在OP和文档中引用的文章使用CoreDNS,通过将外部名称的请求重写为内部名称来避免发夹。请让我知道这是否还不清楚。好吧,我现在有一个想法,我现在没有答案,让我研究更多,如果我得到一个解决方案,在这里更新。
    rewrite name regex ([^.]+)\.domain\.com {1}.svc.cluster.local