Skip to content

Technitium dns-server

Technitium dns-server is a self hostable open source dns server.

Apply the manifest.

cat technitium-localstorage.yaml | envsubst | kubectl apply -f -
technitium-localstorage.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: technitium
spec:
  selector:
    matchLabels:
      app: technitium
  replicas: 1
  template:
    metadata:
      labels:
        app: technitium
    spec:
      containers:
        - name: technitium
          image: technitium/dns-server:11.1.1
          volumeMounts:
            - name: technitium-volume
              mountPath: /etc/dns
      volumes:
        - name: technitium-volume
          persistentVolumeClaim:
            claimName: technitium-pvc
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: technitium-pvc
  namespace: default
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: local-path
  resources:
    requests:
      storage: 2Gi
---
kind: Service
apiVersion: v1
metadata:
  name: technitium-loadbalancer
spec:
  ports:
    - name: technitium-udp
      port: 53
      targetPort: 53
      protocol: UDP
    - name: technitium-tcp
      port: 53
      targetPort: 53
      protocol: TCP
    - name: technitium-http
      port: 5380
      targetPort: 5380
      protocol: TCP
  selector:
    app: technitium
  type: LoadBalancer

This example uses a loadbalancer instead of an ingress, so you can simply access the web interface on http://<server-ip>:5380 and the dns server on port 53. If you want to add a https certificate or basic auth to the web interface you need to use an ingress instead.