music-assistant added

This commit is contained in:
Philip Haupt
2026-03-26 15:24:24 +01:00
parent 227d5948e5
commit f1bc35976f
4 changed files with 353 additions and 0 deletions

View File

@@ -0,0 +1,6 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- main.yaml

93
music-assistant/main.yaml Normal file
View File

@@ -0,0 +1,93 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
labels:
app.kubernetes.io/instance: music-assistant
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: music-assistant
app.kubernetes.io/version: 2.7.11
helm.sh/chart: music-assistant-0.3.5
name: music-assistant-data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
storageClassName: openebs-3-replicas
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app.kubernetes.io/instance: music-assistant
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: music-assistant
app.kubernetes.io/version: 2.7.11
helm.sh/chart: music-assistant-0.3.5
name: music-assistant
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/instance: music-assistant
app.kubernetes.io/name: music-assistant
strategy:
type: Recreate
template:
metadata:
labels:
app.kubernetes.io/instance: music-assistant
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: music-assistant
app.kubernetes.io/version: 2.7.11
helm.sh/chart: music-assistant-0.3.5
spec:
containers:
- image: ghcr.io/music-assistant/server:2.8.0
imagePullPolicy: IfNotPresent
livenessProbe:
failureThreshold: 3
httpGet:
path: /
port: web
initialDelaySeconds: 60
periodSeconds: 30
timeoutSeconds: 10
name: music-assistant
ports:
- containerPort: 8095
name: web
protocol: TCP
- containerPort: 8097
name: stream
protocol: TCP
readinessProbe:
failureThreshold: 3
httpGet:
path: /
port: web
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 5
securityContext:
runAsGroup: 0
runAsNonRoot: false
runAsUser: 0
startupProbe:
failureThreshold: 30
httpGet:
path: /
port: web
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 5
volumeMounts:
- mountPath: /data
name: data
dnsPolicy: ClusterFirst
hostNetwork: true
volumes:
- name: data
persistentVolumeClaim:
claimName: music-assistant-data

View File

@@ -0,0 +1,12 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
helmCharts:
- name: music-assistant
repo: https://bdclark.github.io/helm-charts
version: 0.3.5
releaseName: music-assistant
includeCRDs: true
namespace: music-assistant
valuesFile: values.yaml

View File

