{"id":15148418,"url":"https://github.com/manibatra/kube-pihole","last_synced_at":"2025-10-05T21:50:05.264Z","repository":{"id":72543182,"uuid":"495013502","full_name":"manibatra/kube-pihole","owner":"manibatra","description":null,"archived":false,"fork":false,"pushed_at":"2022-06-20T03:24:13.000Z","size":23,"stargazers_count":56,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-01-30T22:42:45.268Z","etag":null,"topics":["ingress-nginx","k3s","kubernetes","pi-hole","raspberry-pi"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/manibatra.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-05-22T09:25:09.000Z","updated_at":"2023-06-22T22:56:00.000Z","dependencies_parsed_at":"2023-05-24T12:00:13.672Z","dependency_job_id":null,"html_url":"https://github.com/manibatra/kube-pihole","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manibatra%2Fkube-pihole","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manibatra%2Fkube-pihole/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manibatra%2Fkube-pihole/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manibatra%2Fkube-pihole/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/manibatra","download_url":"https://codeload.github.com/manibatra/kube-pihole/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237910078,"owners_count":19385829,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ingress-nginx","k3s","kubernetes","pi-hole","raspberry-pi"],"created_at":"2024-09-26T13:03:40.831Z","updated_at":"2025-10-05T21:50:00.196Z","avatar_url":"https://github.com/manibatra.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Kube PiHole\n\nA lean configuration for running Pi Hole in a local Kubernetes cluster. Ideal for homelabs. Inspired by [docker pi-hole](https://github.com/pi-hole/docker-pi-hole)\n\n\n## Installation \n\nWe assume a running K8s/K3s cluster.\n\n1. Create volumes to be used by the pi-hole deployment : \n\n```bash\nfor $v in vol1 vol2; do\n  mkdir -p /mnt/disks/$v\n  sudo mount -t tmpfs $v /mnt/disks/$v\ndone\n```\n2. Create the admin password for pi-hole, base64 encode it and it to `./pi-hole/k3s/secret.yaml`\n3. Apply the pi-hole YAMLs : `kubectl apply -f ./pi-hole/k3s/`\n\nThe repository comes with manifests to set up [ingress-nginx](https://kubernetes.github.io/ingress-nginx/) services to access the pi-hole admin interface and forward the DNS queries to the pi-hole service.\n1. Install the helm chart with overrides : `helm upgrade --install --create-namespace --namespace ingress-nginx --repo https://kubernetes.github.io/ingress-nginx ingress-nginx ingress-nginx -f ./ingress-ngnx/helm/values/overrides.yaml`\n2. Apply the YAMLs for the udp service and load balancer : `k apply -f ./ingress-nginx/k3s/`\n3. Disable systemd-resolve service to stop it from listening on port 53 : `systemctl disable systemd-resolve`\n4. Set IP of one of your nodes as your DNS server. \n\n\n## Notes \n- We create a separate load balancer for the UDP protocol because the service type `LoadBalancer` does not support a multi protocol setup. though the support is in the [pipeline](https://github.com/kubernetes/enhancements/issues/1435). \n- The UDP service is not exposed using helm chart values because doing so forces helm to add the service to the TCP load balancer leading to a failure due to the reason mentioned above. \n\n## TO DO\n- [ ] IPv6 support\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmanibatra%2Fkube-pihole","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmanibatra%2Fkube-pihole","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmanibatra%2Fkube-pihole/lists"}