initial checkin

This commit is contained in:
Radar231 2021-09-18 08:25:27 -04:00
commit 068c1e463d
8 changed files with 212 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
*_secret.yml

7
README.md Normal file
View File

@ -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.

67
navidrome_deployment.yml Normal file
View File

@ -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

19
navidrome_ingress.yml Normal file
View File

@ -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

41
navidrome_pv.yml Normal file
View File

@ -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

37
navidrome_pvc.yml Normal file
View File

@ -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

25
navidrome_secret.yml.tmpl Normal file
View File

@ -0,0 +1,25 @@
#############################################
# - creds for api integrations for navidrome
# - generate value using;
# echo -n '<text>' | 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

14
navidrome_service.yml Normal file
View File

@ -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