Add VictoriaMetrics observability stack + sync catalog for monitoring test
- VM stack 10 charts: victoria-metrics-cluster/auth, victoria-logs-cluster, victoria-metrics-agent/alert, opentelemetry-collector, kube-state-metrics, prometheus-node-exporter, alertmanager, perses (JWT/OIDC, Infisical-ready) - ArgoCD ApplicationSet (syncWave) + per-chart dip-values overlays - doc/victoria-metrics-architecture.md, define-chart-resources updates - includes pending working-tree changes (mlflow, kubeflow, apisix, CLAUDE.md) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
{{/* ========================================================================
|
||||
Configuration helpers
|
||||
========================================================================= */}}
|
||||
|
||||
{{/*
|
||||
Return env vars generated from authentication providers for client_id/client_secret.
|
||||
We include entries even when the value is empty so they can be sourced from an external Secret.
|
||||
NOTE: When using external secrets (secret.create=false or envVarsExternalSecretName),
|
||||
this should return empty to avoid duplicate secret creation.
|
||||
*/}}
|
||||
{{- define "perses.authProviderEnvVars" -}}
|
||||
{{- $result := list }}
|
||||
{{- $usingExternalSecret := or (and .Values.secret (not (default true .Values.secret.create))) .Values.envVarsExternalSecretName }}
|
||||
{{- if not $usingExternalSecret }}
|
||||
{{- $auth := .Values.config.security.authentication }}
|
||||
{{- if and .Values.config.security.enable_auth $auth }}
|
||||
{{- range $i, $provider := $auth.providers.oidc }}
|
||||
{{- $result = append $result (dict "name" (printf "PERSES_SECURITY_AUTHENTICATION_PROVIDERS_OIDC_%d_CLIENT_ID" $i) "value" ($provider.client_id | default "")) }}
|
||||
{{- $result = append $result (dict "name" (printf "PERSES_SECURITY_AUTHENTICATION_PROVIDERS_OIDC_%d_CLIENT_SECRET" $i) "value" ($provider.client_secret | default "")) }}
|
||||
{{- end }}
|
||||
{{- range $i, $provider := $auth.providers.oauth }}
|
||||
{{- $result = append $result (dict "name" (printf "PERSES_SECURITY_AUTHENTICATION_PROVIDERS_OAUTH_%d_CLIENT_ID" $i) "value" ($provider.client_id | default "")) }}
|
||||
{{- $result = append $result (dict "name" (printf "PERSES_SECURITY_AUTHENTICATION_PROVIDERS_OAUTH_%d_CLIENT_SECRET" $i) "value" ($provider.client_secret | default "")) }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- toYaml $result }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Merge user-provided envVars with auto-generated auth provider env vars.
|
||||
Auto-generated env vars are only added if not already provided by the user.
|
||||
*/}}
|
||||
{{- define "perses.mergedEnvVars" -}}
|
||||
{{- $autoRaw := include "perses.authProviderEnvVars" . }}
|
||||
{{- $auto := $autoRaw | fromYamlArray | default (list) }}
|
||||
{{- $userRaw := .Values.envVars | default (list) }}
|
||||
{{- $user := (kindIs "slice" $userRaw | ternary $userRaw (list $userRaw)) }}
|
||||
{{- /* Build a map of user-provided env var names for deduplication */ -}}
|
||||
{{- $userEnvNames := dict }}
|
||||
{{- range $user }}
|
||||
{{- if and (kindIs "map" .) (hasKey . "name") }}
|
||||
{{- $_ := set $userEnvNames .name true }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- /* Only add auto-generated env vars if not already provided by user */ -}}
|
||||
{{- $filteredAuto := list }}
|
||||
{{- range $auto }}
|
||||
{{- if and (kindIs "map" .) (hasKey . "name") }}
|
||||
{{- if not (hasKey $userEnvNames .name) }}
|
||||
{{- $filteredAuto = append $filteredAuto . }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- $merged := concat $user $filteredAuto }}
|
||||
{{- if $merged }}
|
||||
{{- toYaml $merged }}
|
||||
{{- else }}
|
||||
[]
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Resolve env vars Secret name (generated or custom override).
|
||||
*/}}
|
||||
{{- define "perses.envVarsSecretName" -}}
|
||||
{{- $name := "" }}
|
||||
{{- if and .Values.secret .Values.secret.name }}
|
||||
{{- $name = .Values.secret.name }}
|
||||
{{- else if .Values.envVarsExternalSecretName }}
|
||||
{{- $name = .Values.envVarsExternalSecretName }}
|
||||
{{- else }}
|
||||
{{- $name = (include "perses.fullname" .) }}
|
||||
{{- end }}
|
||||
{{- $name }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Should we create the env vars Secret?
|
||||
*/}}
|
||||
{{- define "perses.shouldCreateEnvVarsSecret" -}}
|
||||
{{- $create := true }}
|
||||
{{- if hasKey .Values "secret" }}
|
||||
{{- if hasKey .Values.secret "create" }}
|
||||
{{- $create = .Values.secret.create }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- $shouldCreate := and $create (not .Values.envVarsExternalSecretName) }}
|
||||
{{- if $shouldCreate }}true{{- else }}false{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,75 @@
|
||||
{{/* ========================================================================
|
||||
Naming & identity helpers
|
||||
========================================================================= */}}
|
||||
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "perses.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create a default fully qualified app name.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
If release name contains chart name it will be used as a full name.
|
||||
*/}}
|
||||
{{- define "perses.fullname" -}}
|
||||
{{- if .Values.fullnameOverride }}
|
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
|
||||
{{- else }}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride }}
|
||||
{{- if contains $name .Release.Name }}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
|
||||
{{- else }}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
*/}}
|
||||
{{- define "perses.chart" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Common labels
|
||||
*/}}
|
||||
{{- define "perses.labels" -}}
|
||||
helm.sh/chart: {{ include "perses.chart" . }}
|
||||
{{ include "perses.selectorLabels" . }}
|
||||
app.kubernetes.io/version: {{ default .Chart.AppVersion .Values.image.version }}
|
||||
app.kubernetes.io/part-of: {{ include "perses.name" . }}
|
||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||
{{- if not (empty .Values.additionalLabels) }}
|
||||
{{ toYaml .Values.additionalLabels }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Selector labels
|
||||
*/}}
|
||||
{{- define "perses.selectorLabels" -}}
|
||||
app.kubernetes.io/name: {{ include "perses.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create the name of the service account to use
|
||||
*/}}
|
||||
{{- define "perses.serviceAccountName" -}}
|
||||
{{- if .Values.serviceAccount.create }}
|
||||
{{- default (include "perses.fullname" .) .Values.serviceAccount.name }}
|
||||
{{- else }}
|
||||
{{- default "default" .Values.serviceAccount.name }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Render an internal DNS endpoint for the Perses service.
|
||||
*/}}
|
||||
{{- define "perses.dns" -}}
|
||||
http://{{ include "perses.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local:{{ .Values.service.targetPort }}
|
||||
{{- end -}}
|
||||
Reference in New Issue
Block a user