Pi Hole on k3s cluster

The Pi-hole is a fantastic tool that blocks DNS requests to ad servers. That means you can surf the web without having to look at ads on every page.

PiHole in Kubernetes

After some google search, i have found this amazing helm repo which will install pi-hole using a helm chart.

I have made few updates to chart like ingress, address values; Overriding default pi-hole variables like WEBPASSWORD and TZ as a container environment variables in deployment resource.

configData: |-
  server=/local/192.168.1.1
  address=/.vikaspogu.com/192.168.1.132
ingress:
  host: pi-hole.vikaspogu.com
env:
- name: TZ
    value: "America/New_York"
- name: WEBPASSWORD
    value: "somepassword"

Install chart

  • Create a new namespace (optional)
#Create a new namespace
kubectl create ns pi-hole
  • Install chart in namespace
cd pihole-helm
helm install pi-hole .
  • Wait to pods
kubectl get pods
NAME                             READY   STATUS    RESTARTS   AGE
pi-hole-pihole-5bb56b5bd-b2wl7   1/1     Running   0          61m
  • Navigate to ingress route in my case (pi-hole.vikaspogu.com) and login with WEBPASSWORD used in deployment

Pi-Hole UI

Configure devices to use Pi-hole as their DNS server?

Configuring Verzion FiOS router to use Pi-Hole as DNS server:

  • On the top

    • Click My Network
  • On the left

    • Click Network Connections
  • Click Broadband Connection (Ethernet/Coax)>Settings

    • Click the drop down for DNS Server and select ‘Use The Following DNS Server Addresses’

    • Type in the static IP Address of your pi (Or Pi-hole server)

    • Click Apply