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.
This commit is contained in:
20
music-assistant/ingress.yaml
Normal file
20
music-assistant/ingress.yaml
Normal 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
|
||||
21
music-assistant/kustomization.yaml
Normal file
21
music-assistant/kustomization.yaml
Normal 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
|
||||
78
music-assistant/music-assistant.yaml
Normal file
78
music-assistant/music-assistant.yaml
Normal 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
|
||||
6
music-assistant/namespace.yaml
Normal file
6
music-assistant/namespace.yaml
Normal file
@@ -0,0 +1,6 @@
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: music-assistant
|
||||
labels:
|
||||
app.kubernetes.io/name: music-assistant
|
||||
Reference in New Issue
Block a user