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,9 @@
mode: deployment
image:
repository: "ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-k8s"
command:
name: "otelcol-k8s"
useGOMEMLIMIT: true
@@ -0,0 +1,27 @@
mode: daemonset
image:
repository: "ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-k8s"
command:
name: "otelcol-k8s"
clusterRole:
create: true
name: "testing-clusterrole"
rules:
- apiGroups:
- ''
resources:
- 'pods'
- 'nodes'
verbs:
- 'get'
- 'list'
- 'watch'
clusterRoleBinding:
name: "testing-clusterrolebinding"
resources:
limits:
cpu: 100m
memory: 200M
@@ -0,0 +1,26 @@
mode: daemonset
image:
repository: "ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-k8s"
command:
name: "otelcol-k8s"
config:
receivers:
jaeger: null
otlp: null
zipkin: null
hostmetrics:
scrapers:
cpu:
disk:
filesystem:
service:
pipelines:
metrics:
receivers:
- prometheus
- hostmetrics
traces: null
logs: null
@@ -0,0 +1,12 @@
mode: daemonset
image:
repository: "ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-k8s"
command:
name: "otelcol-k8s"
resources:
limits:
cpu: 100m
memory: 200M
@@ -0,0 +1,33 @@
global:
test: templated-value
mode: deployment
image:
repository: "ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-k8s"
command:
name: "otelcol-k8s"
resources:
limits:
cpu: 100m
memory: 200M
# Tests `tpl` function reference used in pod labels and
# ingress.hosts[*]
podLabels:
testLabel: "{{ .Values.global.test }}"
additionalLabels:
testLabel: "{{ .Values.global.test }}"
someLabel: "someValue"
ingress:
enabled: true
hosts:
- host: "{{ .Values.global.test }}"
paths:
- path: /
pathType: Prefix
port: 4318
@@ -0,0 +1,21 @@
mode: deployment
image:
repository: "ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-k8s"
command:
name: "otelcol-k8s"
ports:
jaeger-compact:
enabled: false
jaeger-thrift:
enabled: false
jaeger-grpc:
enabled: false
zipkin:
enabled: false
resources:
limits:
cpu: 100m
memory: 200M
@@ -0,0 +1,15 @@
mode: deployment
image:
repository: "ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-k8s"
command:
name: "otelcol-k8s"
autoscaling:
enabled: true
minReplicas: 1
maxReplicas: 10
behavior: {}
targetCPUUtilizationPercentage: 80
targetMemoryUtilizationPercentage: 80
@@ -0,0 +1,15 @@
mode: statefulset
image:
repository: "ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-k8s"
command:
name: "otelcol-k8s"
autoscaling:
enabled: true
minReplicas: 1
maxReplicas: 10
behavior: {}
targetCPUUtilizationPercentage: 80
targetMemoryUtilizationPercentage: 80
@@ -0,0 +1,21 @@
mode: deployment
image:
repository: "ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-k8s"
resources:
limits:
cpu: 100m
memory: 200M
internalTelemetryViaOTLP:
endpoint: "http://localhost:4318"
headers:
- name: "x-opentelemetry-customer"
value: "a value"
traces:
enabled: true
metrics:
enabled: true
logs:
enabled: true
@@ -0,0 +1,49 @@
mode: deployment
image:
repository: "ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-k8s"
command:
name: "otelcol-k8s"
resources:
limits:
cpu: 100m
memory: 200M
ingress:
enabled: true
ingressClassName: nginx
annotations:
test.io/collector: default
hosts:
- host: defaultcollector.example.com
paths:
- path: /
pathType: Prefix
port: 4318
additionalIngresses:
- name: additional-basic
hosts:
- host: additional-basic.example.com
paths:
- path: /
pathType: Prefix
port: 4318
- name: additional-advanced
ingressClassName: nginx
annotations:
test.io/ingress: additional-advanced
hosts:
- host: additional-advanced.example.com
paths:
- path: /
pathType: Exact
port: 4318
tls:
- secretName: somesecret
hosts:
- additional-advanced.example.com
@@ -0,0 +1,37 @@
mode: daemonset
image:
repository: "ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-k8s"
command:
name: "otelcol-k8s"
resources:
limits:
cpu: 100m
memory: 200M
networkPolicy:
enabled: true
allowIngressFrom:
- namespaceSelector: {}
- ipBlock:
cidr: 127.0.0.1/32
extraIngressRules:
- ports:
- port: metrics
protocol: TCP
from:
- ipBlock:
cidr: 127.0.0.1/32
egressRules:
- to:
- podSelector:
matchLabels:
app: jaeger
ports:
- port: 4317
protocol: TCP
@@ -0,0 +1,15 @@
mode: deployment
image:
repository: "ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-k8s"
command:
name: "otelcol-k8s"
resources:
limits:
cpu: 100m
memory: 200M
networkPolicy:
enabled: true
@@ -0,0 +1,15 @@
mode: deployment
image:
repository: "ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-k8s"
resources:
limits:
cpu: 100m
memory: 200M
config:
service:
telemetry:
metrics:
address: ${env:MY_POD_IP}:8888
@@ -0,0 +1,17 @@
mode: deployment
image:
repository: "ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-k8s"
resources:
limits:
cpu: 100m
memory: 200M
config:
service:
telemetry:
metrics:
address: 0.0.0.0:8888
resource:
"k8s.namespace.name": "default"
@@ -0,0 +1,17 @@
mode: daemonset
image:
repository: "ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-k8s"
command:
name: "otelcol-k8s"
presets:
annotationDiscovery:
logs:
enabled: true
resources:
limits:
cpu: 100m
memory: 200M
@@ -0,0 +1,16 @@
mode: daemonset
image:
repository: "ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-k8s"
command:
name: "otelcol-k8s"
presets:
clusterMetrics:
enabled: true
resources:
limits:
cpu: 100m
memory: 200M
@@ -0,0 +1,16 @@
mode: deployment
image:
repository: "ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-k8s"
command:
name: "otelcol-k8s"
presets:
clusterMetrics:
enabled: true
resources:
limits:
cpu: 100m
memory: 200M
@@ -0,0 +1,16 @@
mode: daemonset
image:
repository: "ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-k8s"
command:
name: "otelcol-k8s"
presets:
hostMetrics:
enabled: true
resources:
limits:
cpu: 100m
memory: 200M
@@ -0,0 +1,16 @@
mode: deployment
image:
repository: "ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-k8s"
command:
name: "otelcol-k8s"
presets:
kubernetesEvents:
enabled: true
resources:
limits:
cpu: 100m
memory: 200M
@@ -0,0 +1,16 @@
mode: daemonset
image:
repository: "ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-k8s"
command:
name: "otelcol-k8s"
presets:
kubeletMetrics:
enabled: true
resources:
limits:
cpu: 100m
memory: 200M
@@ -0,0 +1,16 @@
mode: daemonset
image:
repository: "ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-k8s"
command:
name: "otelcol-k8s"
presets:
kubernetesAttributes:
enabled: true
resources:
limits:
cpu: 100m
memory: 200M
@@ -0,0 +1,16 @@
mode: daemonset
image:
repository: "ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-k8s"
command:
name: "otelcol-k8s"
presets:
kubernetesObjects:
enabled: true
resources:
limits:
cpu: 100m
memory: 200M
@@ -0,0 +1,16 @@
mode: deployment
image:
repository: "ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-k8s"
command:
name: "otelcol-k8s"
presets:
kubernetesObjects:
enabled: true
resources:
limits:
cpu: 100m
memory: 200M
@@ -0,0 +1,17 @@
mode: daemonset
image:
repository: "ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-k8s"
command:
name: "otelcol-k8s"
presets:
logsCollection:
enabled: true
includeCollectorLogs: true
resources:
limits:
cpu: 100m
memory: 200M
@@ -0,0 +1,19 @@
mode: daemonset
image:
repository: "ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-ebpf-profiler"
command:
name: "otelcol-ebpf-profiler"
extraArgs: ["--feature-gates=+service.profilesSupport"]
presets:
profiling:
enabled: true
kubernetesAttributes:
enabled: true
resources:
limits:
cpu: 100m
memory: 200M
@@ -0,0 +1,11 @@
mode: daemonset
image:
repository: "ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-k8s"
command:
name: "otelcol-k8s"
presets:
resourceDetection:
enabled: true
@@ -0,0 +1,37 @@
mode: daemonset
image:
repository: "ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-k8s"
command:
name: "otelcol-k8s"
livenessProbe:
initialDelaySeconds: 10
periodSeconds: 5
timeoutSeconds: 3
failureThreshold: 2
terminationGracePeriodSeconds: 40
httpGet:
port: 8989
path: /healthz
readinessProbe:
initialDelaySeconds: 10
periodSeconds: 5
timeoutSeconds: 3
successThreshold: 2
failureThreshold: 2
httpGet:
port: 8989
path: /healthz
startupProbe:
initialDelaySeconds: 10
periodSeconds: 5
timeoutSeconds: 3
failureThreshold: 10
terminationGracePeriodSeconds: 40
httpGet:
port: 8989
path: /healthz
@@ -0,0 +1,13 @@
mode: statefulset
image:
repository: "ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-k8s"
command:
name: "otelcol-k8s"
replicaCount: 2
resources:
limits:
cpu: 100m
memory: 200M