Skip to content

Conversation

rlees85
Copy link
Contributor

@rlees85 rlees85 commented Feb 20, 2025

Description

This change creates AAAA and A records for AWS Route53. It is heavily based on this pull request that seems to have sadly been abandoned: #3605

This is now based on the current master branch. I've tried to add some more thorough test cases so that when I let this loose in a Kubernetes cluster hopefully not too many bad things will happen.

Fixes: #3707
Fixes: #4509

All credits to @johngmyers for the vast majority of the leg work.

Checklist

  • Unit tests updated
  • End user documentation updated

Checklist to drop WIP

  • Try this in a real cluster and see if it actually works
  • Fully address concerns from maintainers in other pull request

@k8s-ci-robot k8s-ci-robot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Feb 20, 2025
@k8s-ci-robot k8s-ci-robot added the cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. label Feb 20, 2025
@k8s-ci-robot
Copy link
Contributor

Welcome @rlees85!

It looks like this is your first PR to kubernetes-sigs/external-dns 🎉. Please refer to our pull request process documentation to help your PR have a smooth ride to approval.

You will be prompted by a bot to use commands during the review process. Do not be afraid to follow the prompts! It is okay to experiment. Here is the bot commands documentation.

You can also check if kubernetes-sigs/external-dns has its own contribution guidelines.

You may want to refer to our testing guide if you run into trouble with your tests not passing.

If you are having difficulty getting your pull request seen, please follow the recommended escalation practices. Also, for tips and tricks in the contribution process you may want to read the Kubernetes contributor cheat sheet. We want to make sure your contribution gets all the attention it needs!

Thank you, and welcome to Kubernetes. 😃

@k8s-ci-robot k8s-ci-robot added the needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. label Feb 20, 2025
@k8s-ci-robot
Copy link
Contributor

Hi @rlees85. Thanks for your PR.

I'm waiting for a kubernetes-sigs member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@k8s-ci-robot k8s-ci-robot added the size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. label Feb 20, 2025
@rlees85
Copy link
Contributor Author

rlees85 commented Feb 20, 2025

I just let it rip in our development cluster. At first look, seems to work well. AAAA records created and nothing has broken, yet.

One observation, is that the TXT records that are created seem a bit odd:

We get: _extdns.aaaa-example.host.name for the AAAA record but the A record is translated somewhere, so we get _extdns.cname-example.host.name. This feels like carry-over from the caching thing or some intentional backwards compatibility? I don't know if we care about this, will need guidance here.

We also get: _extdns.example.host.name as normal.

If anyone has any good example test cases I can carry out I will do so.

@rlees85
Copy link
Contributor Author

rlees85 commented Feb 20, 2025

I found the concerns @mloiseleur raised:

  • It should be documented in doc/tutorials/aws.md, since it works following this tutorial on Service with annotations

I think I've addressed this now.

  • When using --managed-record-types="A,CNAME", it did NOT update records at all (Same behavior between this PR and v0.13.5). So it does not seem to be a working opt-out.

This works, we were using it wrong:

        - --managed-record-types=A
        - --managed-record-types=CNAME
  • When changing the hostname, for instance from test2.example.com to test3.example.com, it did not delete the AAAA record:

I can confirm the last one is now working. It cleans up AAAA records when both changing the name of an ingress as well as when deleting it.

@rlees85 rlees85 changed the title WIP: Always create AAAA alias records in route53 (attempt 2) Always create AAAA alias records in route53 (attempt 2) Feb 20, 2025
@k8s-ci-robot k8s-ci-robot removed the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Feb 20, 2025
@ivankatliarchuk
Copy link
Contributor

When you ready, please share all relevant manifest, kubectl and AWS commands. I would like to test it as well.

One concern here, not sure if covered, why would I need AAAA records alongside A records? This seems more like a flag to me, as why would I need AAAA records if I never asked for it, plus it's easy to remove a flag and make it default behaviour at some point?

@ivankatliarchuk
Copy link
Contributor

/ok-to-test

@k8s-ci-robot k8s-ci-robot added ok-to-test Indicates a non-member PR verified by an org member that is safe to test. and removed needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. labels Feb 20, 2025
@rlees85
Copy link
Contributor Author

rlees85 commented Feb 20, 2025

@ivankatliarchuk AAAA records are the same as A records, but for IPv6. So for example, if a load balancer in AWS has dualstack networking enabled (both IPv4 and IPv6) we should add both an A record with the IPv4 address and AAAA record for IPv6.

The previous pull request found that even with IPv4 only load balancers, adding AAAA records causes no harm, since simply no IPv6 address is returned. This makes the code much simpler.

There is not really much point in turning this off beyond not liking AAAA records being in the console when having a look there. I think there were concerns about the extra requests contributing to rate limiting, but a caching feature has gone in recently to mitigate that (I believe?). If a way to turn this off is a deal breaker, I will try to implement something.

With manifests sadly its all a bit rough right now.

  • Compile the binary, with make
  • Create this (terrible) Dockerfile next to the binary, in build:
FROM registry.k8s.io/external-dns/external-dns:v0.15.0
COPY "external-dns" "/ko-app/external-dns"
ENTRYPOINT [ "/ko-app/external-dns" ]
  • Manually push the resulting image to a container registry. I've had to use a private one for now since its a company cluster.
  • Manually edit the deployment for external DNS, to use the new image.

I will have a look to see if I can host it in a public repository somewhere for testing.

@ivankatliarchuk
Copy link
Contributor

Just share manifests here. Normally, you don't need to create a container. You could do something like this https://github.com/kubernetes-sigs/external-dns/blob/master/docs/contributing/dev-guide.md#execute-code-without-building-binary, as long as external-dns is aware about the cluster context.

