The Anexia Webhook Provider for ExternalDNS allows you to use Anexia's DNS API to manage DNS records for your domains.
The provider is heavily inspired by the ExternalDNS - IONOS Webhook and some inspiration taken from the External DNS - Adguard Home Provider.
The initial work was by done by @ProbstenHias, who still serves as the primary maintainer. Thanks a lot! 💜
See cmd/webhook/init/configuration/configuration.go for all available configuration options for the webhook sidecar, and internal/anexia/configuration.go for all available configuration options for the Anexia provider.
The Anexia Webhook Provider is provided as an OCI image in ghcr.io/anexia/k8s-external-dns-webhook.
The following is an example deployment for the Anexia Webhook Provider:
helm repo add external-dns https://kubernetes-sigs.github.io/external-dns/
# create the anexia configuration
kubectl create secret generic anexia-credentials \
--from-literal=token='<ANEXIA_API_TOKEN>'
# create the helm values file
cat <<EOF > external-dns-anexia-values.yaml
# -- ExternalDNS Log level.
logLevel: debug # reduce in production
# -- if true, _ExternalDNS_ will run in a namespaced scope (Role and Rolebinding will be namespaced too).
namespaced: false
# -- _Kubernetes_ resources to monitor for DNS entries.
sources:
- ingress
- service
- crd
extraArgs:
## must override the default value with port 8888 with port 8080 because this is hard-coded in the helm chart
- --webhook-provider-url=http://localhost:8080
provider:
name: webhook
webhook:
image: ghcr.io/anexia/k8s-external-dns-webhook
tag: v0.1.6
env:
- name: LOG_LEVEL
value: debug # reduce in production
- name: ANEXIA_API_URL
value: <ANEXIA_API_URL>
- name: ANEXIA_API_TOKEN
valueFrom:
secretKeyRef:
name: anexia-credentials
key: token
- name: SERVER_HOST
value: "0.0.0.0"
- name: DRY_RUN
value: "false"
EOF
# install external-dns with helm
helm upgrade -i external-dns-anexia external-dns/external-dns -f external-dns-anexia-values.yaml