「External-DNS」- 场景 | 方案

场景 | 绑定 Service[type=LoadBalancer] 到域名

kubernetes-sigs/external-dns

通过为 Service[type=LoadBalancer] 添加注解,ExternalDNS 将自动在云商中添加 DNS 解析;

# kubectl annotate service nginx "external-dns.alpha.kubernetes.io/hostname=nginx.example.org"
# kubectl annotate service nginx "external-dns.alpha.kubernetes.io/ttl=10"

场景 | 同个域名,被多个集群管理

–txt-owner-id “my-cluster-id”

通过该参数,其创建的 DNS 解析记录中将包含该 id 值,该值用于与其他 External DNS 实例创建的 DNS Record 进行区分。

场景 | 解析到特定地址

external-dns/docs/annotations/annotations.md at master · kubernetes-sigs/external-dns

external-dns.alpha.kubernetes.io/target: cdn-cname.exmaple.com

场景 | 最后的 CNAME 记录无法被删除

external-dns 会创建 3 条记录,当修改 Ingress Class 之后,最终的 CNAME 不会被删除。

cannot delete cname records in route53 with txt registry and txt-suffix · Issue #2474 · kubernetes-sigs/external-dns