Back to Hub

cargo.ayedo.cloud/ayedo/k8s/victoria-metrics-stack

Registry block

polycrate block pull cargo.ayedo.cloud/ayedo/k8s/victoria-metrics-stack:0.23.1

victoria-metrics-stack

Installiert den victoria-metrics-stack.

  • Grafana
  • Benutzerdefinierte Dashboards (Optional: artifact Verzeichnis block.config.grafana.custom_dashboards: true)
  • Benutzerdefinierte Dashboards (Im Block definierte Dashboards, files/ Verzeichnis)
  • promtail
  • victoria metrics
  • Service Scrape Objekte (velero, keydb, nginx)

block.config.mode

Modus Verhalten
single Vollständiger Stack mit VMSingle (Standard).
cluster Vollständiger Stack mit VMCluster.
agent VMAgent / Operator ohne lokale Speicher-Workloads; typisch mit vm.additionalremotewrite.urls.
crds Nur CRDs des Helm-Charts victoria-metrics-k8s-stack anwenden (server-side, force-conflicts), kein Stack-Release. Danach beendet sich das Playbook.
grafana Nur eigenständiges Grafana per Grafana-Helm-Chart (block.config.chart.grafana.version Pflicht, grafana.admin_password Pflicht). Kein VictoriaMetrics-Stack.

Für crds und grafana müssen install bzw. uninstall mit demselben mode in workspace.poly ausgeführt werden wie bei der Installation.

VictoriaMetrics-CRDs

  • Upgrade / CRD-Sync: Entweder mode: crds und polycrate run … install nutzen, oder manuell wie bisher: helm show crds vm/victoria-metrics-k8s-stack --version [CHART_VERSION] | kubectl apply -f - --server-side --force-conflicts Siehe Upstream CHANGELOG.
  • Standard-uninstall: Entfernt nicht die VictoriaMetrics-CRDs (verhindert, dass alle VM-Custom Resources clusterweit verschwinden).
  • uninstall-crds: Separate Action mit eigenem Playbook. Führt helm show crds … | kubectl delete -f - aus. Nur verwenden, wenn bewusst alle abhängigen CRs entfernt werden sollen.

Beispiele zum Hinzufügen von VMServiceScrape CRDs sind im Block unter templates/vmservicescrape-*. Weitere Infos siehe: GitHub Issues - VMServiceScrape

Changelog

Moved to CHANGELOG.poly

actions

Action Beschreibung
install Stack, CRDs-only oder Grafana-only je nach block.config.mode.
uninstall Helm-Releases des Blocks entfernen; bei mode: crds nur CRD-Delete-Pfad; bei mode: grafana nur Grafana-Release. Kein CRD-Wipe im Standard-Modus.
uninstall-crds Explizites Entfernen der VM-Stack-CRDs (gefährlich).

install

Wenn config.grafana.custom_dashboards auf true gesetzt ist, werden alle Grafana Dashboards nach dem Namensschema [0-9a-zA-Z-].json im Verzeichnis artifacts/blocks/BLOCK_NAME/grafana_dashboards/ installiert.

Konfigurationsbeispiele (vmsingle, vmsingle mit RemoteWrite ohne Grafana, Cluster-Mode, Agent-only, CRDs-only, Standalone-Grafana, Grafana mit OIDC/Keycloak, Grafana mit externem PostgreSQL/CNPG) siehe examples.poly:

polycrate block examples victoria-metrics-stack

Wenn mehrere Cluster denselben remote_write-Endpunkt nutzen, muss das memory_limit des vmsingle-Pods angepasst werden. Richtwert: 1GB + (300Mi * Anzahl Cluster-Nodes).

VMAuth-Companion (victoria-metrics-auth-Block): Für Remote-Read/-Write über mehrere Cluster hinweg wird der vmsingle/vminsert-Endpoint typischerweise über einen victoria-metrics-auth-Block (VMAuth) mit url_prefix: ".../?extra_label=cluster=<name>" pro User exponiert, um Cluster-seitig zu scopen. Siehe README des victoria-metrics-auth-Blocks.

Hinweis (Grafana OIDC/Keycloak): email_attribute_path: "email" ist für Keycloak zwingend erforderlich (ab Grafana 12). Ohne diesen Wert versucht Grafana einen separaten /userinfo/emails-Endpoint aufzurufen, den Keycloak nicht kennt.

Provisionierte User: login_attribute_path: "email" verknüpft OAuth-Logins mit per Polycrate-API angelegten Grafana-Usern (Login = E-Mail). Block-Default für allow_sign_up ist false. Für den ersten OAuth-Login API-provisionierter User muss im Workspace oauth_allow_insecure_email_lookup: true gesetzt werden (Grafana matcht dann per E-Mail statt nur per bestehendem user_auth-Eintrag).

SSO-Settings-DB: Grafana 10+ speichert OAuth-Konfigurationen in einer internen Datenbank, die Vorrang vor grafana.ini hat. Werden OAuth-Einstellungen manuell im Grafana-UI geändert, überschreiben diese die grafana.ini. Um auf die grafana.ini zurückzusetzen: curl -X DELETE -u admin:<password> https://<grafana-host>/api/v1/sso-settings/generic_oauth

Grafana mit externem PostgreSQL-Backend (CloudNativePG): Der Block unterstützt ein externes PostgreSQL-Backend für Grafana via CloudNativePG-Secret. Das CNPG-Secret wird als Umgebungsvariablen in den Grafana-Pod gemountet; grafana.ini referenziert diese direkt. Voraussetzung: ein CNPG-Cluster im gleichen Namespace wie Grafana (Standard: victoria-metrics-stack), dessen App-Secret die Standardkeys von CloudNativePG enthält (host, port, dbname, username, password).

Grafana SMTP: Über block.config.grafana.smtp wird [smtp] in grafana.ini gesetzt. Plain-Password in workspace.poly — enthält es # oder ;, wrapped der Block als """…""" (Grafana-INI-Kommentarzeichen). Keine Triple-Quotes im Workspace setzen. Siehe Grafana SMTP Docs und polycrate block examples victoria-metrics-stack (grafana-smtp).

mode: grafana (Standalone) benötigt block.config.chart.grafana.version (siehe block.poly) und grafana.admin_password.

uninstall

Entfernt die Helm-Releases dieses Blocks (Stack oder nur Grafana), ohne im Standard-Modus die VictoriaMetrics-CRDs zu löschen.

polycrate run monitoring uninstall

uninstall-crds

Expliziter CRD-Abgleich mit dem Chart (löscht CRD-Definitionen und damit zugehörige CRs). Nur nach bewusster Prüfung ausführen.

polycrate run monitoring uninstall-crds

Upgrade Path

helm repo add vm https://victoriametrics.github.io/helm-charts/
  • 0.22.1 -> 0.24.0 - CRD Upgrade
  • helm show crds vm/victoria-metrics-k8s-stack --version 0.24.0 | kubectl diff -f -
  • helm show crds vm/victoria-metrics-k8s-stack --version 0.24.0 | kubectl apply -f - --server-side

End: 0.47.1