ExternalDNS — automatic creation of DNS records from K8s Service/Ingress.
Installation:
1helm repo add bitnami https://charts.bitnami.com/bitnami2helm install external-dns bitnami/external-dns \3 --namespace kube-system \4 --set provider=aws \5 --set aws.zoneId=Z1234567890 \6 --set sources="{ingress,service}"
Ingress with annotation:
1apiVersion: networking.k8s.io/v12kind: Ingress3metadata:4 name: myapp5 annotations:6 external-dns.alpha.kubernetes.io/hostname: myapp.example.com7 external-dns.alpha.kubernetes.io/ttl: "60"8 external-dns.alpha.kubernetes.io/aws-target-type: alb9spec:10 ingressClassName: nginx11 rules:12 - host: myapp.example.com13 http:14 paths:15 - path: /16 pathType: Prefix17 backend:18 service:19 name: myapp20 port:21 number: 80
Service with annotation:
1apiVersion: v12kind: Service3metadata:4 name: myapp5 annotations:6 external-dns.alpha.kubernetes.io/hostname: myapp.example.com7spec:8 type: LoadBalancer9 ports:10 - port: 8011 selector:12 app: myapp
Supported providers: AWS Route53, Google Cloud DNS, Azure DNS, Cloudflare, CoreDNS.