Add Gatus for monitoring and subfolder kustomization bases

This commit is contained in:
JLP 2025-04-25 16:56:33 -04:00
parent 9a3ffed81b
commit 5490abf355
No known key found for this signature in database
GPG key ID: 414E00D1FF7519DC
65 changed files with 304 additions and 27 deletions

View file

@ -12,7 +12,7 @@ transformers:
namePrefix: ollama-
resources:
- ../../../kustomize/deployment/
- ../../../kustomize/bases/deployment/
replacements:
- source:

View file

@ -12,7 +12,7 @@ transformers:
namePrefix: open-webui-
resources:
- ../../../kustomize/helmchart/
- ../../../kustomize/bases/helmchart/
patches:
- path: patches/chart.yaml

View file

@ -12,7 +12,7 @@ transformers:
namePrefix: tabby-
resources:
- ../../../kustomize/deployment/
- ../../../kustomize/bases/deployment/
replacements:
- source:

View file

@ -12,7 +12,7 @@ transformers:
namePrefix: atuin-
resources:
- ../../../kustomize/deployment/
- ../../../kustomize/bases/deployment/
replacements:
- source:

View file

@ -12,7 +12,7 @@ transformers:
namePrefix: dolibarr-
resources:
- ../../../kustomize/public-oidc/
- ../../../kustomize/bases/public-oidc/
replacements:
- source:

View file

@ -12,7 +12,7 @@ transformers:
namePrefix: forgejo-
resources:
- ../../../kustomize/deployment/
- ../../../kustomize/bases/deployment/
- extra/ssh-service.yaml
- extra/ssh-tcproute.yaml

View file

@ -12,7 +12,7 @@ transformers:
namePrefix: linkwarden-
resources:
- ../../../kustomize/public-oidc/
- ../../../kustomize/bases/public-oidc/
replacements:
- source:

View file

@ -12,7 +12,7 @@ transformers:
namePrefix: mealie-
resources:
- ../../../kustomize/public-oidc/
- ../../../kustomize/bases/public-oidc/
replacements:
- source:

View file

@ -12,7 +12,7 @@ transformers:
namePrefix: paperless-
resources:
- ../../../kustomize/public-oidc/
- ../../../kustomize/bases/public-oidc/
- extra/deploy-sync.yaml
- extra/pvc-consume.yaml
- extra/pvc-sftp.yaml

View file

@ -12,7 +12,7 @@ transformers:
namePrefix: syncthing-
resources:
- ../../../kustomize/statefulset/
- ../../../kustomize/bases/statefulset/
labels:
- includeSelectors: true

View file

@ -12,7 +12,7 @@ transformers:
namePrefix: vaultwarden-
resources:
- ../../../kustomize/deployment/
- ../../../kustomize/bases/deployment/
replacements:
- source:

View file

@ -12,7 +12,7 @@ transformers:
namePrefix: authentik-
resources:
- ../../../kustomize/helmchart
- ../../../kustomize/bases/helmchart
patches:
- path: patches/chart.yaml

View file

@ -12,7 +12,7 @@ transformers:
namePrefix: cert-manager-
resources:
- ../../../kustomize/helmchart-noaddons
- ../../../kustomize/bases/helmchart-noaddons
- extras/cloudflare-token.yaml
patches:

View file

@ -12,7 +12,7 @@ transformers:
namePrefix: gotenburg-
resources:
- ../../../kustomize/deployservice/
- ../../../kustomize/bases/deployservice/
replacements:
- source:

View file

@ -12,7 +12,7 @@ transformers:
namePrefix: minio-
resources:
- ../../../kustomize/deployment/
- ../../../kustomize/bases/deployment/
- extras/server-svc.yaml
- extras/server-route.yaml

View file

@ -12,7 +12,7 @@ transformers:
namePrefix: pgdump-
resources:
- ../../../kustomize/backups/
- ../../../kustomize/bases/backups/
labels:
- includeSelectors: true

View file

@ -12,7 +12,7 @@ transformers:
namePrefix: postgres-
resources:
- ../../../kustomize/statefulset/
- ../../../kustomize/bases/statefulset/
- extras/tcproute.yaml
labels:

