Compare commits

..
2 Commits
Author SHA1 Message Date
bart c05308417e feat: Separate Icecast streaming server into standalone deployment with standby fallbacks
Sync HTPC Manifests to GitOps / Sync Manifests to GitOps Repo (push) Successful in 6s
2026-11-07 12:50:49 +01:00
bart e6b76d0e26 fix(radio-chicken): set imagePullPolicy to Always to pull latest builds
Sync HTPC Manifests to GitOps / Sync Manifests to GitOps Repo (push) Successful in 6s
2026-11-07 12:17:44 +01:00
4 changed files with 108 additions and 61 deletions
+102
View File
@@ -0,0 +1,102 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: radio-chicken-icecast
namespace: htpc
labels:
app: radio-chicken-icecast
app.kubernetes.io/name: radio-chicken-icecast
app.kubernetes.io/part-of: htpc
spec:
replicas: 1
strategy:
type: Recreate
selector:
matchLabels:
app: radio-chicken-icecast
template:
metadata:
labels:
app: radio-chicken-icecast
app.kubernetes.io/name: radio-chicken-icecast
app.kubernetes.io/part-of: htpc
spec:
nodeSelector:
kubernetes.io/hostname: vmserver
containers:
- name: icecast
image: moul/icecast:latest
imagePullPolicy: IfNotPresent
env:
- name: ICECAST_SOURCE_PASSWORD
value: "hackme"
- name: ICECAST_ADMIN_PASSWORD
value: "hackme"
- name: ICECAST_PASSWORD
value: "hackme"
ports:
- name: icecast
containerPort: 8000
hostPort: 8000
protocol: TCP
resources:
requests:
cpu: 50m
memory: 64Mi
limits:
cpu: 500m
memory: 512Mi
volumeMounts:
- name: icecast-config
mountPath: /etc/icecast2/icecast.xml
subPath: icecast.xml
- name: standby-media
mountPath: /usr/share/icecast2/web/standby.ogg
subPath: standby.ogg
- name: standby-media
mountPath: /usr/share/icecast2/web/standby.mp3
subPath: standby.mp3
- name: standby-media
mountPath: /usr/share/icecast2/web/standby_video.webm
subPath: standby_video.webm
livenessProbe:
httpGet:
path: /status-json.xsl
port: 8000
initialDelaySeconds: 15
periodSeconds: 20
timeoutSeconds: 5
readinessProbe:
httpGet:
path: /status-json.xsl
port: 8000
initialDelaySeconds: 5
periodSeconds: 10
timeoutSeconds: 5
volumes:
- name: icecast-config
configMap:
name: radio-chicken-icecast-config
- name: standby-media
hostPath:
path: /home/bart/jellyfinradio/webroot
type: Directory
---
apiVersion: v1
kind: Service
metadata:
name: radio-chicken-icecast
namespace: htpc
labels:
app: radio-chicken-icecast
app.kubernetes.io/name: radio-chicken-icecast
app.kubernetes.io/part-of: htpc
spec:
type: ClusterIP
selector:
app: radio-chicken-icecast
ports:
- name: http-icecast
port: 8000
targetPort: 8000
protocol: TCP
+5 -57
View File
@@ -52,61 +52,10 @@ spec:
mountPath: /host-radio
readOnly: true
containers:
# Container 1: Icecast Audio & Video Streaming Server
- name: icecast
image: moul/icecast:latest
imagePullPolicy: IfNotPresent
env:
- name: ICECAST_SOURCE_PASSWORD
value: "hackme"
- name: ICECAST_ADMIN_PASSWORD
value: "hackme"
- name: ICECAST_PASSWORD
value: "hackme"
ports:
- name: icecast
containerPort: 8000
hostPort: 8000
protocol: TCP
resources:
requests:
cpu: 50m
memory: 64Mi
limits:
cpu: 500m
memory: 512Mi
volumeMounts:
- name: icecast-config
mountPath: /etc/icecast2/icecast.xml
subPath: icecast.xml
- name: data
mountPath: /usr/share/icecast2/web/standby.ogg
subPath: webroot/standby.ogg
- name: data
mountPath: /usr/share/icecast2/web/standby.mp3
subPath: webroot/standby.mp3
- name: data
mountPath: /usr/share/icecast2/web/standby_video.webm
subPath: webroot/standby_video.webm
livenessProbe:
httpGet:
path: /status-json.xsl
port: 8000
initialDelaySeconds: 15
periodSeconds: 20
timeoutSeconds: 5
readinessProbe:
httpGet:
path: /status-json.xsl
port: 8000
initialDelaySeconds: 5
periodSeconds: 10
timeoutSeconds: 5
# Container 2: Radio Chicken Web Application & Audio/Video Streamer
# Container: Radio Chicken Web Application & Audio/Video Streamer
- name: radio-chicken
image: git.bnhmeijer.nl/bart/radio-chicken:latest
imagePullPolicy: IfNotPresent
imagePullPolicy: Always
securityContext:
privileged: true
env:
@@ -117,7 +66,9 @@ spec:
- name: JELLYFIN_USER_ID
value: "40a220e1e05e4a4395c9b0c6569f6e82"
- name: ICECAST_URL
value: "icecast://source:hackme@127.0.0.1:8000/chicken"
value: "icecast://source:hackme@radio-chicken-icecast:8000/chicken"
- name: ICECAST_STATUS_URL
value: "http://radio-chicken-icecast:8000/status-json.xsl"
- name: VIDEO_ENCODER
value: "h264_vaapi"
- name: VAAPI_DEVICE
@@ -212,9 +163,6 @@ spec:
- name: data
persistentVolumeClaim:
claimName: radio-chicken-data
- name: icecast-config
configMap:
name: radio-chicken-icecast-config
- name: music-videos
hostPath:
path: /datadisk/htpc/music_video
+1
View File
@@ -5,4 +5,5 @@ resources:
- configmap.yaml
- pvc.yaml
- service.yaml
- deployment-icecast.yaml
- deployment.yaml
-4
View File
@@ -15,7 +15,3 @@ spec:
port: 5000
targetPort: 5000
protocol: TCP
- name: http-icecast
port: 8000
targetPort: 8000
protocol: TCP