I got your point, sounds reasonable. What about dualstack-without-public-ipv4 ?

Probaly worth to validate cases when ALB switch is happening from ipv4 -> dualstack -> ipv4 where or not it works without issues

@ivankatliarchuk
Copy link
Contributor

Am I understood correctly

Before

piVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/ip-address-type: dualstack
  name: echoserver
spec:
  ingressClassName: alb
  rules:
  - host: echoserver.example.org
    http:
      paths:
      - path: /
        backend:
          service:
            name: echoserver
            port:
              number: 80
        pathType: Prefix

With this change, the proposed behaviour is not to rely on alb.ingress.kubernetes.io/ip-address-type: dualstack but all the records that have IPv6 to actually add them to DNS registry?

This statement is correct

So for example, if a load balancer in AWS has dualstack networking enabled (both IPv4 and IPv6) we should add both an A record with the IPv4 address and AAAA record for IPv6.

But now, on top of that, for example we have dozens of nodes with IPv6 that we do not want to expose over route53, suddenly will be exposed?

@rlees85
Copy link
Contributor Author

rlees85 commented Feb 20, 2025

But now, on top of that, for example we have dozens of nodes with IPv6 that we do not want to expose over route53, suddenly will be exposed?

I can't think of any case where you'd have a load balancer with dualstack enabled where you'd want to expose IPv4 but not IPv6. The simple solution here would be to make it not a dualstack load balancer, then it won't be exposed on IPv6.

We create an AAAA record for it (as long as ALIAS is enabled), but it just resolves to blank/empty, so nothing is exposed.

@rlees85
Copy link
Contributor Author

rlees85 commented Feb 20, 2025

You can exclude this by using the following flags:

        - --managed-record-types=A
        - --managed-record-types=CNAME

Tested working just now. I think that covers everything required to get this moving

@ivankatliarchuk
Copy link
Contributor

ivankatliarchuk commented Feb 21, 2025

Could you share e2e test results and manifests you were using? Example test cases #5085 (comment)

I believe in this case, we are looking for something like create NLB and validate different things, like change it from ipv4 to dualstack and back.

@ivankatliarchuk
Copy link
Contributor

You can exclude this by using the following flags:

        - --managed-record-types=A
        - --managed-record-types=CNAME

Tested working just now. I think that covers everything required to get this moving

This most likely should go to documentation somewhere.

@ivankatliarchuk
Copy link
Contributor

Any chance to rebase with master? I have make cover-html failing locally

Copy link
Contributor

@ivankatliarchuk ivankatliarchuk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The PR is quite big. I'll try to go over changes in sources over a weekend.

Could you review docs, there are some references to an annotation external-dns.alpha.kubernetes.io/dualstack. Just reference to annotations need to be removed, the actual manifest we better keep for , as it's still applies

Example

External DNS Controller uses the `external-dns.alpha.kubernetes.io/dualstack` annotation to determine this. If this annotation is

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see the same logic aka slices.Contains shell we consider to create a method in endpoints go?

something like

func (ep *Endpoint) IsSupportedRecordTypes(r ...string) bool

Just an idea

@rlees85
Copy link
Contributor Author

rlees85 commented Feb 21, 2025

Thanks for the review (so far). There is a lot to go at here, I will try and come back with some changes.
edit: I will also come back with some manifests and methods of testing that I've used.

@rlees85
Copy link
Contributor Author

rlees85 commented Feb 25, 2025

Starting with a Kubernetes cluster (EKS, if it matters) and the AWS load balancer controller installed, so that I can create load balancers for services and ingresses.

The a compiled version of the current head of this branch, as of this comment, is in a public Docker image located here: public.ecr.aws/arden-pub/rich-testing-edns:2

Steps:

  • Create namespace: kubectl create namespace external-dns
  • Prepare for Helm installation
helm repo add external-dns https://kubernetes-sigs.github.io/external-dns/
helm repo update
  • Prepare Helm values (values.yaml)
domainFilters:
  - dev02.example.domain

extraArgs:
  - --aws-zone-type=public
  - --aws-zones-cache-duration=15m   # tried with and without
  - --min-event-sync-interval=10s    # tried with and without
  - --provider-cache-time=5m         # tried with and without

image:
  repository: public.ecr.aws/arden-pub/rich-testing-edns
  tag: "2"

interval: 2m
policy: sync
provider: aws

serviceAccount:
  annotations:
    eks.amazonaws.com/role-arn: "arn:aws:iam::<redacted>:role/<my-role-that-gives-external-dns-permission-to-route53>"

triggerLoopOnEvent: true
txtOwnerId: dev02-k8s
txtPrefix: _extdns.
  • Install External DNS: helm -n external-dns upgrade --install --values "values.yaml" external-dns external-dns/external-dns

  • Install a testing deployment: kubectl create -f deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.26
        ports:
        - containerPort: 80
  • Install a testing service: kubectl create -f service.yaml
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
  annotations:
    external-dns.alpha.kubernetes.io/hostname: nginx.dev02.example.domain
spec:
  selector:
    app: nginx
  ports:
    - port: 80
      targetPort: 80
  type: LoadBalancer
  • Check both A and AAAA records are created
