ExternalDNS
DNSexternal-dns
Kubernetes controller that writes Services and Ingresses into an external DNS provider.
| property | type | values | required | kind default | this component |
|---|---|---|---|---|---|
| anycast | boolean | — | no | false | ▸ false |
| deletesRecords | boolean | — | no | false | inherited |
| geoRouting | boolean | — | no | false | ▸ false |
| healthChecked | boolean | — | no | false | ▸ false |
| managed | boolean | — | no | true | ▸ false |
| policy | enum | upsert-only | sync | no | upsert-only | inherited |
| redundantProviders | boolean | — | no | false | inherited |
| registry | enum | txt | noop | no | txt | inherited |
| ttlSeconds | integer | — | no | — | inherited |
Every rule whose selector covers this component's kind or its category. Whether a rule fires depends on the design: its properties, its edges and its groups.
shared-dependency-without-redundancy
The design requires redundant discovery, but this DNS or coordination service, which everything depends on, runs on a single provider or a single replica. Its failure is the whole system's failure.
- — all of these hold:
- — the design requirement `availability.discoveryRedundant` is true
- — any of these hold:
- — the node's `redundantProviders` is false
- — the node's `replicated` is false
nodes:
- { id: "external-dns", component: "external-dns" }Alibaba Cloud DNSalibaba-dnsAlibaba Cloud Domain Namesalibaba-domainsAlibaba Cloud DNS PrivateZonealibaba-private-zoneAmazon Application Recovery Controller (ARC)aws-application-recovery-controllerAmazon Route 53 Global Resolveraws-route53-global-resolverAmazon Route 53 Resolver endpointaws-route53-resolverAmazon Route 53route53Azure DNSazure-dnsAzure DNS Private Resolverazure-dns-private-resolverAzure Private DNSazure-private-dnsAzure Traffic Managerazure-traffic-managerCloudflare DNScloudflare-dnsCloudflare Internal DNScloudflare-internal-dnsCloudflare Registrarcloudflare-registrarCloudflare Secondary DNScloudflare-secondary-dnsBIND 9bindCoreDNScorednsGeneric DNSdnsDNSdns-resolverdnsmasqdnsmasqKnot DNSknot-dnsIBM NS1 Connectns1Pi-holepi-holePowerDNS Authoritative ServerpowerdnsUnboundunboundDigitalOcean DNSdigitalocean-dnsGoogle Cloud DNSgoogle-cloud-dnsCloud Domainsgoogle-cloud-domainsIBM Cloud DNS Servicesibm-dns-servicesDNS Private Zoneoci-dns-private-zoneDNS Public Zoneoci-dns-zoneTraffic Management Steering Policyoci-traffic-managementOpenStack Designateopenstack-designate
# yaml-language-server: $schema=../../schema/component.schema.json # ExternalDNS: a Kubernetes controller that "synchronizes exposed Kubernetes Services and Ingresses # with DNS providers". It is not a DNS server; it writes records into Route 53, Cloud DNS and the # rest. It marks the records it owns with TXT registry entries keyed by --txt-owner-id, and deleting a # record needs --policy=sync, so the default upsert-only policy never removes one ("ExternalDNS"). schemaVersion: "1" type: "component" id: "external-dns" kind: "dns" provider: "default" docs: "https://kubernetes-sigs.github.io/external-dns/latest/" defaults: managed: false anycast: false geoRouting: false healthChecked: false properties: policy: type: "enum" values: ["upsert-only", "sync"] default: "upsert-only" registry: type: "enum" values: ["txt", "noop"] default: "txt" deletesRecords: type: "boolean" default: false