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,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 -}}
|
||||
Reference in New Issue
Block a user