From a666b3977a9dd85e79ffb22c44651bc290c5b889 Mon Sep 17 00:00:00 2001 From: Bora Oztekin Date: Mon, 27 Jul 2026 18:21:00 +0000 Subject: [PATCH] feat(self-managed): wire observability infrastructure stack Signed-off-by: Bora Oztekin --- deploy/stacks/observability/README.md | 4 +-- .../self-managed/environments/base.yaml | 26 ++++++++++++++++- ...0-observability-infrastructure.yaml.gotmpl | 29 +++++++++++++++++++ 3 files changed, 56 insertions(+), 3 deletions(-) create mode 100644 deploy/stacks/self-managed/helmfile.d/00-observability-infrastructure.yaml.gotmpl diff --git a/deploy/stacks/observability/README.md b/deploy/stacks/observability/README.md index d354a7776..d4d84a7ad 100644 --- a/deploy/stacks/observability/README.md +++ b/deploy/stacks/observability/README.md @@ -1,8 +1,8 @@ # nvcf-observability-stack Reusable Helmfile stack scaffold for self-hosted NVCF observability. It is -intended to be consumed by self-managed control-plane deployments and optional -standalone compute-plane deployments once the distribution wiring lands. +consumed by self-managed control-plane deployments and optional standalone +compute-plane deployments. The stack can own: diff --git a/deploy/stacks/self-managed/environments/base.yaml b/deploy/stacks/self-managed/environments/base.yaml index 7a8fb3666..adcc0958b 100644 --- a/deploy/stacks/self-managed/environments/base.yaml +++ b/deploy/stacks/self-managed/environments/base.yaml @@ -133,6 +133,30 @@ global: # global.observability.metrics.enabled enabled: false +# Shared observability infrastructure. Self-managed control-plane installs keep +# this on because the function autoscaler depends on a populated TSDB. +observability: + mode: install + +prometheusOperatorCrds: + # Disable this when the cluster already owns Prometheus Operator CRDs, such as + # through an existing kube-prometheus-stack install, to avoid CRD conflicts. + enabled: true + +opentelemetryOperator: + enabled: true + +controlPlaneCollector: + enabled: true + +victoriaMetrics: + enabled: true + +defaultMonitors: + enabled: true + controlPlane: + enabled: true + accounts: limits: maxFunctions: 10 @@ -277,7 +301,7 @@ addons: enabled: false stateMetrics: - enabled: false + enabled: true # Disable ServiceMonitor for environments without Prometheus Operator serviceMonitor: enabled: false diff --git a/deploy/stacks/self-managed/helmfile.d/00-observability-infrastructure.yaml.gotmpl b/deploy/stacks/self-managed/helmfile.d/00-observability-infrastructure.yaml.gotmpl new file mode 100644 index 000000000..1fcd11c69 --- /dev/null +++ b/deploy/stacks/self-managed/helmfile.d/00-observability-infrastructure.yaml.gotmpl @@ -0,0 +1,29 @@ +environments: + default: + values: + - ../environments/base.yaml + - ../environments/{{ requiredEnv "HELMFILE_ENV" }}.yaml + +--- + +{{- $observability := dig "observability" (dict) .Values }} +{{- $mode := dig "mode" "disabled" $observability }} +{{- if not (has $mode (list "install" "existing" "disabled")) }} +{{- fail (printf "observability.mode must be install, existing, or disabled, got %q" $mode) }} +{{- end }} +{{- if ne $mode "disabled" }} +helmfiles: + - path: ../../observability/helmfile.d/01-observability.yaml.gotmpl + selectorsInherited: true + values: + - global: + {{- toYaml (dig "global" (dict) .Values) | nindent 10 }} + - observability: + {{- toYaml $observability | nindent 10 }} + {{- range $key := list "prometheusOperatorCrds" "opentelemetryOperator" "controlPlaneCollector" "victoriaMetrics" "defaultMonitors" }} + {{- with (index $.Values $key) }} + - {{ $key }}: + {{- toYaml . | nindent 10 }} + {{- end }} + {{- end }} +{{- end }}