Back to External Dns

Configuration Precedence

docs/advanced/configuration-precedence.md

0.21.01.9 KB
Original Source

Annotations vs. CLI Flags Precedence

ExternalDNS configuration can come from these sources: resource annotations, CLI flags, environment variables, and defaults. The effective value is determined by the following precedence order:

mermaid
flowchart TD
    A[1. Resource Annotations] -->|Override| Result
    B[2. CLI Flags] -->|Used if no annotation| Result
    C[3. Environment Variables] -->|May override defaults
and in some cases flags/annotations| Result
    D[4. Defaults] -->|Fallback| Result

    subgraph Flags
        B1[Filter Flags: --flag-with-filter] -->|Define scope
Annotations outside scope ignored| B
        B2[Non-filter Flags] -->|Apply if no annotation| B
    end

    Result[Effective ExternalDNS Configuration]

    A --> Result
    B --> Result
    D --> Result
  1. Annotations

    • Most configuration options can be set via annotations on supported resources.
    • When present, annotations override the corresponding CLI flags and defaults.
      • Exception: should be documented.
      • Exception: ignored when applied to kind: DNSEndpoint
      • Exception: filter flags (e.g. --service-type-filter, --source) define the scope of resources considered.
  2. CLI Flags

    • Non-filter flags apply if no annotation overrides them.
    • Filter flags (--source, --service-type-filter, --*-filter) limit which resources are processed.
      • Annotations outside the defined scope are ignored.
      • If a resource is excluded by a filter, annotations configured on the resource or defaults will not be applied.
  3. Environment Variables

    • May override defaults, and in some cases may take precedence over CLI flags and annotations.
    • Behavior depends on how the variable is mapped in the code. Whether or not it replicates CLI flag or provider specific. Example: kubectl or cloudflare.
  4. Defaults

    • If none of the above specify a value, ExternalDNS falls back to its defaults.