🚀 kromgo

This commit is contained in:
auricom
2024-01-22 13:30:04 +01:00
parent c02c334622
commit 693868f029
5 changed files with 179 additions and 0 deletions

View File

@@ -0,0 +1,92 @@
---
# yaml-language-server: $schema=https://kubernetes-schemas.pages.dev/helm.toolkit.fluxcd.io/helmrelease_v2beta2.json
apiVersion: helm.toolkit.fluxcd.io/v2beta2
kind: HelmRelease
metadata:
name: &app kromgo
spec:
interval: 30m
chart:
spec:
chart: app-template
version: 2.5.0
sourceRef:
kind: HelmRepository
name: bjw-s
namespace: flux-system
install:
remediation:
retries: 3
upgrade:
cleanupOnFail: true
remediation:
retries: 3
uninstall:
keepHistory: false
values:
controllers:
main:
replicas: 2
strategy: RollingUpdate
annotations:
reloader.stakater.com/auto: "true"
containers:
main:
image:
repository: ghcr.io/kashalls/kromgo
tag: 0.2.4@sha256:2c1076986904babdcfed38ffcf848e7609f3e108ee350a46ce8ed201407a8b81
env:
PROMETHEUS_URL: http://thanos-query-frontend.observability.svc.cluster.local:9090
PORT: &port 8080
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
capabilities: { drop: ["ALL"] }
resources:
requests:
cpu: 10m
limits:
memory: 64Mi
pod:
securityContext:
runAsUser: 568
runAsGroup: 568
runAsNonRoot: true
topologySpreadConstraints:
- maxSkew: 1
topologyKey: kubernetes.io/hostname
whenUnsatisfiable: DoNotSchedule
labelSelector:
matchLabels:
app.kubernetes.io/name: *app
service:
main:
ports:
http:
port: *port
ingress:
main:
enabled: true
className: external
annotations:
external-dns.alpha.kubernetes.io/enabled: "true"
external-dns.alpha.kubernetes.io/target: services.${SECRET_DOMAIN}.
hajimari.io/icon: mdi:monitor-eye
hosts:
- host: &host "{{ .Release.Name }}.${SECRET_CLUSTER_DOMAIN}"
paths:
- path: /
service:
name: main
port: http
tls:
- hosts:
- *host
persistence:
config-file:
type: configMap
name: kromgo-configmap
globalMounts:
- path: /kromgo/config.yaml
subPath: config.yaml
readOnly: true

View File

@@ -0,0 +1,13 @@
---
# yaml-language-server: $schema=https://json.schemastore.org/kustomization
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ./helmrelease.yaml
- ../../../../templates/gatus/external
configMapGenerator:
- name: kromgo-configmap
files:
- config.yaml=./resources/config.yaml
generatorOptions:
disableNameSuffixHash: true

View File

@@ -0,0 +1,48 @@
---
# yaml-language-server: $schema=https://raw.githubusercontent.com/kashalls/kromgo/main/config.schema.json
metrics:
- name: cluster_node_count
query: count(count by (node) (kube_node_status_condition{kubernetes_node=~"k8s-[0-9]+", condition="Ready"}))
- name: cluster_pod_count
query: sum(kube_pod_status_phase{kubernetes_node=~"k8s-[0-9]+", phase="Running"})
- name: cluster_cpu_usage
query: round(avg(instance:node_cpu_utilisation:rate5m{kubernetes_node=~"k8s-[0-9]+"}) * 100, 0.1)
suffix: "%"
colors:
- { color: "green", min: 0, max: 35 }
- { color: "orange", min: 36, max: 75 }
- { color: "red", min: 76, max: 9999 }
- name: cluster_memory_usage
query: round(sum(node_memory_MemTotal_bytes{kubernetes_node=~"k8s-[0-9]+"} - node_memory_MemAvailable_bytes{kubernetes_node=~"k8s-[0-9]+"}) / sum(node_memory_MemTotal_bytes{kubernetes_node=~"k8s-[0-9]+"}) * 100, 0.1)
suffix: "%"
colors:
- { color: green, min: 0, max: 35 }
- { color: orange, min: 36, max: 75 }
- { color: red, min: 76, max: 9999 }
- name: cluster_power_usage
query: round(upsHighPrecOutputCurrent * upsHighPrecOutputVoltage * 0.01, 0.1)
suffix: "w"
colors:
- { color: "green", min: 0, max: 400 }
- { color: "orange", min: 401, max: 750 }
- { color: "red", min: 751, max: 9999 }
- name: cluster_age_days
query: round((time() - max(kube_node_created{kubernetes_node=~"k8s-[0-9]+"}) ) / 86400)
suffix: "d"
colors:
- { color: "green", min: 0, max: 180 }
- { color: "orange", min: 181, max: 360 }
- { color: "red", min: 361, max: 9999 }
- name: cluster_uptime_days
query: round(avg(node_time_seconds{kubernetes_node=~"k8s-[0-9]+"} - node_boot_time_seconds{kubernetes_node=~"k8s-[0-9]+"}) / 86400)
suffix: "d"
colors:
- { color: "green", min: 0, max: 180 }
- { color: "orange", min: 181, max: 360 }
- { color: "red", min: 361, max: 9999 }

View File

@@ -0,0 +1,25 @@
---
# yaml-language-server: $schema=https://raw.githubusercontent.com/fluxcd-community/flux2-schemas/main/kustomization-kustomize-v1.json
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: &app kromgo
namespace: flux-system
spec:
targetNamespace: default
commonMetadata:
labels:
app.kubernetes.io/name: *app
path: ./kubernetes/apps/default/kromgo/app
prune: true
sourceRef:
kind: GitRepository
name: home-ops-kubernetes
wait: false
interval: 30m
retryInterval: 1m
timeout: 5m
postBuild:
substitute:
APP: *app
GATUS_STATUS: "404"

View File

@@ -27,6 +27,7 @@ resources:
- ./komf/ks.yaml
- ./komga/ks.yaml
- ./kresus/ks.yaml
- ./kromgo/ks.yaml
- ./libmedium/ks.yaml
- ./lidarr/ks.yaml
- ./linkding/ks.yaml