martinohmann / home-ops

Wife approved HomeOps driven by Kubernetes and GitOps using Flux
MIT License
5 stars 0 forks source link

feat(kubernetes): install fritz-exporter #1001

Closed martinohmann closed 1 month ago

github-actions[bot] commented 1 month ago

kustomization changes in kubernetes/main

--- kubernetes/main/apps Kustomization: flux-system/cluster-apps Kustomization: flux-system/fritz-exporter

+++ kubernetes/main/apps Kustomization: flux-system/cluster-apps Kustomization: flux-system/fritz-exporter

@@ -0,0 +1,32 @@

+---
+apiVersion: kustomize.toolkit.fluxcd.io/v1
+kind: Kustomization
+metadata:
+  labels:
+    kustomize.toolkit.fluxcd.io/name: cluster-apps
+    kustomize.toolkit.fluxcd.io/namespace: flux-system
+  name: fritz-exporter
+  namespace: flux-system
+spec:
+  commonMetadata:
+    labels:
+      app.kubernetes.io/name: fritz-exporter
+  decryption:
+    provider: sops
+    secretRef:
+      name: sops-age
+  interval: 2h
+  path: ./kubernetes/main/apps/monitoring/fritz-exporter/app
+  postBuild:
+    substituteFrom:
+    - kind: Secret
+      name: cluster-secrets
+  prune: true
+  retryInterval: 1m
+  sourceRef:
+    kind: GitRepository
+    name: home-kubernetes
+  targetNamespace: monitoring
+  timeout: 5m
+  wait: false
+
--- kubernetes/main/apps/monitoring/grafana/app Kustomization: flux-system/grafana HelmRelease: monitoring/grafana

+++ kubernetes/main/apps/monitoring/grafana/app Kustomization: flux-system/grafana HelmRelease: monitoring/grafana

@@ -173,12 +173,16 @@

           gnetId: 17457
           revision: 6
         external-dns:
           datasource: Prometheus
           gnetId: 15038
           revision: 3
+        fritz-exporter:
+          datasource: Prometheus
+          gnetId: 13983
+          revision: 10
         nginx:
           datasource: Prometheus
           url: https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/grafana/dashboards/nginx.json
         nginx-request-handling-performance:
           datasource: Prometheus
           url: https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/grafana/dashboards/request-handling-performance.json
--- kubernetes/main/apps/monitoring/fritz-exporter/app Kustomization: flux-system/fritz-exporter HelmRelease: monitoring/fritz-exporter

+++ kubernetes/main/apps/monitoring/fritz-exporter/app Kustomization: flux-system/fritz-exporter HelmRelease: monitoring/fritz-exporter

@@ -0,0 +1,85 @@

+---
+apiVersion: helm.toolkit.fluxcd.io/v2
+kind: HelmRelease
+metadata:
+  labels:
+    app.kubernetes.io/name: fritz-exporter
+    kustomize.toolkit.fluxcd.io/name: fritz-exporter
+    kustomize.toolkit.fluxcd.io/namespace: flux-system
+  name: fritz-exporter
+  namespace: monitoring
+spec:
+  chart:
+    spec:
+      chart: app-template
+      sourceRef:
+        kind: HelmRepository
+        name: bjw-s
+        namespace: flux-system
+      version: 3.2.1
+  install:
+    remediation:
+      retries: 3
+  interval: 2h
+  maxHistory: 2
+  uninstall:
+    keepHistory: false
+  upgrade:
+    cleanupOnFail: true
+    remediation:
+      retries: 3
+      strategy: uninstall
+  values:
+    controllers:
+      fritz-exporter:
+        containers:
+          app:
+            envFrom:
+            - secretRef:
+                name: fritz-exporter
+            image:
+              repository: pdreker/fritz_exporter
+              tag: 2.5.0@sha256:6318a9cc6f306d489e7fdc91224aa07ede5af77483fa4b3c4aac2c5d9cc970af
+            probes:
+              liveness:
+                enabled: true
+              readiness:
+                enabled: true
+            resources:
+              limits:
+                memory: 100Mi
+              requests:
+                cpu: 10m
+                memory: 50Mi
+            securityContext:
+              allowPrivilegeEscalation: false
+              capabilities:
+                drop:
+                - ALL
+              readOnlyRootFilesystem: true
+        replicas: 1
+        strategy: RollingUpdate
+    defaultPodOptions:
+      securityContext:
+        runAsGroup: 65534
+        runAsNonRoot: true
+        runAsUser: 65534
+        seccompProfile:
+          type: RuntimeDefault
+    service:
+      app:
+        controller: fritz-exporter
+        ports:
+          http:
+            port: 9787
+    serviceMonitor:
+      app:
+        enabled: true
+        endpoints:
+        - interval: 1m
+          path: /metrics
+          port: http
+          scheme: http
+          scrapeTimeout: 10s
+        serviceName: fritz-exporter
+
github-actions[bot] commented 1 month ago

helmrelease changes in kubernetes/main

--- HelmRelease: monitoring/grafana ConfigMap: monitoring/grafana

+++ HelmRelease: monitoring/grafana ConfigMap: monitoring/grafana

