diff --git a/data-restorer.yaml b/data-restorer.yaml index 1026756..2a0fe88 100644 --- a/data-restorer.yaml +++ b/data-restorer.yaml @@ -7,11 +7,11 @@ spec: containers: - name: alpine image: alpine:latest - command: ["/bin/sh", "-c", "apk add --no-cache vim && sleep infinity"] + command: ["/bin/sh", "-c", "apk add --no-cache vim rsync coreutils && sleep infinity"] volumeMounts: - mountPath: /restore name: target-volume volumes: - name: target-volume persistentVolumeClaim: - claimName: jellyfin-config-pvc + claimName: jellyseerr-data-pvc diff --git a/services/jellyseerr/jellyseerr-deployment.yaml b/services/jellyseerr/jellyseerr-deployment.yaml index b807b9b..f648ce0 100644 --- a/services/jellyseerr/jellyseerr-deployment.yaml +++ b/services/jellyseerr/jellyseerr-deployment.yaml @@ -1,26 +1,20 @@ apiVersion: apps/v1 kind: Deployment metadata: - annotations: - kompose.cmd: kompose convert -f compose-jellyfin.yaml - kompose.version: 1.38.0 (HEAD) labels: - io.kompose.service: jellyseerr + app: jellyseerr name: jellyseerr spec: replicas: 1 selector: matchLabels: - io.kompose.service: jellyseerr + app: jellyseerr strategy: type: Recreate template: metadata: - annotations: - kompose.cmd: kompose convert -f compose-jellyfin.yaml - kompose.version: 1.38.0 (HEAD) labels: - io.kompose.service: jellyseerr + app: jellyseerr spec: containers: - env: @@ -32,7 +26,7 @@ spec: value: "3000" - name: TZ value: America/New_York - image: fallenbagel/jellyseerr:latest + image: fallenbagel/jellyseerr:preview-OIDC name: jellyseerr ports: - containerPort: 5055 @@ -46,18 +40,3 @@ spec: - name: jellyseerr-volume persistentVolumeClaim: claimName: jellyseerr-data-pvc ---- -apiVersion: v1 -kind: PersistentVolumeClaim -metadata: - name: jellyseerr-data-pvc - labels: - recurring-job.longhorn.io/source: "enabled" - recurring-job-group.longhorn.io/app-config-group: "enabled" -spec: - accessModes: - - ReadWriteOnce - storageClassName: longhorn - resources: - requests: - storage: 20Mi diff --git a/services/jellyseerr/jellyseerr-ingress.yaml b/services/jellyseerr/jellyseerr-ingress.yaml index 3dd18cb..a61127f 100644 --- a/services/jellyseerr/jellyseerr-ingress.yaml +++ b/services/jellyseerr/jellyseerr-ingress.yaml @@ -4,10 +4,16 @@ metadata: name: jellyseerr-ingress namespace: default annotations: - traefik.ingress.kubernetes.io/router.entrypoints: web + cert-manager.io/cluster-issuer: "letsencrypt-prod" + traefik.ingress.kubernetes.io/router.entrypoints: websecure + traefik.ingress.kubernetes.io/router.tls: "true" spec: + tls: + - hosts: + - stork.mynest.love + secretName: jellyseerr-tls rules: - - host: jellyseerr.k3s.home.nest + - host: stork.mynest.love http: paths: - path: / diff --git a/services/jellyseerr/jellyseerr-pvc.yaml b/services/jellyseerr/jellyseerr-pvc.yaml new file mode 100644 index 0000000..e0ba9aa --- /dev/null +++ b/services/jellyseerr/jellyseerr-pvc.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: jellyseerr-data-pvc + labels: + recurring-job.longhorn.io/source: "enabled" + recurring-job-group.longhorn.io/app-config-group: "enabled" +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 20Mi diff --git a/services/jellyseerr/jellyseerr-service.yaml b/services/jellyseerr/jellyseerr-service.yaml index dc4bc68..1ac4a0b 100644 --- a/services/jellyseerr/jellyseerr-service.yaml +++ b/services/jellyseerr/jellyseerr-service.yaml @@ -1,11 +1,8 @@ apiVersion: v1 kind: Service metadata: - annotations: - kompose.cmd: kompose convert -f compose-jellyfin.yaml - kompose.version: 1.38.0 (HEAD) labels: - io.kompose.service: jellyseerr + app: jellyseerr name: jellyseerr spec: type: ClusterIP @@ -14,4 +11,4 @@ spec: port: 80 targetPort: web-ui selector: - io.kompose.service: jellyseerr + app: jellyseerr diff --git a/services/musicseerr/musicseerr-deployment.yaml b/services/musicseerr/musicseerr-deployment.yaml new file mode 100644 index 0000000..19709b4 --- /dev/null +++ b/services/musicseerr/musicseerr-deployment.yaml @@ -0,0 +1,91 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: musicseerr + name: musicseerr + namespace: default +spec: + replicas: 1 + selector: + matchLabels: + app: musicseerr + strategy: + type: Recreate + template: + metadata: + labels: + app: musicseerr + spec: + containers: + - name: musicseerr + image: ghcr.io/habirabbu/musicseerr:latest + ports: + - containerPort: 8688 + protocol: TCP + name: web-ui + envFrom: + - secretRef: + name: musicseerr-secrets + env: + - name: PUID + value: "1000" + - name: PGID + value: "1000" + - name: PORT + value: "8688" + - name: TZ + value: "America/New_York" + - name: UVICORN_PROXY_HEADERS + value: "true" + - name: UVICORN_FORWARDED_ALLOW_IPS + value: "*" + volumeMounts: + - mountPath: /app/config + name: musicseerr-config + - mountPath: /app/cache + name: musicseerr-cache + - mountPath: /music + name: yarr + restartPolicy: Always + volumes: + - name: musicseerr-config + persistentVolumeClaim: + claimName: musicseerr-config-pvc + - name: musicseerr-cache + persistentVolumeClaim: + claimName: musicseerr-cache-pvc + - name: yarr + nfs: + server: robin.home.nest + path: /yarr/media +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: musicseerr-config-pvc + labels: + recurring-job.longhorn.io/source: "enabled" + recurring-job-group.longhorn.io/app-config-group: "enabled" +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 3Gi +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: musicseerr-cache-pvc + labels: + recurring-job.longhorn.io/source: "enabled" + recurring-job-group.longhorn.io/app-config-group: "enabled" +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 3Gi diff --git a/services/musicseerr/musicseerr-external-secrets.yaml b/services/musicseerr/musicseerr-external-secrets.yaml new file mode 100644 index 0000000..9a1eb45 --- /dev/null +++ b/services/musicseerr/musicseerr-external-secrets.yaml @@ -0,0 +1,22 @@ +apiVersion: external-secrets.io/v1 +kind: ExternalSecret +metadata: + name: musicseerr-secrets + namespace: default +spec: + refreshInterval: "1h" + secretStoreRef: + name: vault-external-secrets-store + kind: ClusterSecretStore + target: + name: musicseerr-secrets + creationPolicy: Owner + data: + - secretKey: OIDC_CLIENT_ID + remoteRef: + key: oauth2-proxy/musicseerr + property: client-id + - secretKey: OIDC_CLIENT_SECRET + remoteRef: + key: oauth2-proxy/musicseerr + property: client-secret diff --git a/services/musicseerr/musicseerr-ingress.yaml b/services/musicseerr/musicseerr-ingress.yaml new file mode 100644 index 0000000..71a3f75 --- /dev/null +++ b/services/musicseerr/musicseerr-ingress.yaml @@ -0,0 +1,26 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: musicseerr-ingress + namespace: default + annotations: + cert-manager.io/cluster-issuer: "letsencrypt-prod" + traefik.ingress.kubernetes.io/router.entrypoints: websecure + traefik.ingress.kubernetes.io/router.tls: "true" + traefik.ingress.kubernetes.io/custom-request-headers: "X-Forwarded-Proto:https" +spec: + tls: + - hosts: + - heron.mynest.love + secretName: musicseerr-tls + rules: + - host: heron.mynest.love + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: musicseerr + port: + name: http-web diff --git a/services/musicseerr/musicseerr-service.yaml b/services/musicseerr/musicseerr-service.yaml new file mode 100644 index 0000000..538e82a --- /dev/null +++ b/services/musicseerr/musicseerr-service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app: musicseerr + name: musicseerr + namespace: default +spec: + type: ClusterIP + ports: + - name: http-web + port: 80 + targetPort: web-ui + selector: + app: musicseerr