Teststand
Some checks failed
Deploy KubeViz / deploy (push) Has been cancelled

This commit is contained in:
2026-03-01 07:40:49 +01:00
commit 1a0bbe9dfd
58 changed files with 7756 additions and 0 deletions

20
testdata/README.md vendored Normal file
View File

@@ -0,0 +1,20 @@
# KubeViz Testdaten
Dieses Verzeichnis enthält sofort nutzbare Testdaten für:
- Multi-File Upload (`testdata/manifests/...`)
- Fehlertolerantes Parsing mit defekten Dateien (`testdata/manifests/partials`)
- Secret-Redaction (`testdata/manifests/sensitive`)
- Helm-Rendering (`testdata/helm/kubeviz-sample`)
## Empfohlene Tests
1. Upload `testdata/manifests/kube-stack/*.yaml`
2. Upload `testdata/manifests/partials/*.yaml` (enthält eine defekte Datei)
3. Upload `testdata/manifests/sensitive/*.yaml` und prüfe Secret-Redaction
4. Git/Helm: nutze das Chart unter `testdata/helm/kubeviz-sample`
## Helm lokal testen
```bash
helm template demo ./testdata/helm/kubeviz-sample --namespace demo
```

View File

@@ -0,0 +1,6 @@
apiVersion: v2
name: kubeviz-sample
description: Sample chart for KubeViz graph testing
type: application
version: 0.1.0
appVersion: "1.0.0"

View File

