start using kustomize
All checks were successful
Casa LMS CI/CD Pipeline / deploy (push) Successful in 16s

This commit is contained in:
2025-11-30 21:16:52 +00:00
parent 8f0de6ca92
commit 2649221f92
16 changed files with 205 additions and 184 deletions

View File

@@ -0,0 +1,64 @@
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: lyrionmusicserver
name: lyrionmusicserver
labels:
app: lyrionmusicserver
spec:
replicas: 1
selector:
matchLabels:
app: lyrionmusicserver
template:
metadata:
labels:
app: lyrionmusicserver
spec:
nodeSelector:
role: worker-node
containers:
- name: lyrionmusicserver
image: lmscommunity/lyrionmusicserver
imagePullPolicy: Always
volumeMounts:
- mountPath: /config
name: lyrionmusicserver
- mountPath: /music
readOnly: true
name: music
- mountPath: /playlist
name: playlists
ports:
- name: 9000-web
containerPort: 9000
protocol: TCP
- name: 9090-api
containerPort: 9090
protocol: TCP
- name: 3483-sqz-tcp
containerPort: 3483
hostPort: 3483
protocol: TCP
- name: 3483-sqz-udp
containerPort: 3483
hostPort: 3483
protocol: UDP
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "400m"
volumes:
- name: lyrionmusicserver
persistentVolumeClaim:
claimName: lyrionmusicserver
- name: music
persistentVolumeClaim:
claimName: storage-limbosolutions-com-media-music
- name: playlists
persistentVolumeClaim:
claimName: playlists

View File

@@ -0,0 +1,10 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- deployment.yaml
- service.yaml
- music-pvc.yaml
- lms-data-pvc.yaml
- playlists-pvc.yaml
generatorOptions:
disableNameSuffixHash: true

View File

@@ -0,0 +1,11 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: lyrionmusicserver
namespace: lyrionmusicserver
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi

15
deploy/app/music-pvc.yaml Normal file
View File

@@ -0,0 +1,15 @@
# check permissions on storage source
# lms required o+rx on /music folder to scan
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: storage-limbosolutions-com-media-music
namespace: lyrionmusicserver
spec:
storageClassName: "" # it must stay empty to work, dont know why storage-limbosolutions-com
volumeName: storage-limbosolutions-com-media-music
accessModes:
- ReadOnlyMany
resources:
requests:
storage: 128Gi

View File

@@ -0,0 +1,11 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: playlists
namespace: lyrionmusicserver
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 64Mi

17
deploy/app/service.yaml Normal file
View File

@@ -0,0 +1,17 @@
apiVersion: v1
kind: Service
metadata:
name: lyrionmusicserver
namespace: lyrionmusicserver
labels:
app: lyrionmusicserver
spec:
selector:
app: lyrionmusicserver
ports:
- name: 9000-web
protocol: TCP
port: 9000
targetPort: 9000
type: ClusterIP

View File

@@ -2,7 +2,7 @@ apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: lyrionmusicserver
name: ci-cd
name: ci-cd # change name to continuous-deploy
rules:
- apiGroups: [""]
resources: ["pods", "services", "secrets", "configmaps", "persistentvolumeclaims", "endpoints"]
@@ -10,17 +10,12 @@ rules:
- apiGroups: ["apps"]
resources: ["deployments", "statefulsets"]
verbs: ["get", "watch", "list", "create", "update", "patch", "delete"]
- apiGroups: ["networking.k8s.io"]
resources: ["ingresses"]
verbs: ["get", "watch", "list", "create", "update", "patch", "delete"]
- apiGroups: ["traefik.io"]
resources: ["ingressroutes"]
verbs: ["get", "watch", "list", "create", "update", "patch", "delete"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: ci-cd
name: ci-cd #change name to continuous-deploy
namespace: lyrionmusicserver
subjects:
- kind: ServiceAccount

16
deploy/infra/ingress.yaml Normal file
View File

@@ -0,0 +1,16 @@
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: lyrionmusicserver
namespace: lyrionmusicserver
spec:
entryPoints:
- websecure
routes:
- match: Host(`lms.casa.limbosolutions.com`)
kind: Rule
services:
- name: lyrionmusicserver
port: 9000
tls:
secretName: casa-limbosolutions-com-tls

View File

@@ -0,0 +1,8 @@
kind: Kustomization
resources:
- namespace.yaml
- cd-rbac.yaml
- music-pv.yaml
- ingress.yaml
generatorOptions:
disableNameSuffixHash: true

View File

@@ -9,7 +9,7 @@ spec:
storage: 128Gi
csi:
driver: storage-limbosolutions-com-seaweedfs-csi
volumeHandle: media-music-storage-limbosolutions-com
volumeHandle: storage-limbosolutions-com-media-music
volumeAttributes:
collection: media.music
path: /buckets/media.music

View File

@@ -0,0 +1,7 @@
apiVersion: v1
kind: Namespace
metadata:
name: lyrionmusicserver
labels:
name: lyrionmusicserver

View File

@@ -1,147 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: lyrionmusicserver
namespace: lyrionmusicserver
labels:
app: lyrionmusicserver
spec:
selector:
app: lyrionmusicserver
ports:
- name: 9000-web
protocol: TCP
port: 9000
targetPort: 9000
type: ClusterIP
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: lyrionmusicserver
namespace: lyrionmusicserver
spec:
entryPoints:
- websecure
routes:
- match: Host(`lms.casa.limbosolutions.com`)
kind: Rule
services:
- name: lyrionmusicserver
port: 9000
tls:
secretName: casa-limbosolutions-com-tls
---
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: lyrionmusicserver
name: lyrionmusicserver
labels:
app: lyrionmusicserver
spec:
replicas: 1
selector:
matchLabels:
app: lyrionmusicserver
template:
metadata:
labels:
app: lyrionmusicserver
spec:
nodeSelector:
role: worker-node
containers:
- name: lyrionmusicserver
image: lmscommunity/lyrionmusicserver
imagePullPolicy: Always
volumeMounts:
- mountPath: /config
name: lyrionmusicserver
- mountPath: /music
readOnly: true
name: music
- mountPath: /playlist
name: playlists
ports:
- name: 9000-web
containerPort: 9000
protocol: TCP
- name: 9090-api
containerPort: 9090
protocol: TCP
- name: 3483-sqz-tcp
containerPort: 3483
hostPort: 3483
protocol: TCP
- name: 3483-sqz-udp
containerPort: 3483
hostPort: 3483
protocol: UDP
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "400m"
volumes:
- name: lyrionmusicserver
persistentVolumeClaim:
claimName: lyrionmusicserver
- name: music
persistentVolumeClaim:
claimName: media-music-storage-limbosolutions-com
- name: playlists
persistentVolumeClaim:
claimName: playlists
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: lyrionmusicserver
namespace: lyrionmusicserver
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: playlists
namespace: lyrionmusicserver
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 64Mi
---
# check permissions on storage source
# lms required o+rx on /music folder to scan
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: media-music-storage-limbosolutions-com
namespace: lyrionmusicserver
spec:
storageClassName: "" # it must stay empty to work, dont know why storage-limbosolutions-com
volumeName: storage-limbosolutions-com-media-music
accessModes:
- ReadOnlyMany
resources:
requests:
storage: 128Gi