1
0
Fork 0

music-assistant: Initial deployment

_Music Assistant_ is pretty straightforward to deploy, despite
upstream's apparent opinion otherwise.  It just needs a small persistent
volume for its media index and customization.  It does need to use the
host network namespace, though, in order to receive multicast
announcements from e.g. AirPlay players, as it doesn't have any way of
statically configuring them.
pull/78/head
Dustin 2025-08-11 20:43:28 -05:00
parent aa27579582
commit ae1d952297
4 changed files with 125 additions and 0 deletions

View File

@ -0,0 +1,20 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: music-assistant
labels:
app.kubernetes.io/name: music-assistant
app.kubernetes.io/component: music-assistant
spec:
ingressClassName: nginx
rules:
- host: music.pyrocufflink.blue
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: music-assistant
port:
name: http

View File

@ -0,0 +1,21 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: music-assistant
labels:
- pairs:
app.kubernetes.io/instance: music-assistant
includeSelectors: true
- pairs:
app.kubernetes.io/part-of: music-assistant
includeTemplates: true
resources:
- namespace.yaml
- music-assistant.yaml
- ingress.yaml
images:
- name: ghcr.io/music-assistant/server
newTag: 2.6.0b18

View File

@ -0,0 +1,78 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: music-assistant
labels: &labels
app.kubernetes.io/name: music-assistant
app.kubernetes.io/component: music-assistant
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
---
apiVersion: v1
kind: Service
metadata:
name: music-assistant
labels: &labels
app.kubernetes.io/name: music-assistant
app.kubernetes.io/component: music-assistant
spec:
ports:
- port: 8095
name: http
selector: *labels
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: music-assistant
labels: &labels
app.kubernetes.io/name: music-assistant
app.kubernetes.io/component: music-assistant
spec:
serviceName: music-assistant
selector:
matchLabels: *labels
template:
metadata:
labels: *labels
spec:
containers:
- name: music-assistant
image: ghcr.io/music-assistant/server
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8095
name: http
readinessProbe: &probe
httpGet:
port: http
path: /
failureThreshold: 3
periodSeconds: 60
successThreshold: 1
timeoutSeconds: 1
startupProbe:
<<: *probe
failureThreshold: 90
periodSeconds: 1
volumeMounts:
- mountPath: /data
name: music-assistant-data
subPath: data
dnsPolicy: ClusterFirstWithHostNet
hostNetwork: true
securityContext:
runAsNonRoot: true
runAsUser: 8095
runAsGroup: 8095
fsGroup: 8095
volumes:
- name: music-assistant-data
persistentVolumeClaim:
claimName: music-assistant

View File

@ -0,0 +1,6 @@
apiVersion: v1
kind: Namespace
metadata:
name: music-assistant
labels:
app.kubernetes.io/name: music-assistant