@@ -0,0 +1,24 @@
{{- define "kubeviz-sample.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{- define "kubeviz-sample.fullname" -}}
{{- if .Values.fullnameOverride -}}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- printf "%s-%s" .Release.Name (include "kubeviz-sample.name" .) | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{- end -}}
{{- define "kubeviz-sample.labels" -}}
app.kubernetes.io/name: {{ include "kubeviz-sample.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end -}}
{{- define "kubeviz-sample.namespace" -}}
{{- if .Values.namespaceOverride -}}
{{- .Values.namespaceOverride -}}
{{- else -}}
{{- .Release.Namespace -}}
{{- end -}}
{{- end -}}

View File

@@ -0,0 +1,9 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ include "kubeviz-sample.fullname" . }}-config
namespace: {{ include "kubeviz-sample.namespace" . }}
labels:
{{- include "kubeviz-sample.labels" . | nindent 4 }}
data:
APP_MODE: {{ .Values.config.appMode | quote }}

View File

@@ -0,0 +1,37 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "kubeviz-sample.fullname" . }}
namespace: {{ include "kubeviz-sample.namespace" . }}
labels:
{{- include "kubeviz-sample.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
app.kubernetes.io/name: {{ include "kubeviz-sample.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
template:
metadata:
labels:
app.kubernetes.io/name: {{ include "kubeviz-sample.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
spec:
containers:
- name: app
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
ports:
- containerPort: {{ .Values.service.targetPort }}
name: http
env:
- name: APP_MODE
valueFrom:
configMapKeyRef:
name: {{ include "kubeviz-sample.fullname" . }}-config
key: APP_MODE
- name: API_TOKEN
valueFrom:
secretKeyRef:
name: {{ include "kubeviz-sample.fullname" . }}-secret
key: API_TOKEN

View File

@@ -0,0 +1,23 @@
{{- if .Values.hpa.enabled }}
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: {{ include "kubeviz-sample.fullname" . }}
namespace: {{ include "kubeviz-sample.namespace" . }}
labels:
{{- include "kubeviz-sample.labels" . | nindent 4 }}
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: {{ include "kubeviz-sample.fullname" . }}
minReplicas: {{ .Values.hpa.minReplicas }}
maxReplicas: {{ .Values.hpa.maxReplicas }}
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: {{ .Values.hpa.averageCPUUtilization }}
{{- end }}

View File

@@ -0,0 +1,24 @@
{{- if .Values.ingress.enabled }}
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: {{ include "kubeviz-sample.fullname" . }}
namespace: {{ include "kubeviz-sample.namespace" . }}
labels:
{{- include "kubeviz-sample.labels" . | nindent 4 }}
spec:
{{- if .Values.ingress.className }}
ingressClassName: {{ .Values.ingress.className }}
{{- end }}
rules:
- host: {{ .Values.ingress.host | quote }}
http:
paths:
- path: {{ .Values.ingress.path | quote }}
pathType: Prefix
backend:
service:
name: {{ include "kubeviz-sample.fullname" . }}
port:
number: {{ .Values.service.port }}
{{- end }}

View File

@@ -0,0 +1,10 @@
apiVersion: v1
kind: Secret
metadata:
name: {{ include "kubeviz-sample.fullname" . }}-secret
namespace: {{ include "kubeviz-sample.namespace" . }}
labels:
{{- include "kubeviz-sample.labels" . | nindent 4 }}
type: Opaque
stringData:
API_TOKEN: {{ .Values.secret.apiToken | quote }}

View File

@@ -0,0 +1,17 @@
apiVersion: v1
kind: Service
metadata:
name: {{ include "kubeviz-sample.fullname" . }}
namespace: {{ include "kubeviz-sample.namespace" . }}
labels:
{{- include "kubeviz-sample.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
selector:
app.kubernetes.io/name: {{ include "kubeviz-sample.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
ports:
- name: http
port: {{ .Values.service.port }}
targetPort: {{ .Values.service.targetPort }}
protocol: {{ .Values.service.protocol }}

View File

@@ -0,0 +1,35 @@
nameOverride: ""
fullnameOverride: ""
namespaceOverride: ""
replicaCount: 2
image:
repository: nginx
tag: "1.27"
pullPolicy: IfNotPresent
service:
type: ClusterIP
port: 80
targetPort: 8080
protocol: TCP
ingress:
enabled: true
className: ""
host: chart.demo.local
path: /
config:
appMode: production
secret:
apiToken: change-me
hpa:
enabled: true
minReplicas: 2
maxReplicas: 5
averageCPUUtilization: 70

View File

@@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: demo

View File

@@ -0,0 +1,8 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: web-config
namespace: demo
data:
APP_MODE: production
FEATURE_FLAG_X: "true"

View File

@@ -0,0 +1,9 @@
apiVersion: v1
kind: Secret
metadata:
name: web-secret
namespace: demo
type: Opaque
stringData:
DB_PASSWORD: super-secret
API_TOKEN: please-redact

View File

@@ -0,0 +1,11 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: web-data
namespace: demo
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi

View File

@@ -0,0 +1,38 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: web
namespace: demo
spec:
replicas: 2
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
containers:
- name: web
image: nginx:1.27
ports:
- containerPort: 8080
env:
- name: APP_MODE
valueFrom:
configMapKeyRef:
name: web-config
key: APP_MODE
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: web-secret
key: DB_PASSWORD
volumeMounts:
- name: data
mountPath: /var/lib/data
volumes:
- name: data
persistentVolumeClaim:
claimName: web-data

View File

@@ -0,0 +1,13 @@
apiVersion: v1
kind: Service
metadata:
name: web
namespace: demo
spec:
selector:
app: web
ports:
- name: http
port: 80
targetPort: 8080
protocol: TCP

View File

@@ -0,0 +1,17 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: web
namespace: demo
spec:
rules:
- host: web.demo.local
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: web
port:
number: 80

View File

@@ -0,0 +1,19 @@
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: web
namespace: demo
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: web
minReplicas: 2
maxReplicas: 5
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70

View File

@@ -0,0 +1,5 @@
apiVersion: v1
kind Service
metadata:
name: broken
namespace: partial

View File

@@ -0,0 +1,20 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: partial-ok
namespace: partial
spec:
replicas: 1
selector:
matchLabels:
app: partial-ok
template:
metadata:
labels:
app: partial-ok
spec:
containers:
- name: app
image: nginx:1.27
ports:
- containerPort: 8080

View File

@@ -0,0 +1,11 @@
apiVersion: v1
kind: Service
metadata:
name: partial-ok
namespace: partial
spec:
selector:
app: partial-ok
ports:
- port: 80
targetPort: 8080

View File

@@ -0,0 +1,9 @@
apiVersion: v1
kind: Secret
metadata:
name: only-secret
namespace: sensitive
type: Opaque
data:
password: c3VwZXJzZWNyZXQ=
token: c2hvdWxkLWJlLXJlZGFjdGVk