kubernetes-sigs/external-dns

External DNS created other TXT Records starts with `a-`, and the records were not cleanly deleted causing CrashLoopBackoff

Opened this issue · 0 comments

What happened:

  1. External DNS created additional TXT Records starts with a-. I.E: service-a.example.com. it will create 2 TXT records with name a-service-a.example.com, and service-a.example.com.
  2. With sync policy, some records were left behind when deleted, and causing CrashLoopBackoff on the pods.
  3. Multiple DNS Zones Filter, causing some records inconsistently inserted between public and private domains. I try to use external-dns.alpha.kubernetes.io/access: public, it doesn't works.

What you expected to happen:
each TXT should be created once. When deleted, all records should be recorded.

How to reproduce it (as minimally and precisely as possible):
It happens to me when I try to install bitnami kafka

# Bitnami/kafka values.yaml
    externalAccess:
      enabled: true
      controller:
        service:
          annotations:
            external-dns.alpha.kubernetes.io/hostname: "{{ .targetPod }}.example.com"
          type: LoadBalancer
          loadBalancerNames:
            - kafka-main-controller-0.example.com
            - kafka-main-controller-1.example.com
            - kafka-main-controller-2.example.com
# external DNS Config

    provider: google
    google:
      project: "xxxx"
    serviceAccount:
      annotations:
        iam.gke.io/gcp-service-account: external-dns@xxx.iam.gserviceaccount.com
    zoneNameFilters:
      - "public-example"
      - "private-example"
    nodeSelector:
      iam.gke.io/gke-metadata-server-enabled: "true"

    tolerations:
      - key: "role"
        operator: "Equal"
        value: "infra"
        effect: "NoSchedule"

    ## @param policy Modify how DNS records are synchronized between sources and providers (options: sync, upsert-only )
    ## Default: upsert-only
    policy: sync

Anything else we need to know?:

time="2024-11-18T10:18:11Z" level=info msg="Add records: kafka-main-controller-0.example.com. A 300"
time="2024-11-18T10:18:11Z" level=info msg="Add records: kafka-main-controller-2.example.com. A 300"
time="2024-11-18T10:18:11Z" level=info msg="Add records: kafka-main-controller-2.example.com. TXT [\"heritage=external-dns,external-dns/owner=default,external-dns/resource=service/kafka/kafka-main-controller-2-external\"] 300"
time="2024-11-18T10:18:13Z" level=info msg="Change zone: example-zone batch #0"
time="2024-11-18T10:18:13Z" level=info msg="Add records: a-kafka-main-controller-0.example.com. TXT [\"heritage=external-dns,external-dns/owner=default,external-dns/resource=service/kafka/kafka-main-controller-0-external\"] 300"
time="2024-11-18T10:18:13Z" level=info msg="Add records: a-kafka-main-controller-2.example.com. TXT [\"heritage=external-dns,external-dns/owner=default,external-dns/resource=service/kafka/kafka-main-controller-2-external\"] 300"
time="2024-11-18T10:18:13Z" level=info msg="Add records: kafka-main-controller-0.example.com. TXT [\"heritage=external-dns,external-dns/owner=default,external-dns/resource=service/kafka/kafka-main-controller-0-external\"] 300"
time="2024-11-18T10:18:13Z" level=info msg="Add records: kafka-main-controller-1.example.com. A [300"
time="2024-11-18T10:18:13Z" level=info msg="Add records: kafka-main-controller-1.example.com. TXT [\"heritage=external-dns,external-dns/owner=default,external-dns/resource=service/kafka/kafka-main-controller-1-external\"] 300"

Environment:

  • External-DNS version (use external-dns --version): Helm Chart helm.sh/chart=external-dns-8.5.1
  • DNS provider: Google
  • Others:
policy: sync