Files
homelab/k8s-ng/core/prom-stack/storage.yaml
T
Aleksandr Bogomiakov 52bfa88a33
Update Kubernetes Services Wiki / Generate and Update K8s Wiki (push) Successful in 31s
Added prom-stack
2026-10-07 18:35:17 +01:00

145 lines
3.9 KiB
YAML

# Prepare the node-local directories before the local PersistentVolumes are
# made available. The hook is idempotent and runs before every Argo CD sync.
apiVersion: batch/v1
kind: Job
metadata:
name: monitoring-storage-prepare
namespace: prometheus
annotations:
argocd.argoproj.io/hook: PreSync
argocd.argoproj.io/hook-delete-policy: BeforeHookCreation,HookSucceeded
argocd.argoproj.io/sync-wave: "-2"
spec:
backoffLimit: 3
template:
spec:
restartPolicy: OnFailure
nodeSelector:
kubernetes.io/hostname: music
containers:
- name: prepare
image: docker.io/busybox:1.37.0
command:
- sh
- -ec
- |
mkdir -p /storage/prometheus /storage/alertmanager /storage/loki
chown 1000:2000 /storage/prometheus /storage/alertmanager
chown 10001:10001 /storage/loki
chmod 0770 /storage/prometheus /storage/alertmanager /storage/loki
securityContext:
runAsNonRoot: false
runAsUser: 0
allowPrivilegeEscalation: false
seccompProfile:
type: RuntimeDefault
volumeMounts:
- name: storage
mountPath: /storage
volumes:
- name: storage
hostPath:
path: /data/k8s/monitoring
type: DirectoryOrCreate
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: monitoring-local
annotations:
argocd.argoproj.io/sync-wave: "-1"
argocd.argoproj.io/sync-options: Prune=false
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
reclaimPolicy: Retain
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: monitoring-prometheus-music
labels:
monitoring.hexor.cy/volume: prometheus
annotations:
argocd.argoproj.io/sync-wave: "-1"
argocd.argoproj.io/sync-options: Prune=false
spec:
capacity:
storage: 500Gi
volumeMode: Filesystem
accessModes: [ReadWriteOnce]
persistentVolumeReclaimPolicy: Retain
storageClassName: monitoring-local
local:
path: /data/k8s/monitoring/prometheus
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values: [music]
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: monitoring-alertmanager-music
labels:
monitoring.hexor.cy/volume: alertmanager
annotations:
argocd.argoproj.io/sync-wave: "-1"
argocd.argoproj.io/sync-options: Prune=false
spec:
capacity:
storage: 5Gi
volumeMode: Filesystem
accessModes: [ReadWriteOnce]
persistentVolumeReclaimPolicy: Retain
storageClassName: monitoring-local
local:
path: /data/k8s/monitoring/alertmanager
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values: [music]
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: monitoring-loki-music
labels:
monitoring.hexor.cy/volume: loki
annotations:
argocd.argoproj.io/sync-wave: "-1"
argocd.argoproj.io/sync-options: Prune=false
spec:
capacity:
storage: 200Gi
volumeMode: Filesystem
accessModes: [ReadWriteOnce]
persistentVolumeReclaimPolicy: Retain
storageClassName: monitoring-local
local:
path: /data/k8s/monitoring/loki
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values: [music]
---
# Keep monitoring schedulable under application-node pressure without competing
# with Kubernetes' system-cluster-critical classes.
apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
name: monitoring-critical
annotations:
argocd.argoproj.io/sync-wave: "-1"
value: 1000000
globalDefault: false
description: Monitoring control plane and storage workloads