Warning
This software is experimental and NOT FIT FOR PRODUCTION USE!
ExternalDNS is a Kubernetes add-on for automatically managing DNS records for Kubernetes ingresses and services by using different DNS providers. This webhook provider allows you to automate DNS records from your Kubernetes clusters into your UniFi Network controller.
- ExternalDNS >= v0.14.0
- UniFi OS >= 3.x
- UniFi Network >= 8.2.93
-
Create a local user with a password in your UniFi OS, this user only needs read/write access to the UniFi Network appliance.
-
Add the ExternalDNS Helm repository to your cluster.
helm repo add external-dns https://kubernetes-sigs.github.io/external-dns/
-
Create a Kubernetes secret called
external-dns-unifi-secret
that holdsusername
andpassword
with their respected values from step 1. -
Create the helm values file, for example
external-dns-unifi-values.yaml
:fullnameOverride: external-dns-unifi logLevel: debug provider: name: webhook webhook: image: repository: ghcr.io/kashalls/external-dns-unifi-webhook tag: main # replace with a versioned release tag env: - name: UNIFI_HOST value: https://192.168.1.1 # replace with the address to your UniFi router - name: UNIFI_USER valueFrom: secretKeyRef: name: external-dns-unifi-secret key: username - name: UNIFI_PASS valueFrom: secretKeyRef: name: external-dns-unifi-secret key: password - name: LOG_LEVEL value: debug livenessProbe: httpGet: path: /healthz port: http-wh-metrics initialDelaySeconds: 10 timeoutSeconds: 5 readinessProbe: httpGet: path: /readyz port: http-wh-metrics initialDelaySeconds: 10 timeoutSeconds: 5 extraArgs: - --ignore-ingress-tls-spec policy: sync sources: ["ingress", "service"] txtOwnerId: default txtPrefix: k8s. domainFilters: ["example.com"] # replace with your domain
-
Install the Helm chart
helm install external-dns-unifi external-dns/external-dns -f external-dns-unifi-values.yaml --version 1.14.3 -n external-dns
Thanks to all the people who donate their time to the Home Operations Discord community.