@@ -208,12 +208,16 @@

     \ \\\n      | sed '/-- .* --/! s/${DS_PROMETHEUS}/Prometheus/g' \\\n> \"/var/lib/grafana/dashboards/networking/cloudflared.json\"\
     \n  \ncurl -skf \\\n--connect-timeout 60 \\\n--max-time 60 \\\n-H \"Accept: application/json\"\
     \ \\\n-H \"Content-Type: application/json;charset=UTF-8\" \\\n  \"https://grafana.com/api/dashboards/15038/revisions/3/download\"\
     \ \\\n  | sed '/-- .* --/! s/\"datasource\":.*,/\"datasource\": \"Prometheus\"\
     ,/g' \\\n> \"/var/lib/grafana/dashboards/networking/external-dns.json\"\n  \n\
     curl -skf \\\n--connect-timeout 60 \\\n--max-time 60 \\\n-H \"Accept: application/json\"\
+    \ \\\n-H \"Content-Type: application/json;charset=UTF-8\" \\\n  \"https://grafana.com/api/dashboards/13983/revisions/10/download\"\
+    \ \\\n  | sed '/-- .* --/! s/\"datasource\":.*,/\"datasource\": \"Prometheus\"\
+    ,/g' \\\n> \"/var/lib/grafana/dashboards/networking/fritz-exporter.json\"\n  \n\
+    curl -skf \\\n--connect-timeout 60 \\\n--max-time 60 \\\n-H \"Accept: application/json\"\
     \ \\\n-H \"Content-Type: application/json;charset=UTF-8\" \\\n  \"https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/grafana/dashboards/nginx.json\"\
     \ \\\n  | sed '/-- .* --/! s/\"datasource\":.*,/\"datasource\": \"Prometheus\"\
     ,/g' \\\n> \"/var/lib/grafana/dashboards/networking/nginx.json\"\n  \ncurl -skf\
     \ \\\n--connect-timeout 60 \\\n--max-time 60 \\\n-H \"Accept: application/json\"\
     \ \\\n-H \"Content-Type: application/json;charset=UTF-8\" \\\n  \"https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/grafana/dashboards/request-handling-performance.json\"\
     \ \\\n  | sed '/-- .* --/! s/\"datasource\":.*,/\"datasource\": \"Prometheus\"\
--- HelmRelease: monitoring/fritz-exporter Service: monitoring/fritz-exporter

+++ HelmRelease: monitoring/fritz-exporter Service: monitoring/fritz-exporter

@@ -0,0 +1,22 @@

+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: fritz-exporter
+  labels:
+    app.kubernetes.io/instance: fritz-exporter
+    app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/name: fritz-exporter
+    app.kubernetes.io/service: fritz-exporter
+spec:
+  type: ClusterIP
+  ports:
+  - port: 9787
+    targetPort: 9787
+    protocol: TCP
+    name: http
+  selector:
+    app.kubernetes.io/component: fritz-exporter
+    app.kubernetes.io/instance: fritz-exporter
+    app.kubernetes.io/name: fritz-exporter
+
--- HelmRelease: monitoring/fritz-exporter Deployment: monitoring/fritz-exporter

+++ HelmRelease: monitoring/fritz-exporter Deployment: monitoring/fritz-exporter

@@ -0,0 +1,73 @@

+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: fritz-exporter
+  labels:
+    app.kubernetes.io/component: fritz-exporter
+    app.kubernetes.io/instance: fritz-exporter
+    app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/name: fritz-exporter
+spec:
+  revisionHistoryLimit: 3
+  replicas: 1
+  strategy:
+    type: RollingUpdate
+  selector:
+    matchLabels:
+      app.kubernetes.io/component: fritz-exporter
+      app.kubernetes.io/name: fritz-exporter
+      app.kubernetes.io/instance: fritz-exporter
+  template:
+    metadata:
+      labels:
+        app.kubernetes.io/component: fritz-exporter
+        app.kubernetes.io/instance: fritz-exporter
+        app.kubernetes.io/name: fritz-exporter
+    spec:
+      enableServiceLinks: false
+      serviceAccountName: default
+      automountServiceAccountToken: true
+      securityContext:
+        runAsGroup: 65534
+        runAsNonRoot: true
+        runAsUser: 65534
+        seccompProfile:
+          type: RuntimeDefault
+      hostIPC: false
+      hostNetwork: false
+      hostPID: false
+      dnsPolicy: ClusterFirst
+      containers:
+      - envFrom:
+        - secretRef:
+            name: fritz-exporter
+        image: pdreker/fritz_exporter:2.5.0@sha256:6318a9cc6f306d489e7fdc91224aa07ede5af77483fa4b3c4aac2c5d9cc970af
+        livenessProbe:
+          failureThreshold: 3
+          initialDelaySeconds: 0
+          periodSeconds: 10
+          tcpSocket:
+            port: 9787
+          timeoutSeconds: 1
+        name: app
+        readinessProbe:
+          failureThreshold: 3
+          initialDelaySeconds: 0
+          periodSeconds: 10
+          tcpSocket:
+            port: 9787
+          timeoutSeconds: 1
+        resources:
+          limits:
+            memory: 100Mi
+          requests:
+            cpu: 10m
+            memory: 50Mi
+        securityContext:
+          allowPrivilegeEscalation: false
+          capabilities:
+            drop:
+            - ALL
+          readOnlyRootFilesystem: true
+
--- HelmRelease: monitoring/fritz-exporter ServiceMonitor: monitoring/fritz-exporter

+++ HelmRelease: monitoring/fritz-exporter ServiceMonitor: monitoring/fritz-exporter

@@ -0,0 +1,26 @@

+---
+apiVersion: monitoring.coreos.com/v1
+kind: ServiceMonitor
+metadata:
+  name: fritz-exporter
+  labels:
+    app.kubernetes.io/instance: fritz-exporter
+    app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/name: fritz-exporter
+spec:
+  jobLabel: fritz-exporter
+  namespaceSelector:
+    matchNames:
+    - monitoring
+  selector:
+    matchLabels:
+      app.kubernetes.io/service: fritz-exporter
+      app.kubernetes.io/name: fritz-exporter
+      app.kubernetes.io/instance: fritz-exporter
+  endpoints:
+  - interval: 1m
+    path: /metrics
+    port: http
+    scheme: http
+    scrapeTimeout: 10s
+