Pi-hole – Wie betreibe ich Pi-Hole in meinem eigenen Kubernetes Cluster?
Ich möchte zu Hause meinen eigenen Home-Server ersetzen durch ein Kubernetes Cluster mit Raspberry Pis. Dazu habe ich ein home-server-Projekt angelegt und werde dort den ganzen Prozess dokumentieren. Als erstes will ich ein Pi-hole als DNS-Server installieren, damit ich all meine Dienste über sprechende URLs erreichen kann, sowie direkt ein netzwerkweites sperren von ungeliebten Seiten habe.
Damit auch ihr ein eigenen Pi-hole-Service in eurem Cluster betreiben könnt, könnt ihr zunächst k3s auf eurem Raspberry Pi installieren und könnt dann anschließend dieser Anleitung weiter folgen. Habt ihr k3s installiert, benötigt ihr auf eurem Computer (nicht dem Raspberry Pi) Helm. Auf einem Debian/Ubuntu Computer geht das mit folgenden Befehlen.
curl https://baltocdn.com/helm/signing.asc | sudo apt-key add -
sudo apt-get install apt-transport-https --yes
echo "deb https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm
Helm ist eine einfache Weise Services wie Pi-Hole in einem Cluster zu installieren. Da ich noch kein eigenes Helm-Repository habe, müsst ihr das Helm-Paket aktuell selbst erzeugen. Aber checkt regelmäßig das home-server Repository ab, dort werde ich die aktuellste Vorgehensweise zum Installieren dokumentieren. Um das Paket selbst zu erzeugen, müsst ihr folgende Befehle ausführen.
git clone https://gitlab.com/lookslikematrix/home-server.git
cd home-server/pihole
Jetzt könnt ihr die values.yaml an eure Umgebung anpassen. Die wichtigsten Einträge sind die IP-Adresse eures Raspberry Pis (ServerIPv4 und ServerIPv6), sowie das PiHolePassword. Ihr solltet dabei euren Router so konfigurieren, dass die IP-Adressen statisch sind und sich somit nicht ändern können, damit euer DNS-Server stets die gleich IPv4- und IPv6-Adresse erhält. Anschließend könnt ihr das Helm-Paket erzeugen und installieren.
helm package .
helm install pihole pihole-0.0.4.tgz
Wenn ihr jetzt etwas wartet solltet ihr unter der IP-Adresse des Raspberry Pis das Webinterface von Pi-hole öffnen können. In meinem Fall http://192.168.178.10:8080. Damit jetzt euer Router das Pi-hole als DNS-Server verwendet, müsst ihr je nach Router anders vorgehen. Mit einer FRITZ!Box ist es recht einfach, wenn ihr nach der Anleitung Lokalen DNS-Server einrichten vorgeht (https://avm.de/service/fritzbox/fritzbox-7590/wissensdatenbank/publication/show/165_Andere-DNS-Server-in-FRITZ-Box-einrichten/). In der Regel solltet ihr dann nach einem Neustart eures Computers den neuen DNS-Server verwenden. Wenn ihr Debian/Ubuntu verwendet, könnt ihr das mit cat /etc/resolv.conf überprüfen und sehen, dass das Pi-hole als DNS-Server verwendet wird. Wenn ihr jetzt noch einen DNS Record in Pi-hole unter Local DNS -> DNS Records eingebt mit pihole.lookslikematrix.local und eurer IP-Adresse, dann erreicht ihr dank Ingress das Webinterface von Pi-hole über http://pihole.lookslikematrix.local. Auch diese Einstellung werde ich noch versuchen über den Helm-Chart abzuhandeln, damit ihr direkt das Pi-hole Webinterface unter einer schönen IP-Adresse erreichen könnt.
Ich hoffe euer eigener DNS-Server läuft jetzt und ich hoffe ich konnte euch dabei ein bisschen helfen. Wenn ihr Fragen oder Anregungen habt, dann lasst gerne einen Kommentar da und sonst freue ich mich über einen Kaffee.