Skip to content

Commit b85cfe9

Browse files
kamirclaude
andcommitted
feat(deploy): Helm chart for kafSIEM web UI
Adds a minimal Helm chart (Deployment|StatefulSet + Service + ConfigMap + SA) that brings the component up on KIND for bp-001 Ops Foundation smoke testing. Built locally via docker build + kind load (OPS-001 tracks GHCR publishing). Validated: chart installs, pod Ready, smoke tests green. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 8bbc7da commit b85cfe9

4 files changed

Lines changed: 150 additions & 0 deletions

File tree

deploy/helm/kafsiem/Chart.yaml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
apiVersion: v2
2+
name: kafsiem
3+
description: >
4+
kafSIEM / EUOSINT — OSINT + AgentOps + Hybrid observability web UI.
5+
Deploys the Caddy-served static frontend. For the Go collector, use the
6+
`kafsiem-collector` chart (roadmap).
7+
type: application
8+
version: 0.1.0
9+
appVersion: "1.0.0"
10+
maintainers:
11+
- name: Scalytics Platform Team
12+
keywords:
13+
- siem
14+
- osint
15+
- agentops
16+
- observability
17+
- scalytics
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
{{- define "kafsiem.name" -}}
2+
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
3+
{{- end -}}
4+
5+
{{- define "kafsiem.fullname" -}}
6+
{{- if .Values.fullnameOverride -}}
7+
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
8+
{{- else -}}
9+
{{- $name := default .Chart.Name .Values.nameOverride -}}
10+
{{- if contains $name .Release.Name -}}
11+
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
12+
{{- else -}}
13+
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
14+
{{- end -}}
15+
{{- end -}}
16+
{{- end -}}
17+
18+
{{- define "kafsiem.labels" -}}
19+
app.kubernetes.io/name: {{ include "kafsiem.name" . }}
20+
app.kubernetes.io/instance: {{ .Release.Name }}
21+
app.kubernetes.io/managed-by: {{ .Release.Service }}
22+
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
23+
helm.sh/chart: {{ printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
24+
{{- range $key, $value := .Values.labels }}
25+
{{ $key }}: {{ $value | quote }}
26+
{{- end }}
27+
{{- end -}}
28+
29+
{{- define "kafsiem.selectorLabels" -}}
30+
app.kubernetes.io/name: {{ include "kafsiem.name" . }}
31+
app.kubernetes.io/instance: {{ .Release.Name }}
32+
{{- end -}}
33+
34+
{{- define "kafsiem.serviceAccountName" -}}
35+
{{- if .Values.serviceAccount.create -}}
36+
{{- default (include "kafsiem.fullname" .) .Values.serviceAccount.name -}}
37+
{{- else -}}
38+
{{- default "default" .Values.serviceAccount.name -}}
39+
{{- end -}}
40+
{{- end -}}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: {{ include "kafsiem.fullname" . }}
5+
namespace: {{ .Release.Namespace }}
6+
labels:
7+
{{- include "kafsiem.labels" . | nindent 4 }}
8+
spec:
9+
replicas: {{ .Values.replicaCount }}
10+
selector:
11+
matchLabels:
12+
{{- include "kafsiem.selectorLabels" . | nindent 6 }}
13+
template:
14+
metadata:
15+
labels:
16+
{{- include "kafsiem.labels" . | nindent 8 }}
17+
spec:
18+
serviceAccountName: {{ include "kafsiem.serviceAccountName" . }}
19+
containers:
20+
- name: kafsiem
21+
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
22+
imagePullPolicy: {{ .Values.image.pullPolicy }}
23+
ports:
24+
- name: http
25+
containerPort: 80
26+
livenessProbe:
27+
{{- toYaml .Values.probes.liveness | nindent 12 }}
28+
readinessProbe:
29+
{{- toYaml .Values.probes.readiness | nindent 12 }}
30+
resources:
31+
{{- toYaml .Values.resources | nindent 12 }}
32+
---
33+
apiVersion: v1
34+
kind: Service
35+
metadata:
36+
name: {{ include "kafsiem.fullname" . }}
37+
namespace: {{ .Release.Namespace }}
38+
labels:
39+
{{- include "kafsiem.labels" . | nindent 4 }}
40+
spec:
41+
type: {{ .Values.service.type }}
42+
ports:
43+
- name: http
44+
port: {{ .Values.service.port }}
45+
targetPort: {{ .Values.service.targetPort }}
46+
selector:
47+
{{- include "kafsiem.selectorLabels" . | nindent 4 }}
48+
---
49+
{{- if .Values.serviceAccount.create }}
50+
apiVersion: v1
51+
kind: ServiceAccount
52+
metadata:
53+
name: {{ include "kafsiem.serviceAccountName" . }}
54+
namespace: {{ .Release.Namespace }}
55+
labels:
56+
{{- include "kafsiem.labels" . | nindent 4 }}
57+
{{- end }}

deploy/helm/kafsiem/values.yaml

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
image:
2+
repository: ghcr.io/scalytics/kafsiem
3+
tag: latest
4+
pullPolicy: IfNotPresent
5+
6+
replicaCount: 1
7+
8+
service:
9+
type: ClusterIP
10+
port: 8500
11+
targetPort: 80
12+
13+
resources:
14+
limits:
15+
cpu: 500m
16+
memory: 256Mi
17+
requests:
18+
cpu: 100m
19+
memory: 64Mi
20+
21+
probes:
22+
liveness:
23+
httpGet: { path: /, port: 80 }
24+
initialDelaySeconds: 5
25+
periodSeconds: 10
26+
readiness:
27+
httpGet: { path: /, port: 80 }
28+
initialDelaySeconds: 2
29+
periodSeconds: 5
30+
31+
serviceAccount:
32+
create: true
33+
name: ""
34+
35+
labels:
36+
app.kubernetes.io/part-of: ops-foundation

0 commit comments

Comments
 (0)