--- # DNS TCP Service (LoadBalancer with fixed IP) apiVersion: v1 kind: Service metadata: name: pihole-dns-tcp namespace: pihole annotations: metallb.universe.tf/loadBalancerIPs: 192.168.11.181 metallb.universe.tf/allow-shared-ip: pihole-dns spec: type: LoadBalancer externalTrafficPolicy: Local selector: app: pihole ports: - name: dns-tcp port: 53 targetPort: 53 protocol: TCP --- # DNS UDP Service (LoadBalancer with fixed IP) apiVersion: v1 kind: Service metadata: name: pihole-dns-udp namespace: pihole annotations: metallb.universe.tf/loadBalancerIPs: 192.168.11.181 metallb.universe.tf/allow-shared-ip: pihole-dns spec: type: LoadBalancer externalTrafficPolicy: Local selector: app: pihole ports: - name: dns-udp port: 53 targetPort: 53 protocol: UDP --- # Web UI Service (ClusterIP, exposed via Ingress) apiVersion: v1 kind: Service metadata: name: pihole-web namespace: pihole spec: type: ClusterIP selector: app: pihole ports: - name: web port: 80 targetPort: 80 protocol: TCP