commit 068c1e463d28cac0e991e9ce3d72efa2f6d559cc Author: Radar231 Date: Sat Sep 18 08:25:27 2021 -0400 initial checkin diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7387e24 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*_secret.yml + diff --git a/README.md b/README.md new file mode 100644 index 0000000..b529040 --- /dev/null +++ b/README.md @@ -0,0 +1,7 @@ +# mstream k8s manifest + +## Introduction + +This deploys an mstream music streaming server, pointing at the /Media/Music +directory on the synology NAS. + diff --git a/navidrome_deployment.yml b/navidrome_deployment.yml new file mode 100644 index 0000000..f3f06b4 --- /dev/null +++ b/navidrome_deployment.yml @@ -0,0 +1,67 @@ +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: navidrome +spec: + selector: + matchLabels: + app: navidrome + replicas: 1 + strategy: + type: Recreate + template: + metadata: + labels: + app: navidrome + spec: + affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: beta.kubernetes.io/arch + operator: In + values: + - arm64 + containers: + - name: navidrome + image: deluan/navidrome:latest + env: + - name: LastFM.ApiKey + valueFrom: + secretKeyRef: + name: lastfm-api + key: LASTFM_APIKEY + - name: LastFM.Secret + valueFrom: + secretKeyRef: + name: lastfm-api + key: LASTFM_SECRET + - name: Spotify.ID + valueFrom: + secretKeyRef: + name: spotify-api + key: SPOTIFY_ID + - name: Spotify.Secret + valueFrom: + secretKeyRef: + name: spotify-api + key: SPOTIFY_SECRET + ports: + - containerPort: 4533 + name: "navidrome" + volumeMounts: + - name: navidrome-data + mountPath: "/data" + - name: navidrome-music + mountPath: "/music" + volumes: + - name: navidrome-data + persistentVolumeClaim: + claimName: navidrome-data-pvc + - name: navidrome-music + persistentVolumeClaim: + claimName: navidrome-music-pvc + +# EOF diff --git a/navidrome_ingress.yml b/navidrome_ingress.yml new file mode 100644 index 0000000..d4a7997 --- /dev/null +++ b/navidrome_ingress.yml @@ -0,0 +1,19 @@ +--- +apiVersion: extensions/v1beta1 +kind: Ingress +metadata: + name: navidrome + annotations: + kubernetes.io/ingress.class: traefik +spec: + rules: + - host: navidrome.lan + http: + paths: + - path: / + pathType: Prefix + backend: + serviceName: navidrome + servicePort: 4533 + +# EOF diff --git a/navidrome_pv.yml b/navidrome_pv.yml new file mode 100644 index 0000000..66e5fe7 --- /dev/null +++ b/navidrome_pv.yml @@ -0,0 +1,41 @@ +--- +apiVersion: v1 +kind: PersistentVolume +metadata: + name: navidrome-data-pv + labels: + name: navidrome-data-pv +spec: + storageClassName: manual + capacity: + storage: 1Gi + accessModes: + - ReadWriteOnce + mountOptions: + - hard + - nfsvers=4.0 + nfs: + server: 192.168.7.11 + path: "/volume1/k8s-storage/navidrome-data" + +--- +apiVersion: v1 +kind: PersistentVolume +metadata: + name: navidrome-music-pv + labels: + name: navidrome-music-pv +spec: + storageClassName: manual + capacity: + storage: 1Gi + accessModes: + - ReadOnlyMany + mountOptions: + - hard + - nfsvers=4.0 + nfs: + server: 192.168.7.11 + path: "/volume1/Music" + +# EOF diff --git a/navidrome_pvc.yml b/navidrome_pvc.yml new file mode 100644 index 0000000..bba1cc5 --- /dev/null +++ b/navidrome_pvc.yml @@ -0,0 +1,37 @@ +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: navidrome-data-pvc + labels: + app: navidrome +spec: + accessModes: + - ReadWriteOnce + storageClassName: "manual" + resources: + requests: + storage: 1Gi + selector: + matchLabels: + name: navidrome-data-pv + +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: navidrome-music-pvc + labels: + app: navidrome +spec: + accessModes: + - ReadOnlyMany + storageClassName: "manual" + resources: + requests: + storage: 1Gi + selector: + matchLabels: + name: navidrome-music-pv + +# EOF diff --git a/navidrome_secret.yml.tmpl b/navidrome_secret.yml.tmpl new file mode 100644 index 0000000..bddba4d --- /dev/null +++ b/navidrome_secret.yml.tmpl @@ -0,0 +1,25 @@ +############################################# +# - creds for api integrations for navidrome +# - generate value using; +# echo -n '' | base64 +############################################# + +--- +apiVersion: v1 +kind: Secret +metadata: + name: lastfm-api +data: + LASTFM_APIKEY: xxxxxxx + LASTFM_SECRET: xxxxxxx + +--- +apiVersion: v1 +kind: Secret +metadata: + name: spotify-api +data: + SPOTIFY_ID: xxxxxxx + SPOTIFY_SECRET: xxxxxxx + +# EOF diff --git a/navidrome_service.yml b/navidrome_service.yml new file mode 100644 index 0000000..9c7891e --- /dev/null +++ b/navidrome_service.yml @@ -0,0 +1,14 @@ +--- +apiVersion: v1 +kind: Service +metadata: + name: navidrome +spec: + ports: + - name: http + port: 4533 + selector: + # apply service to any pod with label app: nginx + app: navidrome + +# EOF