go.anx.io/external-dns-webhook


ExternalDNS - Anexia Webhook Provider

License Build GoReport Coverage)

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.

Configuration

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.

Kubernetes Deployment

The Anexia Webhook Provider is provided as an OCI image in ghcr.io/probstenhias/external-dns-anexia-webhook.

The following is an example deployment for the Anexia Webhook Provider:

 1helm repo add bitnami https://charts.bitnami.com/bitnami
 2
 3# create the anexia configuration
 4kubectl create secret generic anexia-configuration \
 5    --from-literal=url='<ANEXIA_API_URL>' \
 6    --from-literal=token='<ANEXIA_API_TOKEN>'
 7
 8# create the helm values file
 9cat <<EOF > external-dns-anexia-values.yaml
10provider: webhook
11
12extraArgs:
13  webhook-provider-url: http://localhost:8888
14
15sidecars:
16  - name: anexia-webhook
17    image: ghcr.io/probstenhias/external-dns-anexia-webhook:$RELEASE_VERSION
18    ports:
19      - containerPort: 8888
20        name: http
21    livenessProbe:
22      httpGet:
23        path: /healthz
24        port: http
25      initialDelaySeconds: 10
26      timeoutSeconds: 5
27    readinessProbe:
28      httpGet:
29        path: /healthz
30        port: http
31      initialDelaySeconds: 10
32      timeoutSeconds: 5
33    env:
34      - name: LOG_LEVEL
35        value: debug
36      - name: ANEXIA_API_URL
37        valueFrom:
38          secretKeyRef:
39            name: anexia-configuration
40            key: url
41      - name: ANEXIA_API_TOKEN
42        valueFrom:
43          secretKeyRef:
44            name: anexia-configuration
45            key: token
46      - name: SERVER_HOST
47        value: "0.0.0.0"
48      - name: DRY_RUN
49        value: "false"
50EOF
51
52# install external-dns with helm
53helm install external-dns-anexia bitnami/external-dns -f external-dns-anexia-values.yaml