View file

@ -12,7 +12,7 @@ transformers:
namePrefix: redis-
resources:
- ../../../kustomize/statefulset/
- ../../../kustomize/bases/statefulset/
labels:
- includeSelectors: true

View file

@ -12,7 +12,7 @@ transformers:
namePrefix: tika-
resources:
- ../../../kustomize/deployservice/
- ../../../kustomize/bases/deployservice/
replacements:
- source:

View file

@ -12,7 +12,7 @@ transformers:
namePrefix: infisical-
resources:
- ../../../kustomize/helmchart-noaddons
- ../../../kustomize/bases/helmchart-noaddons
patches:
- path: patches/chart.yaml

View file

@ -12,7 +12,7 @@ transformers:
namePrefix: longhorn-
resources:
- ../../../kustomize/helmchart
- ../../../kustomize/bases/helmchart
- extras/longhorn-public-storageclass.yaml
- extras/longhorn-private-storageclass.yaml
- extras/longhorn-secret.yaml

View file

@ -12,7 +12,7 @@ transformers:
namePrefix: diun-
resources:
- ../../../kustomize/noservice/
- ../../../kustomize/bases/noservice/
- extra/serviceaccount.yaml
- extra/clusterrole.yaml
- extra/clusterrolebinding.yaml

View file

@ -0,0 +1,24 @@
metrics: true
ui:
title: "JLP Homelab Health | Gatus"
skip-invalid-config-update: true
endpoints:
- name: website
url: https://twin.sh/health
interval: 5m
conditions:
- "[STATUS] == 200"
- "[BODY].status == UP"
- name: github
url: https://api.github.com/healthz
interval: 5m
conditions:
- "[STATUS] == 200"
- name: self
url: http://localhost:8080/health
interval: 5m
conditions:
- "[STATUS] == 200"

View file

@ -0,0 +1,8 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: gatus-k8s-sidecar
rules:
- apiGroups: [""]
resources: ["configmaps", "secrets"]
verbs: ["get", "watch", "list"]

View file

@ -0,0 +1,12 @@
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: gatus-k8s-sidecar
roleRef:
kind: ClusterRole
name: gatus-k8s-sidecar
apiGroup: rbac.authorization.k8s.io
subjects:
- kind: ServiceAccount
name: gatus-k8s-sidecar
namespace: monitoring

View file

@ -0,0 +1,4 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: gatus-k8s-sidecar

View file

