docker-pdns/examples/kubernetes
Peter Schiffer 950b86265f
Update Fedora and Alpine base images
PDNS Recursor is now at version 5.0 and PDNS Alpine version at 4.9.
PDNS Fedora version stays at 4.8 for now.
2024-06-04 00:28:32 +02:00
..
admin-dashboard.yaml Replace pdns-admin-static and pdns-admin-uwsgi images with single pdns-admin 2024-01-01 20:39:33 +01:00
kustomization.yaml Supermaster support, multiple slaves on the same mysql server (#32) 2020-03-29 19:01:11 +02:00
mariadb.yaml Update Fedora and Alpine base images 2024-06-04 00:28:32 +02:00
master-daemonset.yaml Update Fedora and Alpine base images 2024-06-04 00:28:32 +02:00
README.MD Supermaster support, multiple slaves on the same mysql server (#32) 2020-03-29 19:01:11 +02:00
slave-daemonset.yaml Update Fedora and Alpine base images 2024-06-04 00:28:32 +02:00

PDNS example for Kubernetes

Files

  • master-daemonset.yaml : Daemonset for PDNS supermaster
  • slave-daemonset.yaml : Daemonset for PDNS slaves
  • admin-dashboard.yaml : Deployment for PDNS-Admin Web Dashboard
  • mariadb.yaml : Example Mysql Deployment

Example setup

This example deploys a supermaster and two slaves on the host network, so pdns can be reached from external networks. Access to the admin-dashboard has to be configured separately with ingress. The admin-dashboard uses a kubernetes clusterip service to use the supermaster-api. Supermaster, slaves and dashboard use the same MariaDB example deployment with different databases (not recommended for production environments). For signed AXFR you have to manually deploy TSIG Keys to you supermaster and slaves (https://doc.powerdns.com/authoritative/tsig.html).

Requirements

Node Labels

The Daemonsets use node-role labels as nodeSelector:

kubectl label node node1 node-role.kubernetes.io/pdns-master=true
kubectl label node node2 node-role.kubernetes.io/pdns-slave=true
kubectl label node node3 node-role.kubernetes.io/pdns-slave=true

Any other node labels will also work.

Service Names

Service names in the pdns namespace must not start with 'pdns' or they will break the pdns.conf environment templating.

Pod-CIDR

Replace "10.244.0.0/16" in the manifests with your cluster's pod-cidr.

Node IPs

Replace IPs and hostnames in the daemonset environments with your own node IPs and domains.

Used in this example:

component host ip
supermaster ns1.example.com 10.0.0.1
slave1 ns2.example.com 10.0.0.2
slave2 ns3.example.com 10.0.0.3