From 49b1e5217c719af0c00c45039810863c25013c44 Mon Sep 17 00:00:00 2001 From: Christian Tardif Date: Wed, 12 Nov 2025 04:22:08 -0500 Subject: [PATCH] fix(external-dns): Adding support for PowerDNS provider (#41645) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit **Description** ⚒️ Fixes # **⚙️ Type of change** - [x] ⚙️ Feature/App addition - [ ] 🪛 Bugfix - [ ] ⚠️ Breaking change (fix or feature that would cause existing functionality to not work as expected) - [ ] 🔃 Refactor of current code - [x] 📜 Documentation Changes **🧪 How Has This Been Tested?** **📃 Notes:** **✔️ Checklist:** - [x] ⚖️ My code follows the style guidelines of this project - [x] 👀 I have performed a self-review of my own code - [x] #️⃣ I have commented my code, particularly in hard-to-understand areas - [x] 📄 I have made changes to the documentation - [ ] 🧪 I have added tests to this description that prove my fix is effective or that my feature works - [x] ⬆️ I increased versions for any altered app according to semantic versioning - [x] I made sure the title starts with `feat(chart-name):`, `fix(chart-name):`, `chore(chart-name):`, `docs(chart-name):` or `fix(docs):` **➕ App addition** If this PR is an app addition please make sure you have done the following. - [ ] 🖼️ I have added an icon in the Chart's root directory called `icon.png` --- _Please don't blindly check all the boxes. Read them and only check those that apply. Those checkboxes are there for the reviewer to see what is this all about and the status of this PR with a quick glance._ --------- Signed-off-by: Christian Tardif --- charts/stable/external-dns/Chart.yaml | 2 +- charts/stable/external-dns/docs/setup-guide.md | 16 +++++++++++++++- charts/stable/external-dns/templates/_args.tpl | 8 ++++++++ charts/stable/external-dns/values.yaml | 4 ++++ 4 files changed, 28 insertions(+), 2 deletions(-) diff --git a/charts/stable/external-dns/Chart.yaml b/charts/stable/external-dns/Chart.yaml index 4f77a102054..c57e694e2f3 100644 --- a/charts/stable/external-dns/Chart.yaml +++ b/charts/stable/external-dns/Chart.yaml @@ -38,5 +38,5 @@ sources: - https://github.com/kubernetes-sigs/external-dns - https://github.com/trueforge-org/truecharts/tree/master/charts/stable/external-dns type: application -version: 7.12.3 +version: 7.12.4 diff --git a/charts/stable/external-dns/docs/setup-guide.md b/charts/stable/external-dns/docs/setup-guide.md index 1cf233ff283..ffa6d8d1160 100644 --- a/charts/stable/external-dns/docs/setup-guide.md +++ b/charts/stable/external-dns/docs/setup-guide.md @@ -15,7 +15,21 @@ Inspired by Kubernetes DNS, Kubernetes' cluster-internal DNS server, ExternalDNS ## Installation instructions -This guide will cover 2 scenarios, `Cloudflare` and `Pi-hole`. For more external DNS record providers, see [External-DNS Docs](https://github.com/kubernetes-sigs/external-dns/tree/master/docs/tutorials). +This guide will cover 3 scenarios, `Cloudflare`, `Pi-hole` and `PowerDNS`. For more external DNS record providers, see [External-DNS Docs](https://github.com/kubernetes-sigs/external-dns/tree/master/docs/tutorials). + +### PowerDNS + +These instructions taken from [external-dns powerdns tutorial](https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/pdns.md) + +### Step 1 + +Set pdns provider with externaldns.provider: pdns + +### Step 2 + +Set externaldns.pdns.pdnsApiKey and externaldns.pdns.pdnsServerUrl.
+The ApiKey must provide Zone Read/Write on all zones covered by domainFilters
+The pdnsServerUrl is the full URL of the powerdns api endpoint, including the port (http://pdns-server-api.tld:9191/) ### Cloudflare diff --git a/charts/stable/external-dns/templates/_args.tpl b/charts/stable/external-dns/templates/_args.tpl index ca9521d7b45..c6df16ab1b2 100644 --- a/charts/stable/external-dns/templates/_args.tpl +++ b/charts/stable/external-dns/templates/_args.tpl @@ -51,4 +51,12 @@ args: {{- with .Values.externaldns.piholeAPIVersion }} - --pihole-api-version={{ . }} {{- end -}} + {{- if eq .Values.externaldns.provider "pdns" }} + {{- with .Values.externaldns.pdns.pdnsApiKey }} + - --pdns-api-key={{ . }} + {{- end -}} + {{- with .Values.externaldns.pdns.pdnsServerUrl }} + - --pdns-server={{ . }} + {{- end -}} + {{- end }} {{- end -}} diff --git a/charts/stable/external-dns/values.yaml b/charts/stable/external-dns/values.yaml index f8a8bf2e9ed..300f30de3c1 100644 --- a/charts/stable/external-dns/values.yaml +++ b/charts/stable/external-dns/values.yaml @@ -20,6 +20,10 @@ externaldns: piholePassword: "" piholeAPIVersion: "" triggerLoopOnEvent: "false" + # with externaldns.provider = pdns + pdns: + pdnsApiKey: "" + pdnsServerUrl: "" txtOwnerId: "" txtPrefix: "" txtSuffix: ""