summaryrefslogtreecommitdiff
path: root/k8s
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-04-29 09:57:35 +0300
committerPaul Buetow <paul@buetow.org>2026-04-29 09:57:35 +0300
commit4d71aabf4feb1dcb9c940926fbcc4285525b1c05 (patch)
treece60808e99b1d2a5e19017871052cab57634e4c7 /k8s
parentd6954b4de0261e45d1d57b7f9319114b508817dc (diff)
feat: Create Dockerfile, k8s manifests, and Magefile.go with build/test/install targets (p9)
Diffstat (limited to 'k8s')
-rw-r--r--k8s/deployment.yaml73
-rw-r--r--k8s/pvc-db.yaml12
-rw-r--r--k8s/pvc-media.yaml12
-rw-r--r--k8s/secret.yaml10
-rw-r--r--k8s/service.yaml14
5 files changed, 121 insertions, 0 deletions
diff --git a/k8s/deployment.yaml b/k8s/deployment.yaml
new file mode 100644
index 0000000..c4c605e
--- /dev/null
+++ b/k8s/deployment.yaml
@@ -0,0 +1,73 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: kiss-media-player
+ labels:
+ app: kiss-media-player
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ app: kiss-media-player
+ template:
+ metadata:
+ labels:
+ app: kiss-media-player
+ spec:
+ securityContext:
+ runAsNonRoot: true
+ fsGroup: 65534
+ containers:
+ - name: app
+ image: kiss-media-player:latest
+ imagePullPolicy: IfNotPresent
+ securityContext:
+ runAsUser: 65534
+ runAsGroup: 65534
+ allowPrivilegeEscalation: false
+ readOnlyRootFilesystem: true
+ ports:
+ - containerPort: 8080
+ name: http
+ envFrom:
+ - secretRef:
+ name: kiss-media-player-secret
+ optional: true
+ env:
+ - name: PORT
+ value: "8080"
+ - name: DB_PATH
+ value: "/data/media.db"
+ - name: MEDIA_ROOT
+ value: "/media"
+ livenessProbe:
+ httpGet:
+ path: /healthz
+ port: http
+ initialDelaySeconds: 5
+ periodSeconds: 10
+ readinessProbe:
+ httpGet:
+ path: /readyz
+ port: http
+ initialDelaySeconds: 3
+ periodSeconds: 5
+ volumeMounts:
+ - name: data
+ mountPath: /data
+ - name: media
+ mountPath: /media
+ resources:
+ requests:
+ memory: "128Mi"
+ cpu: "100m"
+ limits:
+ memory: "512Mi"
+ cpu: "1000m"
+ volumes:
+ - name: data
+ persistentVolumeClaim:
+ claimName: kiss-media-player-db
+ - name: media
+ persistentVolumeClaim:
+ claimName: kiss-media-player-media
diff --git a/k8s/pvc-db.yaml b/k8s/pvc-db.yaml
new file mode 100644
index 0000000..87fad81
--- /dev/null
+++ b/k8s/pvc-db.yaml
@@ -0,0 +1,12 @@
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+ name: kiss-media-player-db
+ labels:
+ app: kiss-media-player
+spec:
+ accessModes:
+ - ReadWriteOnce
+ resources:
+ requests:
+ storage: 1Gi
diff --git a/k8s/pvc-media.yaml b/k8s/pvc-media.yaml
new file mode 100644
index 0000000..76e2d41
--- /dev/null
+++ b/k8s/pvc-media.yaml
@@ -0,0 +1,12 @@
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+ name: kiss-media-player-media
+ labels:
+ app: kiss-media-player
+spec:
+ accessModes:
+ - ReadWriteMany
+ resources:
+ requests:
+ storage: 10Gi
diff --git a/k8s/secret.yaml b/k8s/secret.yaml
new file mode 100644
index 0000000..68b21fc
--- /dev/null
+++ b/k8s/secret.yaml
@@ -0,0 +1,10 @@
+apiVersion: v1
+kind: Secret
+metadata:
+ name: kiss-media-player-secret
+ labels:
+ app: kiss-media-player
+type: Opaque
+stringData:
+ # Set this to the desired admin password before applying.
+ ADMIN_PASSWORD: "changeme"
diff --git a/k8s/service.yaml b/k8s/service.yaml
new file mode 100644
index 0000000..c3da918
--- /dev/null
+++ b/k8s/service.yaml
@@ -0,0 +1,14 @@
+apiVersion: v1
+kind: Service
+metadata:
+ name: kiss-media-player
+ labels:
+ app: kiss-media-player
+spec:
+ type: ClusterIP
+ selector:
+ app: kiss-media-player
+ ports:
+ - port: 8080
+ targetPort: http
+ name: http