https://github.com/pier-oliviert/phonebook
Manage DNS Records with Kubernetes
https://github.com/pier-oliviert/phonebook
developer-tools devops dns dynamic-dns ipv4 ipv6 kubernetes networking operator
Last synced: about 1 year ago
JSON representation
Manage DNS Records with Kubernetes
- Host: GitHub
- URL: https://github.com/pier-oliviert/phonebook
- Owner: pier-oliviert
- License: apache-2.0
- Created: 2024-09-05T13:29:55.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-11-25T13:23:17.000Z (over 1 year ago)
- Last Synced: 2025-04-01T01:01:42.169Z (about 1 year ago)
- Topics: developer-tools, devops, dns, dynamic-dns, ipv4, ipv6, kubernetes, networking, operator
- Language: Go
- Homepage: https://pier-oliviert.github.io/phonebook/
- Size: 3.64 MB
- Stars: 63
- Watchers: 3
- Forks: 1
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Phonebook: Manage DNS Record in Kubernetes
[](https://github.com/pier-oliviert/phonebook/actions/workflows/test.yaml)
Phonebook is an [operator](https://kubernetes.io/docs/concepts/extend-kubernetes/operator/) that helps you manage DNS Record for your cloud provider from within Kubernetes. Using custom resource definitions (CRDs), you can build DNS records in a same manner you would create other resources with Kubernetes.
```yaml
# This will create a new `A` record `mysubdomain.mytestdomain.com` pointing
# at `127.0.0.1``
apiVersion: se.quencer.io/v1alpha1
kind: DNSRecord
metadata:
name: dnsrecord-sample
namespace: phonebook-system
spec:
zone: mytestdomain.com
recordType: A
name: mysubdomain
ttl: 60
targets:
- 127.0.0.1
- 127.0.0.2 # If provider supports multi-target
```
### Features
- Only manage DNS Record that are presents as DNSRecord in the cluster
- Manage DNS Record like any other resources (Create/Delete)
- Support all DNS Record Types (A, AAAA, TXT, CNAME, etc.)
- Support cloud provider specific properties
- Proper error handling per DNS Record
- Allows specifying TTL
- Allows multiple targets on providers with multi support (Azure, AWS)
### Supported providers
Here's a list of all supported providers. If you need a provider that isn't yet supported, create a new [issue](https://github.com/pier-oliviert/phonebook/issues/new).
|||||
|--|--|--|--|
|[AWS](https://pier-oliviert.github.io/phonebook/providers/aws/)|[Cloudflare](https://pier-oliviert.github.io/phonebook/providers/cloudflare/)|[Azure](https://pier-oliviert.github.io/phonebook/providers/azure/)|[deSEC](https://pier-oliviert.github.io/phonebook/providers/desec/)
### Get Started
The [documentation](https://pier-oliviert.github.io/phonebook/) has all the information for you to get started with Phonebook.
### Special thanks
This project was built out of need, but I also want to give a special thanks to [external-dns](https://github.com/kubernetes-sigs/external-dns) as that project was a huge inspiration for Phonebook. A lot of the ideas here stem from my usage of external-dns over the years. I have nothing but respect for that project.