ExternalDNS

DNSexternal-dns

Kubernetes controller that writes Services and Ingresses into an external DNS provider.

Provider
default
Kind
DNS
Category
Edge
Properties · 4 set by this component
propertytypevaluesrequiredkind defaultthis component
anycastboolean—nofalse▸ false
deletesRecords · component propertyboolean—nofalseinherited
geoRoutingboolean—nofalse▸ false
healthCheckedboolean—nofalse▸ false
managedboolean—notrue▸ false
policy · component propertyenumupsert-only | syncnoupsert-onlyinherited
redundantProvidersboolean—nofalseinherited
registry · component propertyenumtxt | noopnotxtinherited
ttlSecondsinteger—no—inherited
Rules that apply · 1

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
Use it in a design
nodes:
  - { id: "external-dns", component: "external-dns" }
Other DNS products · 33
Source
# 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

The same page as markdown, for an agent: /catalogue/components/external-dns.md