- Installs a PowerDNS authoritative nameserver inside a Kubernetes cluster
$ git clone https://github.com/cdwv/powerdns-helm
$ cd powerdns-helm
$ helm install .
Note: This will leave you with a PowerDNS server deployed to your k8s cluster. You will also need to configure some means of accesibility from the outside world for the DNS server to be accesible. You can do it e.g. by modifying your nginx-ingress-controller.
To install the chart with the release name my-release
:
$ helm install --name my-release .
To uninstall/delete the my-release deployment:
$ helm delete my-release
The command removes all the Kubernetes components associated with the chart and deletes the release.
Parameter | Description | Default |
---|---|---|
pdns.api.enabled |
Should the PowerDNS API be enabled | yes |
pdns.api.key |
PowerDNS API key | PowerDNSAPI |
pdns.webserver.allowFrom |
PowerDNS webserver allowed IP whitelist | 0.0.0.0/0 |
pdns.dnsupdate.enabled |
Should DNS UPDATE support be enabled | no |
replicaCount |
Number of pdns nodes | 1 |
image.repository |
Image repository | psitrax/powerdns |
image.tag |
Image tag. | 4.1.2 |
image.pullPolicy |
Image pull policy | IfNotPresent |
service.type |
Kubernetes service type | ClusterIP |
ingress.enabled |
Enables Ingress | false |
ingress.annotations |
Ingress annotations | {} |
ingress.path |
Custom path | / |
ingress.hosts |
Ingress accepted hostnames | chart-example.local |
ingress.tls |
Ingress TLS configuration | [] |
resources |
CPU/Memory resource limits/requests | {} |
nodeSelector |
Node labels for pod assignment | {} |
tolerations |
Toleration labels for pod assignment | [] |
affinity |
Affinity settings for pod assignment | {} |
mariadb.enabled |
Deploy MariaDB container(s) | true |
mariadb.mariadbRootPassword |
MariaDB admin password | nil |
mariadb.mariadbDatabase |
Database name to create | powerdns |
mariadb.mariadbUser |
Database user to create | powerdns |
mariadb.mariadbPassword |
Password for the database | powerdns |
mariadb.persistence.enabled |
Enable persistence using PVC | false |
mariadb.persistence.existingClaim |
Enable persistence using an existing PVC | nil |
mariadb.persistence.storageClass |
PVC Storage Class | nil (uses alpha storage class annotation) |
mariadb.persistence.accessMode |
PVC Access Mode | ReadWriteOnce |
mariadb.persistence.size |
PVC Storage Request | 2Gi |
mariadb.serviceDiscovery |
Discovery of mariadb service. One of: dns, env | dns |
General steps are outlined below. You can consult the files in the nginx-ingress folder for more information.
- Patch the nginx-ingress deployment to add UDP services (--udp-services-configmap=nginx-ingress/udp-ports)
- Add udp-ports configmap to nginx-ingress namespace
- Add a UDP loadbalancer service
- - Make sure all kubernetes/charts technical requirements are met
- - Make sure all kubernetes/charts documentation requirements are met
- - Add more pdns configuration options
- - Support secrets
powerdns-helm by CodeWave is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
Project is currently maintained, in our spare time, by codewave.eu and a growing number of Contributors!