Configure Technitium DNS on K8s

Pi-hole could only block blocks ads and tracking domains but technitium is a self-hosted DNS server plus a Pi-hole . It resolves ash.local domain names to IPs and also blocks ads at DNS level like Pi-hole so its a two in one deployment.

The installation doc is here.

https://artifacthub.io/packages/helm/obeone/technitium-dnsserver

Add helm repo

helm repo add obeone https://charts.obeone.cloud

Update helm repo

helm repo update

curl -v http://172.16.77.10:30053

Install the technitium one the local storage class

helm install technitium obeone/technitium-dnsserver \
  --version 1.8.0 \
  --namespace dns \
  --create-namespace \
  --set service.main.type=NodePort \
  --set service.main.ports.http.nodePort=30053 \
  --set persistence.config.type=pvc \
  --set persistence.config.storageClass=local-path \
  --set persistence.config.size=1Gi

Get pods

kubectl get pods -n  dns
kubectl get pods -n dns --show-labels

Export the yml config file

kubectl get svc technitium-technitium-dnsserver -n dns -o yaml
curl -v http://172.16.77.10:30053  | head -1

The Helm chart mapped the web UI to NodePort 30053

The URL wont be accessible via html UI so the issue here is we need to expose the Web Interface via Ingress so a dedicated NodePort service can be created on 30680

https://artifacthub.io/packages/helm/obeone/technitium-dnsserver

awk@k3s-cp-01:~/k8s$ cat technitium-ui-svc.yaml
apiVersion: v1
kind: Service
metadata:
  name: technitium-ui
  namespace: dns
spec:
  type: NodePort
  selector:
    app.kubernetes.io/name: technitium-dnsserver
  ports:
    - name: http
      port: 80
      targetPort: 5380
      nodePort: 30680
awk@k3s-cp-01:~/k8s$

Apply the config

kubectl apply -f technitium-ui-svc.yaml

So Technitium is the new DNS server for ash.local

(Visited 3 times, 1 visits today)

By Ash Thomas

Ash Thomas is a seasoned IT professional with extensive experience as a technical expert, complemented by a keen interest in blockchain technology.