cluster

Infrastructure files for Nordgedanken and Midnightthoughts.
git clone git://archive.git.mtrnord.blog/MTRNord/cluster.git
Log | Files | Refs | README

commit 95570b5ce1f2daa2448f4eab6b2488ba5d576343
parent 4fc8a2ae3d80493064a59776542dd85f116199f3
Author: MTRNord <mtrnord1@gmail.com>
Date:   Mon, 31 Mar 2025 22:10:01 +0200

Prepare monitoring element.io

Diffstat:
Mapps/2024_cluster/kustomization.yaml | 1+
Aapps/2024_cluster/namespaces/changedetection.yaml | 4++++
Mapps/2024_cluster/namespaces/kustomization.yaml | 1+
Aapps/base/element_changedetection/element_deployment.yaml | 115+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aapps/base/element_changedetection/kustomization.yaml | 5+++++
Mapps/base/envoy-gateway/release.yaml | 420+++++++++++++++++++++++++++++++++++++++++--------------------------------------
6 files changed, 342 insertions(+), 204 deletions(-)

diff --git a/apps/2024_cluster/kustomization.yaml b/apps/2024_cluster/kustomization.yaml @@ -46,3 +46,4 @@ resources: - ../base/hubzilla - ../base/actualbudget-server - ../base/uptime-kuma + - ../base/element_changedetection diff --git a/apps/2024_cluster/namespaces/changedetection.yaml b/apps/2024_cluster/namespaces/changedetection.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: changedetection diff --git a/apps/2024_cluster/namespaces/kustomization.yaml b/apps/2024_cluster/namespaces/kustomization.yaml @@ -32,3 +32,4 @@ resources: #- rundeck.yaml - hubzilla.yaml - actualbudget-server.yaml + - changedetection.yaml diff --git a/apps/base/element_changedetection/element_deployment.yaml b/apps/base/element_changedetection/element_deployment.yaml @@ -0,0 +1,115 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: element-changedetection-data + namespace: changedetection +spec: + storageClassName: ceph-filesystem + accessModes: + - ReadWriteMany + resources: + requests: + storage: 5Gi +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: element-changedetection + namespace: changedetection +spec: + replicas: 1 + selector: + matchLabels: + app: element-changedetection + strategy: + rollingUpdate: + maxSurge: 25% + maxUnavailable: 25% + type: RollingUpdate + template: + metadata: + labels: + app: element-changedetection + spec: + containers: + - image: ghcr.io/dgtlmoon/changedetection.io + imagePullPolicy: Always + name: element-changedetection + env: + - name: PORT + value: "5000" + - name: BASE_URL + value: "element-changes.midnightthoughts.space" + - name: TZ + value: "Europe/Berlin" + livenessProbe: + failureThreshold: 3 + httpGet: + path: / + port: 5000 + readinessProbe: + httpGet: + path: / + port: 5000 + resources: + requests: + ephemeral-storage: 1024Mi + cpu: 100m + memory: 200Mi + limits: + ephemeral-storage: 2048Mi + cpu: 2000m + memory: 2000Mi + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + #add: + # - SYS_ADMIN + readOnlyRootFilesystem: false + runAsNonRoot: true + volumeMounts: + - mountPath: /datastore + name: element-changedetection-data + - mountPath: /tmp + name: tmp + volumes: + - name: element-changedetection-data + persistentVolumeClaim: + claimName: element-changedetection-data + - name: tmp + emptyDir: + sizeLimit: 2048Mi +--- +apiVersion: v1 +kind: Service +metadata: + labels: + app: element-changedetection + name: element-changedetection-srv + namespace: changedetection +spec: + ports: + - port: 5000 + protocol: TCP + targetPort: 5000 + selector: + app: element-changedetection + type: ClusterIP +--- +apiVersion: gateway.networking.k8s.io/v1 +kind: HTTPRoute +metadata: + name: element-changedetection + namespace: changedetection +spec: + parentRefs: + - name: envoy-gateway + namespace: envoy-gateway + hostnames: + - "element-changes.midnightthoughts.space" + rules: + - backendRefs: + - name: element-changedetection-srv + port: 5000 diff --git a/apps/base/element_changedetection/kustomization.yaml b/apps/base/element_changedetection/kustomization.yaml @@ -0,0 +1,5 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +namespace: changedetection +resources: + - element_deployment.yaml diff --git a/apps/base/envoy-gateway/release.yaml b/apps/base/envoy-gateway/release.yaml @@ -75,42 +75,42 @@ spec: protocol: TCP port: 25 allowedRoutes: - kinds: - - kind: TCPRoute - namespaces: - from: All + kinds: + - kind: TCPRoute + namespaces: + from: All - name: submissions protocol: TCP port: 465 allowedRoutes: - kinds: - - kind: TCPRoute - namespaces: - from: All + kinds: + - kind: TCPRoute + namespaces: + from: All - name: submission protocol: TCP port: 587 allowedRoutes: - kinds: - - kind: TCPRoute - namespaces: - from: All + kinds: + - kind: TCPRoute + namespaces: + from: All - name: imap protocol: TCP port: 143 allowedRoutes: - kinds: - - kind: TCPRoute - namespaces: - from: All + kinds: + - kind: TCPRoute + namespaces: + from: All - name: imaps protocol: TCP port: 993 allowedRoutes: - kinds: - - kind: TCPRoute - namespaces: - from: All + kinds: + - kind: TCPRoute + namespaces: + from: All --- apiVersion: gateway.networking.k8s.io/v1 kind: Gateway @@ -135,371 +135,383 @@ spec: hostname: "mas.matrix.midnightthoughts.space" port: 443 allowedRoutes: - namespaces: - from: "All" + namespaces: + from: "All" tls: - mode: Terminate - certificateRefs: - - kind: Secret - name: mas.matrix.midnightthoughts.space-tls + mode: Terminate + certificateRefs: + - kind: Secret + name: mas.matrix.midnightthoughts.space-tls - name: https-matrix-midnightthoughts protocol: HTTPS hostname: "matrix.midnightthoughts.space" port: 443 allowedRoutes: - namespaces: - from: "All" + namespaces: + from: "All" tls: - mode: Terminate - certificateRefs: - - kind: Secret - name: matrix.midnightthoughts.space-tls + mode: Terminate + certificateRefs: + - kind: Secret + name: matrix.midnightthoughts.space-tls - name: https-draupnir-midnightthoughts protocol: HTTPS hostname: "draupnir.midnightthoughts.space" port: 443 allowedRoutes: - namespaces: - from: "All" + namespaces: + from: "All" tls: - mode: Terminate - certificateRefs: - - kind: Secret - name: draupnir.midnightthoughts.space-tls + mode: Terminate + certificateRefs: + - kind: Secret + name: draupnir.midnightthoughts.space-tls - name: https-matrix-draupnir-midnightthoughts protocol: HTTPS hostname: "matrix.draupnir.midnightthoughts.space" port: 443 allowedRoutes: - namespaces: - from: "All" + namespaces: + from: "All" tls: - mode: Terminate - certificateRefs: - - kind: Secret - name: matrix.draupnir.midnightthoughts.space-tls + mode: Terminate + certificateRefs: + - kind: Secret + name: matrix.draupnir.midnightthoughts.space-tls - name: https-docuseal-midnightthoughts protocol: HTTPS hostname: "docuseal.midnightthoughts.space" port: 443 allowedRoutes: - namespaces: - from: "All" + namespaces: + from: "All" tls: - mode: Terminate - certificateRefs: - - kind: Secret - name: docuseal.midnightthoughts.space-tls + mode: Terminate + certificateRefs: + - kind: Secret + name: docuseal.midnightthoughts.space-tls - name: https-midnightthoughts-neoboard protocol: HTTPS hostname: "miro-export.neoboard.midnightthoughts.space" port: 443 allowedRoutes: - namespaces: - from: "All" + namespaces: + from: "All" tls: - mode: Terminate - certificateRefs: - - kind: Secret - name: miro-export.neoboard.midnightthoughts.space-tls + mode: Terminate + certificateRefs: + - kind: Secret + name: miro-export.neoboard.midnightthoughts.space-tls - name: https-midnightthoughts-certs protocol: HTTPS hostname: "certs.midnightthoughts.space" port: 443 allowedRoutes: - namespaces: - from: "All" + namespaces: + from: "All" tls: - mode: Terminate - certificateRefs: - - kind: Secret - name: certs.midnightthoughts.space-tls + mode: Terminate + certificateRefs: + - kind: Secret + name: certs.midnightthoughts.space-tls - name: https-midnightthoughts-capacitor protocol: HTTPS hostname: "ui.k8s.midnightthoughts.space" port: 443 allowedRoutes: - namespaces: - from: "All" + namespaces: + from: "All" tls: - mode: Terminate - certificateRefs: - - kind: Secret - name: ui.k8s.midnightthoughts.space-tls + mode: Terminate + certificateRefs: + - kind: Secret + name: ui.k8s.midnightthoughts.space-tls - name: https-midnightthoughts-auth protocol: HTTPS hostname: "auth.midnightthoughts.space" port: 443 allowedRoutes: - namespaces: - from: "All" + namespaces: + from: "All" tls: - mode: Terminate - certificateRefs: - - kind: Secret - name: auth.midnightthoughts.space-tls + mode: Terminate + certificateRefs: + - kind: Secret + name: auth.midnightthoughts.space-tls - name: https-midnightthoughts-ldap protocol: HTTPS hostname: "ldap.midnightthoughts.space" port: 443 allowedRoutes: - namespaces: - from: "All" + namespaces: + from: "All" tls: - mode: Terminate - certificateRefs: - - kind: Secret - name: ldap.midnightthoughts.space-tls + mode: Terminate + certificateRefs: + - kind: Secret + name: ldap.midnightthoughts.space-tls - name: https-midnightthoughts-status-webhook protocol: HTTPS hostname: "webhook.status.midnightthoughts.space" port: 443 allowedRoutes: - namespaces: - from: "All" + namespaces: + from: "All" tls: - mode: Terminate - certificateRefs: - - kind: Secret - name: webhook.status.midnightthoughts.space-tls + mode: Terminate + certificateRefs: + - kind: Secret + name: webhook.status.midnightthoughts.space-tls - name: https-midnightthoughts-budget protocol: HTTPS hostname: "budget.midnightthoughts.space" port: 443 allowedRoutes: - namespaces: - from: "All" + namespaces: + from: "All" tls: - mode: Terminate - certificateRefs: - - kind: Secret - name: budget.midnightthoughts.space-tls + mode: Terminate + certificateRefs: + - kind: Secret + name: budget.midnightthoughts.space-tls - name: https-midnightthoughts-bugzilla protocol: HTTPS hostname: "bugzilla.midnightthoughts.space" port: 443 allowedRoutes: - namespaces: - from: "All" + namespaces: + from: "All" tls: - mode: Terminate - certificateRefs: - - kind: Secret - name: bugzilla.midnightthoughts.space-tls + mode: Terminate + certificateRefs: + - kind: Secret + name: bugzilla.midnightthoughts.space-tls - name: https-midnightthoughts-root protocol: HTTPS hostname: "midnightthoughts.space" port: 443 allowedRoutes: - namespaces: - from: "All" + namespaces: + from: "All" tls: - mode: Terminate - certificateRefs: - - kind: Secret - name: midnightthoughts.space-tls + mode: Terminate + certificateRefs: + - kind: Secret + name: midnightthoughts.space-tls - name: https-midnightthoughts-status protocol: HTTPS hostname: "status.midnightthoughts.space" port: 443 allowedRoutes: - namespaces: - from: "All" + namespaces: + from: "All" tls: - mode: Terminate - certificateRefs: - - kind: Secret - name: status.midnightthoughts.space-tls + mode: Terminate + certificateRefs: + - kind: Secret + name: status.midnightthoughts.space-tls - name: https-midnightthoughts-webhook-kubernetes protocol: HTTPS hostname: "webhook.kubernetes.midnightthoughts.space" port: 443 allowedRoutes: - namespaces: - from: "All" + namespaces: + from: "All" tls: - mode: Terminate - certificateRefs: - - kind: Secret - name: webhook.kubernetes.midnightthoughts.space-tls + mode: Terminate + certificateRefs: + - kind: Secret + name: webhook.kubernetes.midnightthoughts.space-tls - name: https-midnightthoughts-rspamd protocol: HTTPS hostname: "rspamd.midnightthoughts.space" port: 443 allowedRoutes: - namespaces: - from: "All" + namespaces: + from: "All" tls: - mode: Terminate - certificateRefs: - - kind: Secret - name: rspamd.midnightthoughts.space-tls + mode: Terminate + certificateRefs: + - kind: Secret + name: rspamd.midnightthoughts.space-tls - name: https-midnightthoughts-grafana protocol: HTTPS hostname: "grafana.midnightthoughts.space" port: 443 allowedRoutes: - namespaces: - from: "All" + namespaces: + from: "All" tls: - mode: Terminate - certificateRefs: - - kind: Secret - name: grafana.midnightthoughts.space-tls + mode: Terminate + certificateRefs: + - kind: Secret + name: grafana.midnightthoughts.space-tls - name: https-midnightthoughts-osticket protocol: HTTPS hostname: "osticket.midnightthoughts.space" port: 443 allowedRoutes: - namespaces: - from: "All" + namespaces: + from: "All" tls: - mode: Terminate - certificateRefs: - - kind: Secret - name: osticket.midnightthoughts.space-tls + mode: Terminate + certificateRefs: + - kind: Secret + name: osticket.midnightthoughts.space-tls - name: https-midnightthoughts-vault protocol: HTTPS hostname: "vault.midnightthoughts.space" port: 443 allowedRoutes: - namespaces: - from: "All" + namespaces: + from: "All" tls: - mode: Terminate - certificateRefs: - - kind: Secret - name: vault.midnightthoughts.space-tls + mode: Terminate + certificateRefs: + - kind: Secret + name: vault.midnightthoughts.space-tls - name: https-midnightthoughts-rook protocol: HTTPS hostname: "rook.midnightthoughts.space" port: 443 allowedRoutes: - namespaces: - from: "All" + namespaces: + from: "All" tls: - mode: Terminate - certificateRefs: - - kind: Secret - name: rook.midnightthoughts.space-tls + mode: Terminate + certificateRefs: + - kind: Secret + name: rook.midnightthoughts.space-tls - name: https-midnightthoughts-jenkins protocol: HTTPS hostname: "jenkins.midnightthoughts.space" port: 443 allowedRoutes: - namespaces: - from: "All" + namespaces: + from: "All" tls: - mode: Terminate - certificateRefs: - - kind: Secret - name: jenkins.midnightthoughts.space-tls + mode: Terminate + certificateRefs: + - kind: Secret + name: jenkins.midnightthoughts.space-tls - name: https-midnightthoughts-gerrit protocol: HTTPS hostname: "gerrit.midnightthoughts.space" port: 443 allowedRoutes: - namespaces: - from: "All" + namespaces: + from: "All" tls: - mode: Terminate - certificateRefs: - - kind: Secret - name: gerrit.midnightthoughts.space-tls + mode: Terminate + certificateRefs: + - kind: Secret + name: gerrit.midnightthoughts.space-tls - name: https-midnightthoughts-uptime protocol: HTTPS hostname: "uptime.midnightthoughts.space" port: 443 allowedRoutes: - namespaces: - from: "All" + namespaces: + from: "All" tls: - mode: Terminate - certificateRefs: - - kind: Secret - name: uptime.midnightthoughts.space-tls + mode: Terminate + certificateRefs: + - kind: Secret + name: uptime.midnightthoughts.space-tls + - name: https-midnightthoughts-element-changes + protocol: HTTPS + hostname: "element-changes.midnightthoughts.space" + port: 443 + allowedRoutes: + namespaces: + from: "All" + tls: + mode: Terminate + certificateRefs: + - kind: Secret + name: element-changes.midnightthoughts.space - name: https-nordgedanken-root protocol: HTTPS hostname: "nordgedanken.dev" port: 443 allowedRoutes: - namespaces: - from: "All" + namespaces: + from: "All" tls: - mode: Terminate - certificateRefs: - - kind: Secret - name: nordgedanken.dev-tls + mode: Terminate + certificateRefs: + - kind: Secret + name: nordgedanken.dev-tls - name: https-nordgedanken protocol: HTTPS hostname: "*.nordgedanken.dev" port: 443 allowedRoutes: - namespaces: - from: "All" + namespaces: + from: "All" tls: - mode: Terminate - certificateRefs: - - kind: Secret - name: nordgedanken.dev-tls + mode: Terminate + certificateRefs: + - kind: Secret + name: nordgedanken.dev-tls - name: https-mtrnord-blog-root protocol: HTTPS hostname: "mtrnord.blog" port: 443 allowedRoutes: - namespaces: - from: "All" + namespaces: + from: "All" tls: - mode: Terminate - certificateRefs: - - kind: Secret - name: mtrnord.blog-tls + mode: Terminate + certificateRefs: + - kind: Secret + name: mtrnord.blog-tls - name: https-mtrnord-blog-hubzilla protocol: HTTPS hostname: "hub.mtrnord.blog" port: 443 allowedRoutes: - namespaces: - from: "All" + namespaces: + from: "All" tls: - mode: Terminate - certificateRefs: - - kind: Secret - name: hub.mtrnord.blog-tls + mode: Terminate + certificateRefs: + - kind: Secret + name: hub.mtrnord.blog-tls - name: https-mtrnord-blog-mastodon protocol: HTTPS hostname: "mastodon.mtrnord.blog" port: 443 allowedRoutes: - namespaces: - from: "All" + namespaces: + from: "All" tls: - mode: Terminate - certificateRefs: - - kind: Secret - name: mastodon.mtrnord.blog-tls + mode: Terminate + certificateRefs: + - kind: Secret + name: mastodon.mtrnord.blog-tls - name: http protocol: HTTP port: 80 allowedRoutes: - namespaces: - from: "All" + namespaces: + from: "All" - name: ldap protocol: TCP port: 389 allowedRoutes: - kinds: - - kind: TCPRoute - namespaces: - from: All + kinds: + - kind: TCPRoute + namespaces: + from: All - name: gerrit-ssh protocol: TCP port: 29418 allowedRoutes: - kinds: - - kind: TCPRoute - namespaces: - from: All + kinds: + - kind: TCPRoute + namespaces: + from: All --- apiVersion: gateway.envoyproxy.io/v1alpha1 kind: ClientTrafficPolicy