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
parent
aa27579582
commit
ae1d952297
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -0,0 +1,6 @@
|
|||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: music-assistant
|
||||
labels:
|
||||
app.kubernetes.io/name: music-assistant
|
Loading…
Reference in New Issue