Skip to content

Configuration

component "external-dns" {
  version = "0.2.0"
  namespace = "external-dns" # optional

  # Params default values

  # when configured with a base domain, external-dns will ignore requests that are not children domains
  domainFilter = ""

  # Upstream DNS provider to configure
  # required, must be one of 'cloudflare', 'route53', 'pdns'
  provider = ""

  cloudflare = {
    # Enable or disable the Cloudflare Proxy on managed records. Can be overridden on a per-object basis
    proxied = false

    # Restrict to domains in a specific Cloudflare Zone. Optional
    zoneId = ""

    # ExternalSecret object reference to a secret holding the Cloudflare API Token
    secret = {
      store = {
        name = "default"
        kind = "ClusterSecretStore"
      }

      # Backend-specific key for the target secret
      key = ""

      # Optional nested property inside the upstream secret
      property = ""
    }
  }

  route53 = {
    # Only look at zone of this type (values can be 'public', 'private' or empty for both)
    zoneType = ""
    # Restrict to domains in a specific Route53 Zone. Optional
    zoneId = ""
    # Configure when deployed on EKS or other platforms with IAM Roles for Service Accounts
    eksRole = ""
    # Configure when deployed on AWS with KIAM
    iamRole = ""
  }

  pdns = {
    apiUrl = ""
    # ExternalSecret object reference to a secret holding the PowerDNS API key
    apiKeySecret = {
      store = {
        name = "default"
        kind = "ClusterSecretStore"
      }
      # Backend-specific key for the target secret
      key = ""
      # Optional nested property inside the upstream secret
      property = ""
    }
  }
}

Route53

To use Route53, a valid IAM role must be created with the following policies:

For the hosted zone only:

  • route53:ChangeResourceRecordSets

For everything ("*"):

  • route53:ListHostedZones
  • route53:ListResourceRecordSets