diff --git a/apps/avahi-reflector/daemonset.yaml b/apps/avahi-reflector/daemonset.yaml new file mode 100644 index 0000000..e852275 --- /dev/null +++ b/apps/avahi-reflector/daemonset.yaml @@ -0,0 +1,25 @@ +apiVersion: apps/v1 +kind: DaemonSet +metadata: + name: avahi-reflector +spec: + selector: + matchLabels: + app: avahi-reflector + template: + metadata: + labels: + app: avahi-reflector + spec: + hostNetwork: true + containers: + - name: avahi-reflector + image: avahi-reflector + securityContext: + privileged: true # required for raw sockets + env: + - name: REFLECTOR_ENABLE_REFLECTOR + value: "yes" + - name: SERVER_ALLOW_INTERFACES + # use all interfaces + value: "" diff --git a/apps/avahi-reflector/kustomization.yaml b/apps/avahi-reflector/kustomization.yaml new file mode 100644 index 0000000..3d648a0 --- /dev/null +++ b/apps/avahi-reflector/kustomization.yaml @@ -0,0 +1,14 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +namespace: avahi + +resources: + - namespace.yaml + - daemonset.yaml + # - configmap.yaml + +images: + - name: avahi-reflector + newName: flungo/avahi + newTag: latest diff --git a/apps/avahi-reflector/namespace.yaml b/apps/avahi-reflector/namespace.yaml new file mode 100644 index 0000000..dee57b9 --- /dev/null +++ b/apps/avahi-reflector/namespace.yaml @@ -0,0 +1,6 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: placeholder + labels: + pod-security.kubernetes.io/enforce: privileged diff --git a/apps/musicassistant/deployment.yaml b/apps/musicassistant/deployment.yaml new file mode 100644 index 0000000..9f4e6bd --- /dev/null +++ b/apps/musicassistant/deployment.yaml @@ -0,0 +1,43 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: musicassistant +spec: + selector: + matchLabels: + app: musicassistant + template: + metadata: + labels: + app: musicassistant + spec: + containers: + - name: musicassistant + image: musicassistant + resources: + limits: + memory: "2Gi" + cpu: "2" + requests: + memory: "128Mi" + cpu: "250m" + ports: + # ports required for musicassistant + - containerPort: 80 + - containerPort: 443 + - containerPort: 8097 + - containerPort: 8095 + # name: musicassistant-web + - containerPort: 1704 + - containerPort: 1705 + + env: + - name: TZ + value: Europe/Berlin + volumeMounts: + - name: data + mountPath: /data + volumes: + - name: data + persistentVolumeClaim: + claimName: data diff --git a/apps/musicassistant/ingress.yaml b/apps/musicassistant/ingress.yaml new file mode 100644 index 0000000..205a045 --- /dev/null +++ b/apps/musicassistant/ingress.yaml @@ -0,0 +1,17 @@ +apiVersion: traefik.io/v1alpha1 +kind: IngressRoute +metadata: + name: musicassistant-ingressroute + +spec: + entryPoints: + - websecure + routes: + - match: Host(`musicassistant.kluster.moll.re`) + kind: Rule + services: + - name: musicassistant-web + port: musicassistant-web + + tls: + certResolver: default-tls diff --git a/apps/musicassistant/kustomization.yaml b/apps/musicassistant/kustomization.yaml new file mode 100644 index 0000000..fdcf91c --- /dev/null +++ b/apps/musicassistant/kustomization.yaml @@ -0,0 +1,17 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +namespace: musicassistant + +resources: + - namespace.yaml + - pvc.yaml + - deployment.yaml + - service.yaml + # - ingress.yaml + + +images: + - name: musicassistant + newName: ghcr.io/music-assistant/server + newTag: 2.6.0 diff --git a/apps/musicassistant/namespace.yaml b/apps/musicassistant/namespace.yaml new file mode 100644 index 0000000..0a074bd --- /dev/null +++ b/apps/musicassistant/namespace.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: placeholder diff --git a/apps/musicassistant/pvc.yaml b/apps/musicassistant/pvc.yaml new file mode 100644 index 0000000..411c1dc --- /dev/null +++ b/apps/musicassistant/pvc.yaml @@ -0,0 +1,11 @@ +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: data +spec: + storageClassName: "nfs-client" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi diff --git a/apps/musicassistant/service.yaml b/apps/musicassistant/service.yaml new file mode 100644 index 0000000..3e21327 --- /dev/null +++ b/apps/musicassistant/service.yaml @@ -0,0 +1,41 @@ +apiVersion: v1 +kind: Service +metadata: + name: musicassistant +spec: + selector: + app: musicassistant + ports: + - port: 80 + targetPort: 80 + name: required-first + - port: 443 + targetPort: 443 + name: required-second + - port: 8097 + targetPort: 8097 + name: required-third + - port: 8095 + targetPort: 8095 + name: required-fourth + - port: 1704 + targetPort: 1704 + name: required-fifth + - port: 1705 + targetPort: 1705 + name: required-sixth + type: LoadBalancer + loadBalancerIP: 192.168.3.5 +--- +apiVersion: v1 +kind: Service +metadata: + name: musicassistant-web +spec: + selector: + app: musicassistant + ports: + - port: 8095 + targetPort: 8095 + name: musicassistant-web + type: ClusterIP diff --git a/apps/snapcast/deployment.yaml b/apps/snapcast/deployment.yaml new file mode 100644 index 0000000..e938cfe --- /dev/null +++ b/apps/snapcast/deployment.yaml @@ -0,0 +1,101 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: snapcast +spec: + selector: + matchLabels: + app: snapcast + template: + metadata: + labels: + app: snapcast + spec: + containers: + - name: snapcast + image: snapcast + resources: + limits: + memory: "2Gi" + cpu: "2" + requests: + memory: "128Mi" + cpu: "250m" + ports: + # snapcast ports + - containerPort: 1704 + - containerPort: 1705 + # web interface + - containerPort: 1780 + - containerPort: 1788 + # avahi + - containerPort: 5353 + # airplay + - containerPort: 3689 + - containerPort: 5000 + - containerPort: 6000 + - containerPort: 6001 + - containerPort: 6002 + - containerPort: 6003 + - containerPort: 6004 + - containerPort: 6005 + - containerPort: 6006 + - containerPort: 6007 + - containerPort: 6008 + - containerPort: 6009 + - containerPort: 7000 + - containerPort: 319 + - containerPort: 320 + + env: + - name: TZ + value: Europe/Berlin + - name: AIRPLAY_CONFIG_ENABLED + value: "0" + - name: SPOTIFY_CONFIG_ENABLED + value: "0" + volumeMounts: + - name: pipe + mountPath: /mnt/pipe + + + - name: librespot + image: librespot + resources: + limits: + memory: "2Gi" + cpu: "2" + requests: + memory: "128Mi" + cpu: "250m" + # ports: + env: + - name: BACKEND + value: pipe + - name: DEVICE + value: /mnt/pipe/spotipipe + volumeMounts: + - name: pipe + mountPath: /mnt/pipe + volumes: + - name: pipe + emptyDir: {} + + + # - name: SPOTIFY_ACCESS_TOKEN + # value: BQBxGPPPXZTXF7WTBzJItu3KNkeoZu2j2-Rlk1RmtnmXvzPh1fWFpOT2VeXwWxMJXlBYwxSOTo1ZKk3hAr08OhDhbQChi6KDl6qEmK-Y8Wq8g3EoP7M-oRnHt4WFMg1zC1C37t90nQUKZ-F9UdSuL9A6Ny6V6pYsai1bUspOU0q5UHn6-Dv9E8gwEKXOPMlBKEXNi1D0sT2m9rzwI7UK1g7ToRPn03eqGe41RRvlfrSCgf41tg + + + # - name: SPOTIFY_EXTRA_ARGS + # value: " --disable-discovery --access-token BQBxGPPPXZTXF7WTBzJItu3KNkeoZu2j2-Rlk1RmtnmXvzPh1fWFpOT2VeXwWxMJXlBYwxSOTo1ZKk3hAr08OhDhbQChi6KDl6qEmK-Y8Wq8g3EoP7M-oRnHt4WFMg1zC1C37t90nQUKZ-F9UdSuL9A6Ny6V6pYsai1bUspOU0q5UHn6-Dv9E8gwEKXOPMlBKEXNi1D0sT2m9rzwI7UK1g7ToRPn03eqGe41RRvlfrSCgf41tg" + # volumeMounts: + # - name: config + # mountPath: /config + # - name: snapserver-config + # mountPath: /root/.config/ + # volumes: + # - name: config + # secret: + # secretName: snapcast-config + # - name: snapserver-config + # emptyDir: {} diff --git a/apps/snapcast/kustomization.yaml b/apps/snapcast/kustomization.yaml new file mode 100644 index 0000000..f4a3d63 --- /dev/null +++ b/apps/snapcast/kustomization.yaml @@ -0,0 +1,18 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +namespace: snapcast + +resources: + - namespace.yaml + - deployment.yaml + - service.yaml + - snapcast-config.secret.yaml + +images: + - name: snapcast + newName: ghcr.io/firefrei/snapcast/server + newTag: latest + - name: librespot + newName: giof71/librespot + newTag: latest diff --git a/apps/snapcast/namespace.yaml b/apps/snapcast/namespace.yaml new file mode 100644 index 0000000..0a074bd --- /dev/null +++ b/apps/snapcast/namespace.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: placeholder diff --git a/apps/snapcast/pvc.yaml b/apps/snapcast/pvc.yaml new file mode 100644 index 0000000..411c1dc --- /dev/null +++ b/apps/snapcast/pvc.yaml @@ -0,0 +1,11 @@ +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: data +spec: + storageClassName: "nfs-client" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi diff --git a/apps/snapcast/service.yaml b/apps/snapcast/service.yaml new file mode 100644 index 0000000..b8d510a --- /dev/null +++ b/apps/snapcast/service.yaml @@ -0,0 +1,86 @@ +apiVersion: v1 +kind: Service +metadata: + name: snapcast +spec: + selector: + app: snapcast + ports: + - name: snapcast + port: 1704 + targetPort: 1704 + protocol: TCP + - name: snapcast-ctl + port: 1705 + targetPort: 1705 + protocol: TCP + - name: web + port: 1780 + targetPort: 1780 + protocol: TCP + - name: web-alt + port: 1788 + targetPort: 1788 + protocol: TCP + # - name: airplay-3689 + # port: 3689 + # targetPort: 3689 + # protocol: TCP + # - name: airplay-5000 + # port: 5000 + # targetPort: 5000 + # protocol: TCP + # - name: airplay-6000 + # port: 6000 + # targetPort: 6000 + # protocol: TCP + # - name: airplay-6001 + # port: 6001 + # targetPort: 6001 + # protocol: TCP + # - name: airplay-6002 + # port: 6002 + # targetPort: 6002 + # protocol: TCP + # - name: airplay-6003 + # port: 6003 + # targetPort: 6003 + # protocol: TCP + # - name: airplay-6004 + # port: 6004 + # targetPort: 6004 + # protocol: TCP + # - name: airplay-6005 + # port: 6005 + # targetPort: 6005 + # protocol: TCP + # - name: airplay-6006 + # port: 6006 + # targetPort: 6006 + # protocol: TCP + # - name: airplay-6007 + # port: 6007 + # targetPort: 6007 + # protocol: TCP + # - name: airplay-6008 + # port: 6008 + # targetPort: 6008 + # protocol: TCP + # - name: airplay-6009 + # port: 6009 + # targetPort: 6009 + # protocol: TCP + # - name: airplay-7000 + # port: 7000 + # targetPort: 7000 + # protocol: TCP + # - name: airplay-319 + # port: 319 + # targetPort: 319 + # protocol: UDP + # - name: airplay-320 + # port: 320 + # targetPort: 320 + # protocol: UDP + type: LoadBalancer + loadBalancerIP: 192.168.3.5