From 10a70cd5afa1abe893fc63dcd3a6eaf42acf7ec8 Mon Sep 17 00:00:00 2001
From: Sheogorath <sheogorath@shivering-isles.com>
Date: Mon, 20 Nov 2023 00:02:04 +0100
Subject: [PATCH] feat(dns): Add DNS metric collection

---
 apps/k8s01/dns/dns.yaml            | 33 ++++++++++++++++++++++++++++--
 apps/k8s01/dns/kustomization.yaml  |  1 +
 apps/k8s01/dns/servicemonitor.yaml | 14 +++++++++++++
 3 files changed, 46 insertions(+), 2 deletions(-)
 create mode 100644 apps/k8s01/dns/servicemonitor.yaml

diff --git a/apps/k8s01/dns/dns.yaml b/apps/k8s01/dns/dns.yaml
index 0a959b1a1..f15483a90 100644
--- a/apps/k8s01/dns/dns.yaml
+++ b/apps/k8s01/dns/dns.yaml
@@ -3,14 +3,15 @@ apiVersion: v1
 kind: ConfigMap
 metadata:
   name: blocky-config
-  namespace: dns
+  labels:
+    app: resolver
 data:
   config.yaml: |
     ports:
       dns: 53
       tls: 853
       https: 443
-      http: 4000
+      http: 80
     upstreams:
       groups:
         default:
@@ -65,10 +66,16 @@ spec:
           ports:
             - containerPort: 53
               protocol: TCP
+              name: dns53tcp
             - containerPort: 53
               protocol: UDP
+              name: dns53udp
             - containerPort: 853
               protocol: TCP
+              name: dot
+            - containerPort: 80
+              protocol: TCP
+              name: http
           resources:
             requests:
               cpu: 100m
@@ -110,6 +117,8 @@ apiVersion: v1
 kind: Service
 metadata:
   name: dns53-tcp
+  labels:
+    app: resolver
   annotations:
     metallb.universe.tf/allow-shared-ip: "dns"
 spec:
@@ -126,6 +135,8 @@ apiVersion: v1
 kind: Service
 metadata:
   name: dns53-udp
+  labels:
+    app: resolver
   annotations:
     metallb.universe.tf/allow-shared-ip: "dns"
 spec:
@@ -142,6 +153,8 @@ apiVersion: v1
 kind: Service
 metadata:
   name: dns-over-tls
+  labels:
+    app: resolver
   annotations:
     metallb.universe.tf/allow-shared-ip: "dns"
 spec:
@@ -154,6 +167,22 @@ spec:
       port: 853
       targetPort: 853
 ---
+apiVersion: v1
+kind: Service
+metadata:
+  name: dns-over-http
+  labels:
+    app: resolver
+spec:
+  type: ClusterIP
+  selector:
+    app: resolver
+  ports:
+    - name: dns-over-http
+      protocol: TCP
+      port: 80
+      targetPort: 80
+---
 apiVersion: policy/v1
 kind: PodDisruptionBudget
 metadata:
diff --git a/apps/k8s01/dns/kustomization.yaml b/apps/k8s01/dns/kustomization.yaml
index a98025ae1..c576d92cd 100644
--- a/apps/k8s01/dns/kustomization.yaml
+++ b/apps/k8s01/dns/kustomization.yaml
@@ -6,5 +6,6 @@ resources:
   - certificate.yaml
   - dns.yaml
   - networkpolicy.yaml
+  - servicemonitor.yaml
   - ../../../shared/networkpolicies/allow-from-same-namespace.yaml
   - ../../../shared/resourcequotas/default.yaml
diff --git a/apps/k8s01/dns/servicemonitor.yaml b/apps/k8s01/dns/servicemonitor.yaml
new file mode 100644
index 000000000..530defd10
--- /dev/null
+++ b/apps/k8s01/dns/servicemonitor.yaml
@@ -0,0 +1,14 @@
+---
+apiVersion: monitoring.coreos.com/v1
+kind: ServiceMonitor
+metadata:
+  name: resolver
+  labels:
+    app: resolver
+spec:
+  selector:
+    matchLabels:
+      app: resolver
+  endpoints:
+    - port: http
+      path: /metrics
-- 
GitLab