This commit is contained in:
20
testdata/README.md
vendored
Normal file
20
testdata/README.md
vendored
Normal 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
|
||||
```
|
||||
6
testdata/helm/kubeviz-sample/Chart.yaml
vendored
Normal file
6
testdata/helm/kubeviz-sample/Chart.yaml
vendored
Normal 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"
|
||||
24
testdata/helm/kubeviz-sample/templates/_helpers.tpl
vendored
Normal file
24
testdata/helm/kubeviz-sample/templates/_helpers.tpl
vendored
Normal 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 -}}
|
||||
9
testdata/helm/kubeviz-sample/templates/configmap.yaml
vendored
Normal file
9
testdata/helm/kubeviz-sample/templates/configmap.yaml
vendored
Normal 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 }}
|
||||
37
testdata/helm/kubeviz-sample/templates/deployment.yaml
vendored
Normal file
37
testdata/helm/kubeviz-sample/templates/deployment.yaml
vendored
Normal 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
|
||||
23
testdata/helm/kubeviz-sample/templates/hpa.yaml
vendored
Normal file
23
testdata/helm/kubeviz-sample/templates/hpa.yaml
vendored
Normal 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 }}
|
||||
24
testdata/helm/kubeviz-sample/templates/ingress.yaml
vendored
Normal file
24
testdata/helm/kubeviz-sample/templates/ingress.yaml
vendored
Normal 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 }}
|
||||
10
testdata/helm/kubeviz-sample/templates/secret.yaml
vendored
Normal file
10
testdata/helm/kubeviz-sample/templates/secret.yaml
vendored
Normal 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 }}
|
||||
17
testdata/helm/kubeviz-sample/templates/service.yaml
vendored
Normal file
17
testdata/helm/kubeviz-sample/templates/service.yaml
vendored
Normal 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 }}
|
||||
35
testdata/helm/kubeviz-sample/values.yaml
vendored
Normal file
35
testdata/helm/kubeviz-sample/values.yaml
vendored
Normal 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
|
||||
4
testdata/manifests/kube-stack/00-namespace.yaml
vendored
Normal file
4
testdata/manifests/kube-stack/00-namespace.yaml
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: demo
|
||||
8
testdata/manifests/kube-stack/10-configmap.yaml
vendored
Normal file
8
testdata/manifests/kube-stack/10-configmap.yaml
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: web-config
|
||||
namespace: demo
|
||||
data:
|
||||
APP_MODE: production
|
||||
FEATURE_FLAG_X: "true"
|
||||
9
testdata/manifests/kube-stack/20-secret.yaml
vendored
Normal file
9
testdata/manifests/kube-stack/20-secret.yaml
vendored
Normal 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
|
||||
11
testdata/manifests/kube-stack/30-pvc.yaml
vendored
Normal file
11
testdata/manifests/kube-stack/30-pvc.yaml
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
name: web-data
|
||||
namespace: demo
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
resources:
|
||||
requests:
|
||||
storage: 1Gi
|
||||
38
testdata/manifests/kube-stack/40-deployment.yaml
vendored
Normal file
38
testdata/manifests/kube-stack/40-deployment.yaml
vendored
Normal 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
|
||||
13
testdata/manifests/kube-stack/50-service.yaml
vendored
Normal file
13
testdata/manifests/kube-stack/50-service.yaml
vendored
Normal 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
|
||||
17
testdata/manifests/kube-stack/60-ingress.yaml
vendored
Normal file
17
testdata/manifests/kube-stack/60-ingress.yaml
vendored
Normal 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
|
||||
19
testdata/manifests/kube-stack/70-hpa.yaml
vendored
Normal file
19
testdata/manifests/kube-stack/70-hpa.yaml
vendored
Normal 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
|
||||
5
testdata/manifests/partials/broken.yaml
vendored
Normal file
5
testdata/manifests/partials/broken.yaml
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
apiVersion: v1
|
||||
kind Service
|
||||
metadata:
|
||||
name: broken
|
||||
namespace: partial
|
||||
20
testdata/manifests/partials/ok-deployment.yaml
vendored
Normal file
20
testdata/manifests/partials/ok-deployment.yaml
vendored
Normal 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
|
||||
11
testdata/manifests/partials/ok-service.yaml
vendored
Normal file
11
testdata/manifests/partials/ok-service.yaml
vendored
Normal 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
|
||||
9
testdata/manifests/sensitive/secret-only.yaml
vendored
Normal file
9
testdata/manifests/sensitive/secret-only.yaml
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: only-secret
|
||||
namespace: sensitive
|
||||
type: Opaque
|
||||
data:
|
||||
password: c3VwZXJzZWNyZXQ=
|
||||
token: c2hvdWxkLWJlLXJlZGFjdGVk
|
||||
Reference in New Issue
Block a user