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:
wbsong111
2026-06-25 11:10:51 +09:00
parent a55427730e
commit 6290322f1b
514 changed files with 68103 additions and 40 deletions
@@ -0,0 +1,75 @@
{{- if .Values.testFramework.enabled -}}
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-test
namespace: {{ .Release.Namespace }}
labels:
type: helm-chart-test
{{- include "perses.labels" . | nindent 4 }}
annotations:
"helm.sh/hook": test
"helm.sh/hook-delete-policy": "before-hook-creation,hook-succeeded"
data:
run.sh: |-
#!/usr/bin/env bats
load "/usr/lib/bats/bats-detik/utils"
load "/usr/lib/bats/bats-detik/detik"
DETIK_CLIENT_NAME="kubectl"
@test "Verify that there is a service named {{ include "perses.fullname" . }}" {
verify "there is 1 service named '^{{ include "perses.fullname" . }}$'"
}
@test "Verify that there is a configmap named {{ include "perses.fullname" . }}" {
verify "there is 1 configmap named '^{{ include "perses.fullname" . }}$'"
}
{{- if .Values.config.database.file }}
@test "Verify successful statefulset and running status of the {{ .Release.Name }} pod" {
verify "there is 1 statefulset named '{{ include "perses.fullname" . }}'"
try "at most 3 times every 20s to get pods named '{{ include "perses.fullname" . }}.*' and verify that '.status.phase' is 'running'"
}
{{- end -}}
{{- if .Values.config.database.sql }}
@test "Verify successful deployment and running status of the {{ .Release.Name }} pod" {
verify "there is 1 deployment named '{{ include "perses.fullname" . }}'"
try "at most 3 times every 20s to get pods named '{{ include "perses.fullname" . }}.*' and verify that '.status.phase' is 'running'"
}
{{- end -}}
{{- if .Values.persistence.enabled }}
@test "Verify successful creation and bound status of {{ include "perses.fullname" . }} persistent volume claims" {
try "at most 3 times every 5s to get persistentvolumeclaims named '{{ include "perses.fullname" . }}.*' and verify that '.status.phase' is 'Bound'"
}
{{- end -}}
{{- if .Values.ingress.enabled }}
@test "Verify successful creation of ingress resource" {
verify "there is 1 ingress named '^{{ include "perses.fullname" . }}$'"
}
{{- end -}}
{{- if and .Values.gateway.enabled .Values.gateway.createGateway }}
@test "Verify successful creation of gateway resource" {
verify "there is 1 gateways.gateway.networking.k8s.io named '^{{ default (printf "%s-gateway" (include "perses.fullname" .)) .Values.gateway.name }}$'"
}
{{- end -}}
{{- if .Values.gateway.enabled }}
@test "Verify successful creation of HTTPRoute resource" {
verify "there is 1 httproutes.gateway.networking.k8s.io named '^{{ default (printf "%s-http-route" (include "perses.fullname" .)) .Values.gateway.httpRoute.name }}$'"
}
{{- end -}}
{{ if .Values.serviceMonitor.selfMonitor }}
@test "Verify succesful creation of ServiceMonitor" {
verify "there is 1 servicemonitor named '^{{ include "perses.fullname" . }}$'"
}
{{ end }}
{{- end -}}
@@ -0,0 +1,57 @@
{{- if .Values.testFramework.enabled -}}
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ .Release.Name }}-test
namespace: {{ .Release.Namespace }}
labels:
type: helm-chart-test
{{- include "perses.labels" . | nindent 4 }}
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: {{ .Release.Name }}-test
namespace: {{ .Release.Namespace }}
labels:
type: helm-chart-test
{{- include "perses.labels" . | nindent 4 }}
rules:
- apiGroups: ["apps"]
resources: ["statefulsets","deployments"]
verbs: ["get", "list"]
- apiGroups: [""]
resources: ["pods", "persistentvolumeclaims", "services", "configmaps"]
verbs: ["get", "list"]
- apiGroups: ["networking.k8s.io"]
resources: ["ingresses"]
verbs: ["get", "list"]
{{- if .Values.gateway.enabled }}
- apiGroups: ["gateway.networking.k8s.io"]
resources: ["gateways", "httproutes"]
verbs: ["get", "list"]
{{- end }}
{{- if .Values.serviceMonitor.selfMonitor }}
- apiGroups: ["monitoring.coreos.com"]
resources: ["servicemonitors"]
verbs: ["get", "list"]
{{- end }}
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: {{ .Release.Name }}-test
namespace: {{ .Release.Namespace }}
labels:
type: helm-chart-test
{{- include "perses.labels" . | nindent 4 }}
subjects:
- kind: ServiceAccount
name: {{ .Release.Name }}-test
namespace: {{ .Release.Namespace }}
roleRef:
kind: Role
name: {{ .Release.Name }}-test
apiGroup: rbac.authorization.k8s.io
---
{{- end -}}
@@ -0,0 +1,28 @@
{{- if .Values.testFramework.enabled -}}
apiVersion: v1
kind: Pod
metadata:
name: {{ .Release.Name }}-test
namespace: {{ .Release.Namespace }}
labels:
type: helm-chart-test
annotations:
"helm.sh/hook": test
"helm.sh/hook-delete-policy": "before-hook-creation,hook-succeeded"
spec:
serviceAccountName: {{ .Release.Name }}-test
containers:
- name: bats-test
image: "{{ .Values.testFramework.image.registry}}/{{ .Values.testFramework.image.repository}}:{{ .Values.testFramework.image.tag }}"
imagePullPolicy: {{ .Values.testFramework.image.pullPolicy }}
command: ["bats", "-t", "/tests/run.sh"]
volumeMounts:
- name: tests
mountPath: /tests
readOnly: true
volumes:
- name: tests
configMap:
name: {{ .Release.Name }}-test
restartPolicy: Never
{{- end -}}