time="2025-02-25T13:24:24Z" level=info msg="Desired change: CREATE _extdns.aaaa-nginx.dev02.example.domain TXT" profile=default zoneID=/hostedzone/(redacted) zoneName=dev02.example.domain.
time="2025-02-25T13:24:24Z" level=info msg="Desired change: CREATE _extdns.cname-nginx.dev02.example.domain TXT" profile=default zoneID=/hostedzone/(redacted) zoneName=dev02.example.domain.
time="2025-02-25T13:24:24Z" level=info msg="Desired change: CREATE _extdns.nginx.dev02.example.domain TXT" profile=default zoneID=/hostedzone/(redacted) zoneName=dev02.example.domain.
time="2025-02-25T13:24:24Z" level=info msg="Desired change: CREATE nginx.dev02.example.domain A" profile=default zoneID=/hostedzone/(redacted) zoneName=dev02.example.domain.
time="2025-02-25T13:24:24Z" level=info msg="Desired change: CREATE nginx.dev02.example.domain AAAA" profile=default zoneID=/hostedzone/(redacted) zoneName=dev02.example.domain.
time="2025-02-25T13:24:24Z" level=info msg="5 record(s) were successfully updated" profile=default zoneID=/hostedzone/(redacted) zoneName=dev02.example.domain.
  • Try to resolve the A record (should be successful)
$ q A nginx.dev02.example.domain.
nginx.dev02.example.domain. 1m A 192.168.133.154
nginx.dev02.example.domain. 1m A 192.168.134.198
nginx.dev02.example.domain. 1m A 192.168.136.104
  • Try to resolve the AAAA record (should be blank, because although we created it, the balancer is not dual stack or IPv6)
$ q AAAA nginx.dev02.example.domain.
  • Make our service "dualstack" by adding the following annotation: service.beta.kubernetes.io/aws-load-balancer-ip-address-type: dualstack
  • Wait for reconcile
  • Repeat resolving the AAAA record (should now be successful)
$ q AAAA nginx.dev02.example.domain.
nginx.dev02.example.domain. 1m AAAA 2a05:d018:239:8410:5b19:5830:b3c8:3e26
nginx.dev02.example.domain. 1m AAAA 2a05:d018:239:8411:ce4f:40dc:20f5:81fb
nginx.dev02.example.domain. 1m AAAA 2a05:d018:239:8412:99b3:21b4:f03b:937a
  • Delete the service: kubectl delete service nginx-service
  • Check DNS records, including AAAA, are cleaned:
time="2025-02-25T13:38:05Z" level=info msg="Desired change: DELETE _extdns.aaaa-nginx.dev02.example.domain TXT" profile=default zoneID=/hostedzone/(redacted) zoneName=dev02.example.domain.
time="2025-02-25T13:38:05Z" level=info msg="Desired change: DELETE _extdns.cname-nginx.dev02.example.domain TXT" profile=default zoneID=/hostedzone/(redacted) zoneName=dev02.example.domain.
time="2025-02-25T13:38:05Z" level=info msg="Desired change: DELETE _extdns.nginx.dev02.example.domain TXT" profile=default zoneID=/hostedzone/(redacted) zoneName=dev02.example.domain.
time="2025-02-25T13:38:05Z" level=info msg="Desired change: DELETE nginx.dev02.example.domain A" profile=default zoneID=/hostedzone/(redacted) zoneName=dev02.example.domain.
time="2025-02-25T13:38:05Z" level=info msg="Desired change: DELETE nginx.dev02.example.domain AAAA" profile=default zoneID=/hostedzone/(redacted) zoneName=dev02.example.domain.
time="2025-02-25T13:38:05Z" level=info msg="5 record(s) were successfully updated" profile=default zoneID=/hostedzone/(redacted) zoneName=dev02.example.domain.
  • Edit the ExternalDNS deployment, add the following parameter: --exclude-record-types=AAAA
  • Wait for the pod to restart
  • Create the service again: kubectl create -f service.yaml. This time only A records should be created:
time="2025-02-25T13:50:41Z" level=info msg="Desired change: CREATE _extdns.cname-nginx.dev02.example.domain TXT" profile=default zoneID=/hostedzone/(redacted) zoneName=dev02.example.domain.
time="2025-02-25T13:50:41Z" level=info msg="Desired change: CREATE _extdns.nginx.dev02.example.domain TXT" profile=default zoneID=/hostedzone/(redacted) zoneName=dev02.example.domain.
time="2025-02-25T13:50:41Z" level=info msg="Desired change: CREATE nginx.dev02.example.domain A" profile=default zoneID=/hostedzone/(redacted) zoneName=dev02.example.domain.
time="2025-02-25T13:50:41Z" level=info msg="3 record(s) were successfully updated" profile=default zoneID=/hostedzone/(redacted) zoneName=dev02.example.domain.
  • Edit the ExternalDNS deployment, remove the following parameter: --exclude-record-types=AAAA
  • Wait for the pod to restart
  • The missing AAAA records should now be created:
time="2025-02-25T13:51:59Z" level=info msg="Desired change: CREATE _extdns.aaaa-nginx.dev02.example.domain TXT" profile=default zoneID=/hostedzone/(redacted) zoneName=dev02.example.domain.
time="2025-02-25T13:51:59Z" level=info msg="Desired change: CREATE nginx.dev02.example.domain AAAA" profile=default zoneID=/hostedzone/(redacted) zoneName=dev02.example.domain.
time="2025-02-25T13:51:59Z" level=info msg="2 record(s) were successfully updated" profile=default zoneID=/hostedzone/(redacted) zoneName=dev02.example.domain.
  • Edit the service, change the hostname to make sure records are moved properly