@@ -0,0 +1,242 @@
# Default values for music-assistant.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
# Container image configuration
image:
# -- Image repository
repository: ghcr.io/music-assistant/server
# -- Image tag (defaults to appVersion)
tag: "2.8.0"
# -- Image pull policy
pullPolicy: IfNotPresent
# -- Secrets for pulling images from private repositories
imagePullSecrets: []
# -- Override the chart name
nameOverride: ""
# -- Override the full release name
fullnameOverride: ""
# -- Annotations for the Deployment.
deploymentAnnotations: {}
# -- Additional labels for the Deployment.
extraDeploymentLabels: {}
# -- Extra labels applied to the pod
podLabels: {}
# -- Pod annotations applied to the Music Assistant pod
podAnnotations: {}
# Example Multi-CNI configuration:
# k8s.v1.cni.cncf.io/networks: "mac-vlan-vlan100"
# Example monitoring annotation:
# prometheus.io/scrape: "false" # MA doesn't expose metrics yet
# -- Labels to add to all resources.
commonLabels: {}
# app.kubernetes.io/part-of: media-stack
# app.kubernetes.io/component: music
# -- Pod security context
podSecurityContext: {}
# fsGroup: 568
# -- Resource requests/limits for the pod
resources: {}
# limits:
# cpu: 1000m
# memory: 1Gi
# requests:
# cpu: 100m
# memory: 256Mi
# Container security context
securityContext:
# -- Whether to run the container as non-root
runAsNonRoot: false # Default false for current MA images
# -- User ID to run the container as
runAsUser: 0 # Default 0, configurable for custom images
# -- Group ID to run the container as
runAsGroup: 0 # Default 0, configurable for custom images
# Capabilities for advanced use cases (SMB/network shares, local media access)
# Default: no additional capabilities for better security
capabilities:
enabled: false
add: []
# Example capabilities for advanced features:
# add:
# - DAC_READ_SEARCH # Required for SMB/network share access
# - SYS_ADMIN # Required for mounting network shares
drop:
- ALL
# -- Run the pod in the node network namespace
hostNetwork: true
# -- DNS policy when using host networking
dnsPolicy: ClusterFirst
# Expose ports via hostPort instead of hostNetwork
hostPort:
# -- Enable hostPort configuration
enabled: false
# -- Host port for the web interface
webPort: 8095
# -- Host port for audio streaming
streamPort: 8097
# Service configuration (use when hostNetwork=false)
service:
# -- Create Service resources
enabled: false
# -- Service type (ClusterIP/LoadBalancer/NodePort)
type: ClusterIP
# -- Additional service annotations
annotations: {}
# MetalLB examples:
# metallb.universe.tf/address-pool: "production-public-ips"
# Cloud provider examples:
# service.beta.kubernetes.io/aws-load-balancer-type: "nlb"
# Port configuration
# -- Port for the web interface
webPort: 8095 # Music Assistant web interface
# -- Port for audio streaming
streamPort: 8097 # Audio streaming port
# LoadBalancer configuration
# -- Static IP for LoadBalancer services
loadBalancerIP: ""
# -- Allowed source ranges for LoadBalancer
loadBalancerSourceRanges: []
# External traffic policy for LoadBalancer and NodePort
# -- Preserve client IP (Local) or use Cluster routing
externalTrafficPolicy: Cluster
# Session affinity for service
# -- Service session affinity mode
sessionAffinity: None
# Ingress configuration (web interface only)
ingress:
# -- Enable ingress
enabled: false
# -- Ingress class name
className: ""
# -- Additional ingress annotations
annotations: {}
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: "true"
# nginx.ingress.kubernetes.io/proxy-body-size: "0"
# -- Ingress rules configuration
hosts:
- host: music-assistant.local
paths:
- path: /
pathType: Prefix
# -- TLS configuration for ingress
tls: []
# - secretName: music-assistant-tls
# hosts:
# - music-assistant.local
# Persistent storage for configuration/database
persistence:
# -- Enable persistent volume for Music Assistant data
enabled: true
# -- Storage class for PVC
# Set to "-" to disable dynamic provisioning and use default storage class
# Set to "" to use cluster default storage class
storageClass: openebs-3-replicas
# -- Access modes for the PVC
accessModes:
- ReadWriteOnce
# -- Requested PVC size
size: 2Gi
# -- Use an existing PVC instead of creating a new one
# If defined, PVC must be created manually before volume will be bound
existingClaim: ""
# -- Annotations for PVC
annotations: {}
# k8up.io/backup: "true"
# -- Deployment update strategy (default: Recreate when persistence.enabled)
strategy: {}
# type: RollingUpdate
# rollingUpdate:
# maxSurge: 0
# maxUnavailable: 1
# -- Extra volumes to mount (e.g., media libraries)
additionalVolumes: []
# - name: media-nfs
# nfs:
# server: nas.example.com
# path: /volume1/media
# - name: media-local
# hostPath:
# path: /mnt/media
# type: Directory
# -- Additional volume mounts matching `additionalVolumes`
additionalMounts: []
# - name: media-nfs
# mountPath: /media/nfs
# readOnly: true
# - name: media-local
# mountPath: /media/local
# readOnly: true
# -- Extra environment variables for the container
env: []
# - name: MA_LOG_LEVEL
# value: "INFO"
# - name: TZ
# value: "America/New_York"
# -- Environment sources (ConfigMap/Secret refs)
envFrom: []
# - configMapRef:
# name: music-assistant-config
# - secretRef:
# name: music-assistant-secrets
# -- Liveness probe configuration
livenessProbe:
httpGet:
path: /
port: web
initialDelaySeconds: 60
periodSeconds: 30
timeoutSeconds: 10
failureThreshold: 3
# -- Readiness probe configuration
readinessProbe:
httpGet:
path: /
port: web
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 3
# -- Startup probe configuration
startupProbe:
httpGet:
path: /
port: web
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 30
# -- Node selector for scheduling
nodeSelector: {}
# -- Pod tolerations
tolerations: []
# -- Pod affinity/anti-affinity rules
affinity: {}