You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
149 lines
12 KiB
Markdown
149 lines
12 KiB
Markdown
# Powerdns
|
|
PowerDNS with Mariadb and PowerDNS-Admin Helm to easy PowerDNS deploy on Kubernetes
|
|
|
|
[PowerDNS](https://www.powerdns.com/) is an open source DNS Authoritative Server (answer questions about domains it knows about, but will not go out on the net to resolve queries about other domains) software.
|
|
|
|
## TL;DR;
|
|
|
|
Supported for Helm v3
|
|
|
|
```console
|
|
helm repo add aecharts https://raw.githubusercontent.com/aescanero/helm-charts/master/
|
|
helm repo update
|
|
helm install aecharts/powerdns
|
|
```
|
|
|
|
## Introduction
|
|
|
|
This chart bootstraps a [pschiffe/docker-pdns](https://github.com/pschiffe/docker-pdns) deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.
|
|
|
|
It also packages:
|
|
- [aescanero/docker-powerdns-admin-alpine](https://github.com/aescanero/docker-powerdns-admin-alpine) based in [ngoduykhanh/PowerDNS-Admin](https://github.com/ngoduykhanh/PowerDNS-Admin) which provide a dashboard for PowerDNS management.
|
|
- [mariadb](https://www.mariadb.org) which is required for bootstrapping a MariaDB deployment for the database requirements of PowerDNS and PowerDNS-Admin applications.
|
|
|
|
## Prerequisites
|
|
|
|
- Kubernetes 1.8+ with Beta APIs enabled
|
|
- PV provisioner support in the underlying infrastructure (Optional)
|
|
|
|
## Installing the Chart
|
|
|
|
To install the chart with the release name `my-release`:
|
|
|
|
```console
|
|
helm repo add aecharts https://raw.githubusercontent.com/aescanero/helm-charts/master/
|
|
helm repo update
|
|
helm install my-release aecharts/powerdns
|
|
```
|
|
|
|
The command deploys PowerDNS on the Kubernetes cluster in the default configuration. The [configuration](#configuration) section lists the parameters that can be configured during installation.
|
|
|
|
> **Tip**: List all releases using `helm list`
|
|
|
|
## Uninstalling the Chart
|
|
|
|
To uninstall/delete the `my-release` deployment:
|
|
|
|
```console
|
|
$ helm delete my-release
|
|
```
|
|
|
|
The command removes all the Kubernetes components associated with the chart and deletes the release.
|
|
|
|
## Configuration
|
|
|
|
The following table lists the configurable parameters of the PowerDNS chart and their default values.
|
|
|
|
| Parameter | Description | Default |
|
|
|-----------------------------------|--------------------------------------------|---------------------------------------------------------|
|
|
| `powerdns.enabled` | Deploy the DNS Server packaged with Helm | `true` |
|
|
| `powerdns.service.dns.tcp.enabled`| Enable DNS (TCP) Service | `false` |
|
|
| `powerdns.service.dns.tcp.port` | Port of the DNS (TCP) Service | `53` |
|
|
| `powerdns.service.dns.tcp.type` | Class of the Kubernetes DNS (TCP) Service | `LoadBalancer` |
|
|
| `powerdns.service.dns.tcp.loadBalancerIP` | Statically assign LoadBalancerIP (UDP) | `` |
|
|
| `powerdns.service.dns.tcp.annotations` | Annotations for service (TCP) | `` |
|
|
| `powerdns.service.dns.udp.enabled`| Enable DNS (UDP) Service | `true` |
|
|
| `powerdns.service.dns.udp.port` | Port of the DNS (UDP) Service | `53` |
|
|
| `powerdns.service.dns.udp.type` | Class of the Kubernetes DNS (UDP) Service | `LoadBalancer` |
|
|
| `powerdns.service.dns.udp.loadBalancerIP` | Statically assign LoadBalancerIP (TCP) | `` |
|
|
| `powerdns.service.dns.udp.annotations` | Annotations for service (UDP) | `` |
|
|
| `powerdns.service.api.type` | Class of the Kubernetes PowerDNSAPI Service| `ClusterIP` |
|
|
| `powerdns.service.api.port` | Port of the DNS Service | `53` |
|
|
| `powerdns.image.repository` | PowerDNS image name | `pschiffe/pdns-mysql` |
|
|
| `powerdns.image.tag` | PowerDNS image tag | `alpine` |
|
|
| `powerdns.image.pullPolicy` | Image pull policy | `IfNotPresent` |
|
|
| `powerdns.domain` | Automatically create a domain | `external.local` |
|
|
| `powerdns.master` | Deploy PowerDNS as master | `yes` |
|
|
| `powerdns.api` | Enable API for Management (need webserver) | `yes` |
|
|
| `powerdns.webserver` | Enable web server to publish API | `yes` |
|
|
| `powerdns.webserver_address` | IP where the web server is published | `0.0.0.0` |
|
|
| `powerdns.webserver_allow_from` | Allow access to web server only from | `0.0.0.0/0` |
|
|
| `powerdns.version_string` | Version to designate the DNS Server | `anonymous` |
|
|
| `powerdns.default_ttl` | time-to-live of the DNS resources | `1500` |
|
|
| `powerdns.soa_minimum_ttl` | Minimal time-to-live of SOA | `1200` |
|
|
| `powerdns.default_soa_name` | Name to designate the zone | `ns1.external.local` |
|
|
| `powerdns.mysql_host` | Host of the external database | `127.0.0.1` |
|
|
| `powerdns.mysql_database` | Name of the external database | `powerdns` |
|
|
| `powerdns.mysql_user` | User of the external database | `powerdns` |
|
|
| `powerdns.mysql_rootpass` | Password of the root user of external BD | `nil` |
|
|
| `powerdns.mysql_pass` | Password of the user | `nil` |
|
|
| `powerdns.innodb_read_committed` | Set powerdns option gmysql-innodb-read-commited | `no` |
|
|
| `powerdns.resources` | CPU/Memory resource requests/limits | Memory: `512Mi`, CPU: `300m` |
|
|
| `mariadb.enabled` | Deploy the Database packaged with Helm | `true` |
|
|
| `mariadb.image.repository` | MariaDB image name | `mariadb` |
|
|
| `mariadb.image.tag` | MariaDB image tag | `latest` |
|
|
| `mariadb.image.pullPolicy` | Image pull policy | `IfNotPresent` |
|
|
| `mariadb.mysql_rootpass` | Password of the root user of internal BD | `nil` |
|
|
| `mariadb.mysql_pass` | Password of the user | `nil` |
|
|
| `mariadb.persistence.enabled` | Enable persistence using PVC | `true` |
|
|
| `mariadb.persistence.storageClass`| PVC Storage Class for MariaDB volume | `nil` |
|
|
| `mariadb.persistence.accessMode` | PVC Access Mode for MariaDB volume | `ReadWriteOnce` |
|
|
| `mariadb.persistence.size` | PVC Storage Request for MariaDB volume | `1Gi` |
|
|
| `mariadb.resources` | CPU/Memory resource requests/limits | Memory: `512Mi`, CPU: `300m` |
|
|
| `mariadb.args` | mysqld arguments | `--bind-address=127.0.0.1 --innodb_use_native_aio=0 --innodb_flush_method=fsync` |
|
|
| `powerdnsadmin.enabled` | Deploy the Dashboard packaged with Helm | `true` |
|
|
| `powerdnsadmin.service.type` | Class of Kubernetes PowerDNS-Admin Service | `LoadBalancer` |
|
|
| `powerdnsadmin.service.port` | Port of the PowerDNS-Admin Service | `9191` |
|
|
| `powerdnsadmin.image.repository` | PowerDNS-Admin image name | `aescanero/powerdns-admin` |
|
|
| `powerdnsadmin.image.tag` | PowerDNS-Admin image tag | `latest` |
|
|
| `powerdnsadmin.image.pullPolicy` | Image pull policy | `IfNotPresent` |
|
|
| `powerdnsadmin.proto` | Protocol of PowerDNS-Admin Service | `http` |
|
|
| `powerdnsadmin.powerdns_host` | Where is PowerDNS Service | `127.0.0.1` |
|
|
| `powerdnsadmin.powerdns_port` | Port of the PowerDNS API Service | `8081` |
|
|
| `powerdnsadmin.mysql_host` | Host of the external database | `127.0.0.1` |
|
|
| `powerdnsadmin.mysql_database` | Name of the external database | `powerdns` |
|
|
| `powerdnsadmin.mysql_user` | User of the external database | `powerdns` |
|
|
| `powerdnsadmin.mysql_pass` | Password of the user | `nil` |
|
|
| `powerdnsadmin.resources` | CPU/Memory resource requests/limits | Memory: `512Mi`, CPU: `300m` |
|
|
| `powerdnsadmin.ingress.enabled` | Deploy the Dashboard with Ingress | `false` |
|
|
| `powerdnsadmin.ingress.class` | Class of Ingress | `traefik` |
|
|
| `powerdnsadmin.ingress.hostname` | Hostname without domain part | `powerdns-admin` |
|
|
| `powerdnsadmin.ingress.path` | Path within the url structure | `/` |
|
|
|
|
The above parameters map to the env variables defined in each container. For more information please refer to each image documentation.
|
|
|
|
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
|
|
|
|
```console
|
|
helm repo add aecharts https://raw.githubusercontent.com/aescanero/helm-charts/master/
|
|
helm repo update
|
|
helm install powerdns-release --set domain=disasterproject.com aecharts/powerdns
|
|
```
|
|
|
|
The above command sets the domain managed by PowerDNS to `disasterproject.com`.
|
|
|
|
Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. For example,
|
|
|
|
```console
|
|
helm repo add aecharts https://raw.githubusercontent.com/aescanero/helm-charts/master/
|
|
helm repo update
|
|
helm install powerdns-release -f values.yaml aecharts/powerdns
|
|
```
|
|
|
|
## Persistence
|
|
|
|
The [mariadb](https://www.mariadb.org) image stores the Database at `/var/lib/mysql` path of the container.
|
|
|
|
Persistent Volume Claims are used to keep the data across deployments.
|
|
|