time="2025-02-25T13:54:41Z" level=info msg="Desired change: DELETE _extdns.aaaa-nginx.dev02.example.domain TXT" profile=default zoneID=/hostedzone/(redacted) zoneName=dev02.example.domain.
time="2025-02-25T13:54:41Z" level=info msg="Desired change: DELETE _extdns.cname-nginx.dev02.example.domain TXT" profile=default zoneID=/hostedzone/(redacted) zoneName=dev02.example.domain.
time="2025-02-25T13:54:41Z" level=info msg="Desired change: DELETE _extdns.nginx.dev02.example.domain TXT" profile=default zoneID=/hostedzone/(redacted) zoneName=dev02.example.domain.
time="2025-02-25T13:54:41Z" level=info msg="Desired change: DELETE nginx.dev02.example.domain A" profile=default zoneID=/hostedzone/(redacted) zoneName=dev02.example.domain.
time="2025-02-25T13:54:41Z" level=info msg="Desired change: DELETE nginx.dev02.example.domain AAAA" profile=default zoneID=/hostedzone/(redacted) zoneName=dev02.example.domain.
time="2025-02-25T13:54:41Z" level=info msg="Desired change: CREATE _extdns.aaaa-apache.dev02.example.domain TXT" profile=default zoneID=/hostedzone/(redacted) zoneName=dev02.example.domain.
time="2025-02-25T13:54:41Z" level=info msg="Desired change: CREATE _extdns.apache.dev02.example.domain TXT" profile=default zoneID=/hostedzone/(redacted) zoneName=dev02.example.domain.
time="2025-02-25T13:54:41Z" level=info msg="Desired change: CREATE _extdns.cname-apache.dev02.example.domain TXT" profile=default zoneID=/hostedzone/(redacted) zoneName=dev02.example.domain.
time="2025-02-25T13:54:41Z" level=info msg="Desired change: CREATE apache.dev02.example.domain A" profile=default zoneID=/hostedzone/(redacted) zoneName=dev02.example.domain.
time="2025-02-25T13:54:41Z" level=info msg="Desired change: CREATE apache.dev02.example.domain AAAA" profile=default zoneID=/hostedzone/(redacted) zoneName=dev02.example.domain.
time="2025-02-25T13:54:41Z" level=info msg="10 record(s) were successfully updated" profile=default zoneID=/hostedzone/(redacted) zoneName=dev02.example.domain.

Currently the AWS load balancer controller seems not to support: dualstack-without-public-ipv4.
Infact it doesnt seem to support ALB at all, just NLB.

For this test I hand-cranked an application load balancer with this mode and again hand-cranked in
two Route53 records (one A and one AAAA, both alias) and tried to resolve them both:

  • Try to resolve the A record (should be blank)
$ q A alb.dev02.example.domain.
  • Try to resolve the AAAA record (should be successful)
$ q AAAA alb.dev02.example.domain.
alb.adev02.example.domain. 1m AAAA 2a05:d018:239:8400:460b:c2e4:6899:8978

Route53 seems to handle the fact that the backend can only support IPv4, IPv6 or both for you as long as you have both A and AAAA records created. Returning blank just means the other protocol gets used, which does return records.

Copy link
Contributor

@ivankatliarchuk ivankatliarchuk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/lgtm

cc @mloiseleur

@k8s-ci-robot k8s-ci-robot added the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Feb 25, 2025
@mloiseleur
Copy link
Collaborator

@project0 : You were interested by this feature, IIRC. Anything missing on this PR ? Do you want to review this PR before merge ?

@k8s-ci-robot k8s-ci-robot removed the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Feb 25, 2025
@rlees85
Copy link
Contributor Author

rlees85 commented Feb 25, 2025

Definitely worth --exclude-record-types=AAAA going into the changlog with this change if/when this does release, just to make it nice and clear

@ivankatliarchuk
Copy link
Contributor

/label tide/merge-method-squash

@k8s-ci-robot k8s-ci-robot added the tide/merge-method-squash Denotes a PR that should be squashed by tide when it merges. label Feb 26, 2025
@mloiseleur
Copy link
Collaborator

Many thanks @rlees85 for taking the time to finish this one.
/lgtm
/approve

