**PowerDNS** is a high-performance, open source authoritative DNS server with a powerful backend API that makes it ideal for cloud and hosting environments where DNS records need to be created and updated programmatically — not manually. It is the standard authoritative DNS choice for self-operated clouds.
---
### First Principle: In a cloud environment, DNS records should be created by automation, not humans.
When a tenant provisions a VM or service, DNS records should be created automatically. When resources are destroyed, records should be cleaned up. PowerDNS's REST API (pdns-api) makes DNS management a first-class programmatic operation — [[OpenTofu]] modules, [[Ansible]] playbooks, and custom automation can all manage DNS without editing zone files.
---
### Key Considerations
- **Backends**: PowerDNS supports multiple backends — MySQL, PostgreSQL, SQLite, LDAP. The database backends allow DNS zone data to be managed via SQL queries or ORM — making DNS zone management a data management problem.
- **REST API**: The pdns-api allows CRUD operations on zones and records over HTTP. Any automation framework can create DNS records programmatically — no zone file editing, no `rndc reload`.
- **Recursion vs Authority**: PowerDNS Authoritative Server handles authority for zones you own. PowerDNS Recursor is a separate product for recursive resolving (external DNS for your network). Both are often deployed together.
- **[[Kubernetes]] ExternalDNS**: The ExternalDNS operator reads Kubernetes Services and Ingresses and automatically creates/deletes DNS records in PowerDNS — implementing automated DNS for cloud-native workloads.
- **DNSSEC**: PowerDNS has first-class DNSSEC support — signing zones, managing keys, and automating key rollover.
- **Zones as Code**: Combining PowerDNS's API with [[OpenTofu]] allows DNS zones to be declared as code, reviewed in pull requests, and applied automatically.
---
### How It Fits
```
[[OpenTofu]] / ExternalDNS / tenant provisioning
→ PowerDNS REST API (create/update/delete records)
→ PostgreSQL/MySQL (zone data store)
→ [[CoreDNS]] (internal cluster DNS, delegates external to PowerDNS)
```
[[CoreDNS]] | [[OpenTofu]] | [[Kubernetes]] | [[HAProxy]] | [[Open Source Hyperscaler MoC]]