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.
Marius Ensrud 1e5a433a94 reset 3 years ago
..
templates remove soa 3 years ago
.helmignore
Chart.yaml
README.md
values.yaml reset 3 years ago

README.md

Powerdns

PowerDNS with Mariadb and PowerDNS-Admin Helm to easy PowerDNS deploy on Kubernetes

PowerDNS 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

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 deployment on a Kubernetes cluster using the Helm package manager.

It also packages:

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:

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 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:

$ 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,

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,

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 image stores the Database at /var/lib/mysql path of the container.

Persistent Volume Claims are used to keep the data across deployments.