@ -0,0 +1,149 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
transformers:
- |-
apiVersion: builtin
kind: NamespaceTransformer
metadata:
name: notImportantHere
namespace: monitoring
unsetOnly: true
namePrefix: gatus-
resources:
- ../../../kustomize/bases/deployment/
- extras/sidecar-crb.yaml
- extras/sidecar-serviceAccount.yaml
- extras/sidecar-clusterRole.yaml
patches:
- path: patches/deployment.yaml
target:
kind: Deployment
name: app
- path: patches/pvc.yaml
target:
kind: PersistentVolumeClaim
name: pvc
labels:
- includeSelectors: true
pairs:
app.kubernetes.io/appName: gatus
- pairs:
app.kubernetes.io/appNamespace: monitoring
- pairs:
app.kubernetes.io/routePrefix: status
configMapGenerator:
- name: gatus-config
files:
- base-config.yaml
- name: gatus-settings
literals:
- GATUS_CONFIG_PATH=/config
- name: k8s-sidecar-settings
literals:
- LABEL="homelab.kubernetes.io/k8s-sidecar"
- LABEL_VALUE="gatus"
- FOLDER="/config"
- METHOD="SLEEP"
- SLEEP_TIME=60
replacements:
# Service
- source:
kind: Deployment
name: app
fieldPath: metadata.labels.[app.kubernetes.io/appName]
targets:
- select:
kind: Service
fieldPaths:
- spec.ports.0.name
- spec.ports.0.targetPort
- source:
kind: Deployment
name: app
fieldPath: spec.template.spec.containers.0.ports.0.containerPort
targets:
- select:
kind: Service
fieldPaths:
- spec.ports.0.port
# Secrets
- source:
kind: Deployment
name: app
fieldPath: metadata.labels.[app.kubernetes.io/appNamespace]
targets:
- select:
kind: InfisicalSecret
fieldPaths:
- spec.managedSecretReference.secretNamespace
- source:
kind: Deployment
name: app
fieldPath: metadata.labels.[app.kubernetes.io/appName]
targets:
- select:
kind: InfisicalSecret
options:
delimiter: "-"
index: 0
fieldPaths:
- spec.managedSecretReference.secretName
- select:
kind: InfisicalSecret
options:
delimiter: "/"
index: 2
fieldPaths:
- spec.authentication.universalAuth.secretsScope.secretsPath
# HTTP Route
- source:
kind: Service
name: svc
targets:
- select:
kind: HTTPRoute
options:
create: true
fieldPaths:
- spec.rules.0.backendRefs.0.name
- source:
kind: Deployment
name: app
fieldPath: metadata.labels.[app.kubernetes.io/appName]
targets:
- select:
kind: HTTPRoute
options:
create: true
delimiter: "."
index: 0
fieldPaths:
- spec.hostnames.0
- source:
kind: Deployment
name: app
fieldPath: spec.template.spec.containers.0.ports.0.containerPort
targets:
- select:
kind: HTTPRoute
fieldPaths:
- spec.rules.0.backendRefs.0.port
- source:
kind: Deployment
name: app
fieldPath: metadata.labels.[app.kubernetes.io/routePrefix]
targets:
- select:
kind: HTTPRoute
options:
create: true
delimiter: "."
index: 0
fieldPaths:
- spec.hostnames.0

View file

@ -0,0 +1,75 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: app
spec:
template:
spec:
serviceAccountName: gatus-k8s-sidecar
tolerations:
- key: "public"
operator: "Equal"
value: "true"
effect: "NoSchedule"
affinity:
nodeAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
preference:
matchExpressions:
- key: public
operator: In
values:
- "true"
containers:
- name: gatus
image: twinproduction/gatus:v5.17.0
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
name: gatus
protocol: TCP
resources:
limits:
cpu: 250m
memory: 100M
requests:
cpu: 50m
memory: 30M
readinessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 5
periodSeconds: 10
successThreshold: 1
failureThreshold: 3
livenessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 10
periodSeconds: 10
successThreshold: 1
failureThreshold: 5
envFrom:
- configMapRef:
name: gatus-settings
volumeMounts:
- mountPath: /config/config.yaml
name: gatus-config
subPath: base-config.yaml
- name: config-collector
image: kiwigrid/k8s-sidecar:1.30.3
volumeMounts:
- name: collected
mountPath: /config/
envFrom:
- configMapRef:
name: k8s-sidecar-settings
volumes:
- configMap:
name: gatus-config
name: gatus-config
- name: collected
emptyDir: {}

View file

@ -0,0 +1,5 @@
$patch: delete
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc

View file

@ -12,7 +12,7 @@ transformers:
namePrefix: healthchecks-
resources:
- ../../../kustomize/public-oidc/
- ../../../kustomize/bases/public-oidc/
replacements:
- source:

View file

@ -12,7 +12,7 @@ transformers:
namePrefix: ntfy-
resources:
- ../../../kustomize/public-oidc/
- ../../../kustomize/bases/public-oidc/
replacements:
- source:

View file

@ -12,7 +12,7 @@ transformers:
namePrefix: umami-
resources:
- ../../../kustomize/public-oidc/
- ../../../kustomize/bases/public-oidc/
replacements:
- source:

View file

@ -12,7 +12,7 @@ transformers:
namePrefix: uptime-kuma-
resources:
- ../../../kustomize/deployment/
- ../../../kustomize/bases/deployment/
# - extra/middleware-auth.yaml
replacements:

View file

@ -12,7 +12,7 @@ transformers:
namePrefix: traefik-lb
resources:
- ../../../kustomize/helmchart-noaddons/
- ../../../kustomize/bases/helmchart-noaddons/
patches:
- path: patches/chart.yaml