我想创建一个通配符DNS记录,映射到我的k8s集群中的虚拟IP。这是因为我希望从我的pod到给定名称的任何子域的请求映射到一组特定的endpoint。即来自:
something.my-service.my-namespace.svc.cluster.local
something-else.my-service.my-namespace.svc.cluster.local
any-old-thing-my-pod-came-up-with.my-service.my-namespace.svc.cluster.local
将所有请求解析到相同的虚拟IP,因此解析到相同的集群(即,我希望这些请求以与服务相同的方式路由到endpoint)。
我已经看到了一些涉及创建和修改集群DNS服务(即库贝-dns或CoreDNS)配置的其他解决方案。这对我不起作用——我问这个问题的主要原因是为了实现声明性配置。
我尝试过的:
。metadata.name:'*. my-service'
。失败,因为'*.my-service'
不是有效的服务名称。。spec.ports.name: '*'
。不是有效的端口名。不是一个选项:
Kubernetes服务不支持通配符dns。你可以做的是在服务前面使用入口控制器。使用入口,你可以使用通配符dns。参考下面的PR
https://github.com/kubernetes/kubernetes/pull/29204