@k8s-ci-robot k8s-ci-robot added the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Mar 3, 2025
@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: ivankatliarchuk, mloiseleur

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@k8s-ci-robot k8s-ci-robot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Mar 3, 2025
@k8s-ci-robot k8s-ci-robot merged commit 7c23e01 into kubernetes-sigs:master Mar 3, 2025
14 checks passed
ivankatliarchuk added a commit to gofogo/k8s-sigs-external-dns-fork that referenced this pull request Mar 3, 2025
* master:
  feat(aws): always create AAAA alias records in route53 (kubernetes-sigs#5111)
  feat(aws): fetch zones with tags batching (kubernetes-sigs#5058)
@rlees85
Copy link
Contributor Author

rlees85 commented Mar 4, 2025

Now merged, if anyone happens to be using public.ecr.aws/arden-pub/rich-testing-edns:2 please move to something like gcr.io/k8s-staging-external-dns/external-dns:v20250304-v0.15.1-292-g1e8e5e06 instead (the former public registry isn't really mine and needs to be cleaned)

Many thanks

ivankatliarchuk added a commit to gofogo/k8s-sigs-external-dns-fork that referenced this pull request Mar 6, 2025
* master: (198 commits)
  fix(aws-sd): service instances registration and deregistration (kubernetes-sigs#5135)
  chore(docs): generate docs/monitoring/metrics.md file (kubernetes-sigs#5117)
  feat(chart): add helm-unittest framework (kubernetes-sigs#5137)
  feat(chart): add helm-unittest framework
  feat(aws): always create AAAA alias records in route53 (kubernetes-sigs#5111)
  feat(aws): fetch zones with tags batching (kubernetes-sigs#5058)
  docs: openwrt webhook (kubernetes-sigs#5132)
  docs(proposal): ipv6 internal node ip rollback plan (kubernetes-sigs#5081)
  docs(proposal): update date format
  chore(deps): bump the dev-dependencies group across 1 directory with 7 updates
  Update README.md with proper link to dev guide
  Add OpenStack Designate webook provider to readme
  chore(deps): bump the dev-dependencies group with 3 updates
  chore(deps): bump the dev-dependencies group with 20 updates
  chore(deps): bump azure/setup-helm in the dev-dependencies group
  style: formatting
  fix: remove broken test
  fix test name
  chore: upgrade ExternalDNS to go 1.24
  chore-makefile-coverage
  ...
JesusMtnez pushed a commit to JesusMtnez/homelab that referenced this pull request May 29, 2025
…o v0.16.1 (#667)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [registry.k8s.io/external-dns/external-dns](https://github.com/kubernetes-sigs/external-dns) | minor | `v0.15.1` -> `v0.16.1` |

---

### Release Notes

<details>
<summary>kubernetes-sigs/external-dns (registry.k8s.io/external-dns/external-dns)</summary>

### [`v0.16.1`](https://github.com/kubernetes-sigs/external-dns/releases/tag/v0.16.1)

[Compare Source](kubernetes-sigs/external-dns@v0.16.0...v0.16.1)

This release fixes the breaking change introduced in v0.16.0 for Cloudflare.

:warning: New features on Cloudflare, custom and regional hostnames have some known issues, see [#&#8203;5175](kubernetes-sigs/external-dns#5175) and [#&#8203;5183](kubernetes-sigs/external-dns#5183)

:warning: OpenStack designate in-tree provider will be removed in the next version. There is now a [webhook provider](https://github.com/inovex/external-dns-openstack-webhook).

:information_source: With v0.16.0, a new option on TXT Registry is available to use only new format ([#&#8203;4946](kubernetes-sigs/external-dns#4946)). Previous format will be removed in the next release ([#&#8203;5172](kubernetes-sigs/external-dns#5172)).

#### 🐛 Bug fixes

-   fix(cloudflare): optional custom hostnames by [@&#8203;mrozentsvayg](https://github.com/mrozentsvayg) in kubernetes-sigs/external-dns#5146
-   fix(source): pass GatewayName to config by [@&#8203;buroa](https://github.com/buroa) in kubernetes-sigs/external-dns#5169
-   fix(cloudflare): infinite loop with more than 50 custom hostnames by [@&#8203;mrozentsvayg](https://github.com/mrozentsvayg) in kubernetes-sigs/external-dns#5181

#### 📦 Others

-   chore: update OWNERS with required config file by [@&#8203;mloiseleur](https://github.com/mloiseleur) in kubernetes-sigs/external-dns#5164

**Full Changelog**: kubernetes-sigs/external-dns@v0.16.0...v0.16.1

### [`v0.16.0`](https://github.com/kubernetes-sigs/external-dns/releases/tag/v0.16.0)

[Compare Source](kubernetes-sigs/external-dns@v0.15.1...v0.16.0)

#### 💥 Breaking Changes

There is a [breaking change on Cloudflare](kubernetes-sigs/external-dns#5166) with this release. It requires Cloudflare for Saas.

#### 🚀 Features

-   feat: add dreamhost webook provider to readme  ([#&#8203;5015](kubernetes-sigs/external-dns#5015)) [@&#8203;asymingt](https://github.com/asymingt)
-   feat: Add F5 TransportServer source  ([#&#8203;4944](kubernetes-sigs/external-dns#4944)) [@&#8203;visokoo](https://github.com/visokoo)
-   feat(chart): allow to run tpl on `ServiceAccount` annotations ([#&#8203;4958](kubernetes-sigs/external-dns#4958)) ([#&#8203;4958](kubernetes-sigs/external-dns#4958)) [@&#8203;fcrespofastly](https://github.com/fcrespofastly)
-   feat(cloudflare): custom hostname and fix apex  ([#&#8203;5087](kubernetes-sigs/external-dns#5087)) [@&#8203;mrozentsvayg](https://github.com/mrozentsvayg)
-   feat(deps): added renovate config for custom regexes  ([#&#8203;4978](kubernetes-sigs/external-dns#4978)) [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk)
-   feat: don't discard klog logs at the highest log levels (debug and trace)  ([#&#8203;4961](kubernetes-sigs/external-dns#4961)) [@&#8203;dmarkhas](https://github.com/dmarkhas)
-   feat(pdns): add validation for MX and SRV records  ([#&#8203;4871](kubernetes-sigs/external-dns#4871)) [@&#8203;julillae](https://github.com/julillae)
-   feat(rfc2136): support multiple hosts  ([#&#8203;4653](kubernetes-sigs/external-dns#4653)) [@&#8203;Jeremy-Boyle](https://github.com/Jeremy-Boyle)
-   feat(service): listen to endpoint changes  ([#&#8203;5085](kubernetes-sigs/external-dns#5085)) [@&#8203;dmarkhas](https://github.com/dmarkhas)
-   feat(source): allow to register all pods and their associated PTR record  ([#&#8203;4782](kubernetes-sigs/external-dns#4782)) [@&#8203;foyerunix](https://github.com/foyerunix)
-   feat(txt-registry): add option to use only new format ([#&#8203;4946](kubernetes-sigs/external-dns#4946)) [@&#8203;malpou](https://github.com/malpou)

#### 🐛 Bug fixes

-   fix(aes-encryption): support plain txt and url safe base64 strings  ([#&#8203;4980](kubernetes-sigs/external-dns#4980)) [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk)
-   fix(aws-provider): ListTagsForResource incorrect zone-id handling  ([#&#8203;5029](kubernetes-sigs/external-dns#5029)) [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk)
-   fix(chart): non-string types on svcaccount annotations ([#&#8203;5067](kubernetes-sigs/external-dns#5067)) [@&#8203;hjoshi123](https://github.com/hjoshi123)
-   fix(chart): regression with affinity.nodeAffinity getting ignored  ([#&#8203;5046](kubernetes-sigs/external-dns#5046)) [@&#8203;mkhpalm](https://github.com/mkhpalm)
-   fix(chart): update rbac for F5 transportserver source ([#&#8203;5066](kubernetes-sigs/external-dns#5066)) ([#&#8203;5066](kubernetes-sigs/external-dns#5066)) [@&#8203;visokoo](https://github.com/visokoo)
-   fix(cloudflare): add more descriptive log message  ([#&#8203;5047](kubernetes-sigs/external-dns#5047)) [@&#8203;AndrewCharlesHay](https://github.com/AndrewCharlesHay)
-   fix(cloudflare): use softerror on internal server error with api  ([#&#8203;4931](kubernetes-sigs/external-dns#4931)) [@&#8203;vishuvenu](https://github.com/vishuvenu)
-   fix(dedup): records with different type are not duplicates  ([#&#8203;4889](kubernetes-sigs/external-dns#4889)) [@&#8203;jtszalay](https://github.com/jtszalay)
-   fix(docs): aws tutorial broken internal markdown links  ([#&#8203;5036](kubernetes-sigs/external-dns#5036)) [@&#8203;strophy](https://github.com/strophy)
-   fix:  do not merge CNAME with multiple targets  ([#&#8203;4856](kubernetes-sigs/external-dns#4856)) [@&#8203;dtuck9](https://github.com/dtuck9)
-   fix(f5-virtualserver): skip endpoint creation when VirtualServer is not ready ([#&#8203;4996](kubernetes-sigs/external-dns#4996)) [@&#8203;mikejoh](https://github.com/mikejoh)
-   fix(godaddy): Handle missing Retry-After header gracefully  ([#&#8203;4866](kubernetes-sigs/external-dns#4866)) [@&#8203;alexstojda](https://github.com/alexstojda)
-   fix(oci): records with multiple IP addresses  ([#&#8203;4993](kubernetes-sigs/external-dns#4993)) [@&#8203;jrosinsk](https://github.com/jrosinsk)
-   fix(ovh): cache refresh and duplicates processing  ([#&#8203;4932](kubernetes-sigs/external-dns#4932)) [@&#8203;nmaupu](https://github.com/nmaupu)
-   fix(registry): handle empty targets in TXT records logging an error  ([#&#8203;5149](kubernetes-sigs/external-dns#5149)) [@&#8203;saikatharryc](https://github.com/saikatharryc)
-   fix(source): allow ipv4-mapped ipv6 addresses  ([#&#8203;4943](kubernetes-sigs/external-dns#4943)) [@&#8203;buroa](https://github.com/buroa)
-   fix(source): debug log on gateway target detection  ([#&#8203;5096](kubernetes-sigs/external-dns#5096)) [@&#8203;drcapulet](https://github.com/drcapulet)
-   Fix spelling in webhook OpenAPI spec  ([#&#8203;5038](kubernetes-sigs/external-dns#5038)) [@&#8203;claycooper](https://github.com/claycooper)
-   fix: use informer for istio gateways  ([#&#8203;4522](kubernetes-sigs/external-dns#4522)) [@&#8203;woehrl01](https://github.com/woehrl01)

#### 📝 Documentation

-   docs: add deprecation policy ([#&#8203;5053](kubernetes-sigs/external-dns#5053)) [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk)
-   docs: add staging images to release process ([#&#8203;5050](kubernetes-sigs/external-dns#5050)) [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk)
-   docs: fix typo on aws tutorial  ([#&#8203;5070](kubernetes-sigs/external-dns#5070)) [@&#8203;Ileriayo](https://github.com/Ileriayo)
-   docs: fix typos in tutorials  ([#&#8203;4969](kubernetes-sigs/external-dns#4969)) [@&#8203;mloiseleur](https://github.com/mloiseleur)
-   docs(Microsoft DNS): improve instructions  ([#&#8203;4893](kubernetes-sigs/external-dns#4893)) [@&#8203;TomyLobo](https://github.com/TomyLobo)
-   docs(proposal): standartise date format  ([#&#8203;5128](kubernetes-sigs/external-dns#5128)) [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk)
-   docs(proposal): update template with statuses  ([#&#8203;5098](kubernetes-sigs/external-dns#5098)) [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk)
-   docs(provider): add ClouDNS to README  ([#&#8203;5065](kubernetes-sigs/external-dns#5065)) [@&#8203;rwunderer](https://github.com/rwunderer)
-   docs(README): fix link to dev guide  ([#&#8203;5116](kubernetes-sigs/external-dns#5116)) [@&#8203;masterkain](https://github.com/masterkain)
-   docs(registry): fix managed-record-type argument  ([#&#8203;5102](kubernetes-sigs/external-dns#5102)) [@&#8203;splitice](https://github.com/splitice)
-   docs: update and refactor contribution part ([#&#8203;5073](kubernetes-sigs/external-dns#5073)) [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk)
-   ci(docs): add markdown linters and editorconfig ([#&#8203;5055](kubernetes-sigs/external-dns#5055)) [@&#8203;mloiseleur](https://github.com/mloiseleur)
-   Improve sources' docs to mention '--managed-record-types'  ([#&#8203;4882](kubernetes-sigs/external-dns#4882)) [@&#8203;juan-vg](https://github.com/juan-vg)

#### 📦 Others

-   add: auto label source and providers  ([#&#8203;5158](kubernetes-sigs/external-dns#5158)) [@&#8203;szuecs](https://github.com/szuecs)
-   Add OpenStack Designate webook provider to readme  ([#&#8203;5115](kubernetes-sigs/external-dns#5115)) [@&#8203;frittentheke](https://github.com/frittentheke)
-   chore(ci): fix and sort changelog  ([#&#8203;4979](kubernetes-sigs/external-dns#4979)) [@&#8203;mloiseleur](https://github.com/mloiseleur) dependabot
-   chore(ci): fix failing test, upgrade to go 1.23.5 and linter to v1.63  ([#&#8203;5013](kubernetes-sigs/external-dns#5013)) [@&#8203;mloiseleur](https://github.com/mloiseleur)
-   chore(ci): remove too slow test  ([#&#8203;5014](kubernetes-sigs/external-dns#5014)) [@&#8203;mloiseleur](https://github.com/mloiseleur)
-   chore(deps): bump actions/setup-python from 5.3.0 to 5.4.0 in the dev-dependencies group  ([#&#8203;5041](kubernetes-sigs/external-dns#5041)) [@&#8203;dependabot](https://github.com/dependabot)
-   chore(deps): bump azure/setup-helm from 4.2.0 to 4.3.0 in the dev-dependencies group  ([#&#8203;5108](kubernetes-sigs/external-dns#5108)) [@&#8203;dependabot](https://github.com/dependabot)
-   chore(deps): bump helm/kind-action from 1.10.0 to 1.11.0 in the dev-dependencies group  ([#&#8203;4956](kubernetes-sigs/external-dns#4956)) [@&#8203;dependabot](https://github.com/dependabot)
-   chore(deps): bump helm/kind-action from 1.11.0 to 1.12.0 in the dev-dependencies group  ([#&#8203;4972](kubernetes-sigs/external-dns#4972)) [@&#8203;dependabot](https://github.com/dependabot)
-   chore(deps): bump nosborn/github-action-markdown-cli from 3.3.0 to 3.4.0 in the dev-dependencies group  ([#&#8203;5083](kubernetes-sigs/external-dns#5083)) [@&#8203;dependabot](https://github.com/dependabot)
-   chore(deps): bump the dev-dependencies group across 1 directory with 14 updates  ([#&#8203;4976](kubernetes-sigs/external-dns#4976)) [@&#8203;dependabot](https://github.com/dependabot)
-   chore(deps): bump the dev-dependencies group across 1 directory with 18 updates  ([#&#8203;5040](kubernetes-sigs/external-dns#5040)) [@&#8203;dependabot](https://github.com/dependabot)
-   chore(deps): bump the dev-dependencies group across 1 directory with 20 updates  ([#&#8203;4999](kubernetes-sigs/external-dns#4999)) [@&#8203;dependabot](https://github.com/dependabot)
-   chore(deps): bump the dev-dependencies group across 1 directory with 21 updates  ([#&#8203;5089](kubernetes-sigs/external-dns#5089)) [@&#8203;dependabot](https://github.com/dependabot)
-   chore(deps): bump the dev-dependencies group across 1 directory with 22 updates  ([#&#8203;5062](kubernetes-sigs/external-dns#5062)) [@&#8203;dependabot](https://github.com/dependabot)
-   chore(deps): bump the dev-dependencies group across 1 directory with 23 updates  ([#&#8203;5145](kubernetes-sigs/external-dns#5145)) [@&#8203;dependabot](https://github.com/dependabot)
-   chore(deps): bump the dev-dependencies group across 1 directory with 25 updates  ([#&#8203;5023](kubernetes-sigs/external-dns#5023)) [@&#8203;dependabot](https://github.com/dependabot)
-   chore(deps): bump the dev-dependencies group across 1 directory with 5 updates  ([#&#8203;4987](kubernetes-sigs/external-dns#4987)) [@&#8203;dependabot](https://github.com/dependabot)
-   chore(deps): bump the dev-dependencies group across 1 directory with 7 updates  ([#&#8203;5125](kubernetes-sigs/external-dns#5125)) [@&#8203;dependabot](https://github.com/dependabot)
-   chore(deps): bump the dev-dependencies group with 20 updates  ([#&#8203;5109](kubernetes-sigs/external-dns#5109)) [@&#8203;dependabot](https://github.com/dependabot)
-   chore(deps): bump the dev-dependencies group with 2 updates  ([#&#8203;5022](kubernetes-sigs/external-dns#5022)) [@&#8203;dependabot](https://github.com/dependabot)
-   chore(deps): bump the dev-dependencies group with 3 updates  ([#&#8203;5112](kubernetes-sigs/external-dns#5112)) [@&#8203;dependabot](https://github.com/dependabot)
-   chore(deps): bump the dev-dependencies group with 4 updates  ([#&#8203;4988](kubernetes-sigs/external-dns#4988)) [@&#8203;dependabot](https://github.com/dependabot)
-   chore(docs): docs/flags.md generation  ([#&#8203;4983](kubernetes-sigs/external-dns#4983)) [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk)
-   chore(filter-tags): pre-process filter tags  ([#&#8203;5063](kubernetes-sigs/external-dns#5063)) [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk)
-   chore(makefile): add helper and document targets  ([#&#8203;5093](kubernetes-sigs/external-dns#5093)) [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk)
-   chore(makefile): simplify coverage script  ([#&#8203;5105](kubernetes-sigs/external-dns#5105)) [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk)
-   chore(provider-aws): improve canonicalHostedZone handling  ([#&#8203;5031](kubernetes-sigs/external-dns#5031)) [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk)
-   chore(release): publish chart v1.15.2  ([#&#8203;5094](kubernetes-sigs/external-dns#5094)) [@&#8203;stevehipwell](https://github.com/stevehipwell)
-   chore: update maintainers/reviewers  ([#&#8203;5020](kubernetes-sigs/external-dns#5020)) [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk)
-   chore: upgrade ExternalDNS to go 1.24  ([#&#8203;5106](kubernetes-sigs/external-dns#5106)) [@&#8203;mloiseleur](https://github.com/mloiseleur)
-   kustomize-v0.15.1  ([#&#8203;4966](kubernetes-sigs/external-dns#4966)) [@&#8203;Raffo](https://github.com/Raffo)
-   Release Helm chart for `v0.15.1`  ([#&#8203;5028](kubernetes-sigs/external-dns#5028)) [@&#8203;stevehipwell](https://github.com/stevehipwell)
-   replace all versions to v0.15.1  ([#&#8203;4973](kubernetes-sigs/external-dns#4973)) [@&#8203;Raffo](https://github.com/Raffo)
-   test(cloudflare): add scenarios on submitChanges  ([#&#8203;5054](kubernetes-sigs/external-dns#5054)) [@&#8203;AndrewCharlesHay](https://github.com/AndrewCharlesHay)
-   test(domain-filter): simple filters on domain exclusion ([#&#8203;5064](kubernetes-sigs/external-dns#5064)) [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk)
-   test(provider): tags filter coverage and benchmark  ([#&#8203;5060](kubernetes-sigs/external-dns#5060)) [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk)

#### New Contributors

-   [@&#8203;juan-vg](https://github.com/juan-vg) made their first contribution in kubernetes-sigs/external-dns#4882
-   [@&#8203;dmarkhas](https://github.com/dmarkhas) made their first contribution in kubernetes-sigs/external-dns#4961
-   [@&#8203;buroa](https://github.com/buroa) made their first contribution in kubernetes-sigs/external-dns#4943
-   [@&#8203;fcrespofastly](https://github.com/fcrespofastly) made their first contribution in kubernetes-sigs/external-dns#4958
-   [@&#8203;nmaupu](https://github.com/nmaupu) made their first contribution in kubernetes-sigs/external-dns#4932
-   [@&#8203;dtuck9](https://github.com/dtuck9) made their first contribution in kubernetes-sigs/external-dns#4856
-   [@&#8203;asymingt](https://github.com/asymingt) made their first contribution in kubernetes-sigs/external-dns#5015
-   [@&#8203;alexstojda](https://github.com/alexstojda) made their first contribution in kubernetes-sigs/external-dns#4866
-   [@&#8203;visokoo](https://github.com/visokoo) made their first contribution in kubernetes-sigs/external-dns#4944
-   [@&#8203;vishuvenu](https://github.com/vishuvenu) made their first contribution in kubernetes-sigs/external-dns#4931
-   [@&#8203;TomyLobo](https://github.com/TomyLobo) made their first contribution in kubernetes-sigs/external-dns#4893
-   [@&#8203;strophy](https://github.com/strophy) made their first contribution in kubernetes-sigs/external-dns#5036
-   [@&#8203;malpou](https://github.com/malpou) made their first contribution in kubernetes-sigs/external-dns#4946
-   [@&#8203;foyerunix](https://github.com/foyerunix) made their first contribution in kubernetes-sigs/external-dns#4782
-   [@&#8203;rwunderer](https://github.com/rwunderer) made their first contribution in kubernetes-sigs/external-dns#5065
-   [@&#8203;Ileriayo](https://github.com/Ileriayo) made their first contribution in kubernetes-sigs/external-dns#5070
-   [@&#8203;hjoshi123](https://github.com/hjoshi123) made their first contribution in kubernetes-sigs/external-dns#5067
-   [@&#8203;mkhpalm](https://github.com/mkhpalm) made their first contribution in kubernetes-sigs/external-dns#5046
-   [@&#8203;woehrl01](https://github.com/woehrl01) made their first contribution in kubernetes-sigs/external-dns#4522
-   [@&#8203;jtszalay](https://github.com/jtszalay) made their first contribution in kubernetes-sigs/external-dns#4889
-   [@&#8203;splitice](https://github.com/splitice) made their first contribution in kubernetes-sigs/external-dns#5102
-   [@&#8203;drcapulet](https://github.com/drcapulet) made their first contribution in kubernetes-sigs/external-dns#5096
-   [@&#8203;mrozentsvayg](https://github.com/mrozentsvayg) made their first contribution in kubernetes-sigs/external-dns#5087
-   [@&#8203;frittentheke](https://github.com/frittentheke) made their first contribution in kubernetes-sigs/external-dns#5115
-   [@&#8203;masterkain](https://github.com/masterkain) made their first contribution in kubernetes-sigs/external-dns#5116
-   [@&#8203;renanqts](https://github.com/renanqts) made their first contribution in kubernetes-sigs/external-dns#5132
-   [@&#8203;rlees85](https://github.com/rlees85) made their first contribution in kubernetes-sigs/external-dns#5111
-   [@&#8203;stefaneg](https://github.com/stefaneg) made their first contribution in kubernetes-sigs/external-dns#5135
-   [@&#8203;saikatharryc](https://github.com/saikatharryc) made their first contribution in kubernetes-sigs/external-dns#5149

**Full Changelog**: kubernetes-sigs/external-dns@v0.15.1...v0.16.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MC4wLjAtbmV4dC4xIiwidXBkYXRlZEluVmVyIjoiNDAuMC4wLW5leHQuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiZGVwL21pbm9yIl19-->

Reviewed-on: https://codeberg.org/JesusMtnez/homelab/pulls/667
Co-authored-by: JesusMtnez-bot <[email protected]>
Co-committed-by: JesusMtnez-bot <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved Indicates a PR has been approved by an approver from all required OWNERS files. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. lgtm "Looks good to me", indicates that a PR is ready to be merged. ok-to-test Indicates a non-member PR verified by an org member that is safe to test. size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. tide/merge-method-squash Denotes a PR that should be squashed by tide when it merges.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

AAAA records for AWS NLB(Network Load Balancers) are not created AWS NLB in dual-stack does not create AAAA record
4 participants