diff --git a/clusters/cl01tl/manifests/blocky/ConfigMap-blocky.yaml b/clusters/cl01tl/manifests/blocky/ConfigMap-blocky.yaml index 33297152b..569959eec 100644 --- a/clusters/cl01tl/manifests/blocky/ConfigMap-blocky.yaml +++ b/clusters/cl01tl/manifests/blocky/ConfigMap-blocky.yaml @@ -122,6 +122,7 @@ data: komodo IN CNAME traefik-cl01tl lidarr IN CNAME traefik-cl01tl mail IN CNAME traefik-cl01tl + movie-roulette IN CNAME traefik-cl01tl music-grabber IN CNAME traefik-cl01tl navidrome IN CNAME traefik-cl01tl ntfy IN CNAME traefik-cl01tl diff --git a/clusters/cl01tl/manifests/blocky/Deployment-blocky.yaml b/clusters/cl01tl/manifests/blocky/Deployment-blocky.yaml index 141c1d062..3bf049b0d 100644 --- a/clusters/cl01tl/manifests/blocky/Deployment-blocky.yaml +++ b/clusters/cl01tl/manifests/blocky/Deployment-blocky.yaml @@ -22,7 +22,7 @@ spec: template: metadata: annotations: - checksum/configMaps: 110955fba1983c72b1a5c84b7496f01e080049e9118295ed91976e545bb34dd8 + checksum/configMaps: 0507ebbebae473812f0ac690ba8a1b134615a71597698d395330ce6bfb9f4c21 labels: app.kubernetes.io/controller: main app.kubernetes.io/instance: blocky diff --git a/clusters/cl01tl/manifests/gatus/ConfigMap-gatus.yaml b/clusters/cl01tl/manifests/gatus/ConfigMap-gatus.yaml index a4bcd384e..5a8315fca 100644 --- a/clusters/cl01tl/manifests/gatus/ConfigMap-gatus.yaml +++ b/clusters/cl01tl/manifests/gatus/ConfigMap-gatus.yaml @@ -60,6 +60,15 @@ data: interval: 30s name: yamtrack url: https://yamtrack.alexlebens.net + - alerts: + - type: ntfy + conditions: + - '[STATUS] == 200' + - '[CERTIFICATE_EXPIRATION] > 240h' + group: core + interval: 30s + name: movie-roulette + url: https://movie-roulette.alexlebens.net - alerts: - type: ntfy conditions: diff --git a/clusters/cl01tl/manifests/gatus/Deployment-gatus.yaml b/clusters/cl01tl/manifests/gatus/Deployment-gatus.yaml index 05f8c260f..50047478c 100644 --- a/clusters/cl01tl/manifests/gatus/Deployment-gatus.yaml +++ b/clusters/cl01tl/manifests/gatus/Deployment-gatus.yaml @@ -26,7 +26,7 @@ spec: app.kubernetes.io/name: gatus app.kubernetes.io/instance: gatus annotations: - checksum/config: d76358254349c6de26a01030efc00da14b8bae8304d04a0687ce9e75dfa1a1b6 + checksum/config: e7ff0d97d8a5b3e05a45de210f22c29a1c207f1994b267bae1ea514965330fe1 spec: serviceAccountName: default automountServiceAccountToken: false diff --git a/clusters/cl01tl/manifests/homepage/ConfigMap-homepage.yaml b/clusters/cl01tl/manifests/homepage/ConfigMap-homepage.yaml index 00052d565..3afbbab31 100644 --- a/clusters/cl01tl/manifests/homepage/ConfigMap-homepage.yaml +++ b/clusters/cl01tl/manifests/homepage/ConfigMap-homepage.yaml @@ -92,6 +92,12 @@ data: href: https://yamtrack.alexlebens.net siteMonitor: http://yamtrack.yamtrack:80 statusStyle: dot + - Movie Roulette: + icon: https://raw.githubusercontent.com/sahara101/Movie-Roulette/refs/heads/main/static/icons/icon-512x512.png + description: Movie Roulette + href: https://movie-roulette.alexlebens.net + siteMonitor: http://movie-roulette.movie-roulette:80 + statusStyle: dot - Movies and TV: icon: sh-jellyfin.webp description: Jellyfin diff --git a/clusters/cl01tl/manifests/homepage/Deployment-homepage.yaml b/clusters/cl01tl/manifests/homepage/Deployment-homepage.yaml index 68d208c73..10fca6b0b 100644 --- a/clusters/cl01tl/manifests/homepage/Deployment-homepage.yaml +++ b/clusters/cl01tl/manifests/homepage/Deployment-homepage.yaml @@ -24,7 +24,7 @@ spec: template: metadata: annotations: - checksum/configMaps: 5c637e0850c43e318deda60c6550c6fd4e2fc408a4bf0e0734f2f4bf1c67b021 + checksum/configMaps: 7364f3842a6ab13b1705fb0cca90e52ebf53e77724fbf011d747a9546eee35af checksum/secrets: d3ba83f111cd32f92c909268c55ad8bbd4f9e299b74b35b33c1a011180d8b378 labels: app.kubernetes.io/controller: main diff --git a/clusters/cl01tl/manifests/movie-roulette/Deployment-movie-roulette.yaml b/clusters/cl01tl/manifests/movie-roulette/Deployment-movie-roulette.yaml new file mode 100644 index 000000000..e00c65729 --- /dev/null +++ b/clusters/cl01tl/manifests/movie-roulette/Deployment-movie-roulette.yaml @@ -0,0 +1,109 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: movie-roulette + labels: + app.kubernetes.io/controller: main + app.kubernetes.io/instance: movie-roulette + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: movie-roulette + helm.sh/chart: movie-roulette-4.6.2 + namespace: movie-roulette +spec: + revisionHistoryLimit: 3 + replicas: 1 + strategy: + type: Recreate + selector: + matchLabels: + app.kubernetes.io/controller: main + app.kubernetes.io/name: movie-roulette + app.kubernetes.io/instance: movie-roulette + template: + metadata: + labels: + app.kubernetes.io/controller: main + app.kubernetes.io/instance: movie-roulette + app.kubernetes.io/name: movie-roulette + spec: + enableServiceLinks: false + serviceAccountName: default + automountServiceAccountToken: true + hostIPC: false + hostNetwork: false + hostPID: false + dnsPolicy: ClusterFirst + containers: + - env: + - name: FLASK_SECRET_KEY + valueFrom: + secretKeyRef: + key: secret-key + name: movie-roulette-config-secret + - name: CORS_ALLOWED_ORIGINS + value: movie-roulette.alexlebens.net + - name: DISABLE_SETTINGS + value: "TRUE" + - name: AUTH_ENABLED + value: "TRUE" + - name: AUTH_SESSION_LIFETIME + value: "86400" + - name: JELLYFIN_URL + value: http://jellyfin.alexlebens.net + - name: JELLYFIN_API_KEY + valueFrom: + secretKeyRef: + key: jellyfin-key + name: movie-roulette-config-secret + - name: JELLYFIN_USER_ID + valueFrom: + secretKeyRef: + key: jellyfin-user + name: movie-roulette-config-secret + - name: LOGIN_BACKDROP_ENABLED + value: "TRUE" + - name: HOMEPAGE_MODE + value: "FALSE" + - name: USE_LINKS + value: "TRUE" + - name: USE_FILTER + value: "TRUE" + - name: USE_WATCH_BUTTON + value: "TRUE" + - name: USE_NEXT_BUTTON + value: "TRUE" + - name: USE_GRID_VIEW + value: "true" + - name: ENABLE_MOBILE_TRUNCATION + value: "TRUE" + - name: SHOW_NOW_WATCHING_CARD + value: "FALSE" + - name: USE_HEROUI_THEME + value: "FALSE" + - name: ENABLE_MOVIE_LOGOS + value: "TRUE" + - name: LOAD_MOVIE_ON_START + value: "FALSE" + - name: SEERR_URL + value: http://seerr.alexlebens.net + - name: SEERR_API_KEY + valueFrom: + secretKeyRef: + key: seerr-key + name: movie-roulette-config-secret + - name: REQUEST_SERVICE_DEFAULT + value: seerr + image: ghcr.io/sahara101/movie-roulette:v5.2.1 + imagePullPolicy: IfNotPresent + name: main + resources: + requests: + cpu: 10m + memory: 128Mi + volumeMounts: + - mountPath: /config + name: data + volumes: + - name: data + persistentVolumeClaim: + claimName: movie-roulette-data diff --git a/clusters/cl01tl/manifests/movie-roulette/ExternalSecret-movie-roulette-config-secret.yaml b/clusters/cl01tl/manifests/movie-roulette/ExternalSecret-movie-roulette-config-secret.yaml new file mode 100644 index 000000000..4e0f2c3c4 --- /dev/null +++ b/clusters/cl01tl/manifests/movie-roulette/ExternalSecret-movie-roulette-config-secret.yaml @@ -0,0 +1,42 @@ +apiVersion: external-secrets.io/v1 +kind: ExternalSecret +metadata: + name: movie-roulette-config-secret + namespace: movie-roulette + labels: + app.kubernetes.io/name: movie-roulette-config-secret + app.kubernetes.io/instance: movie-roulette + app.kubernetes.io/part-of: movie-roulette +spec: + secretStoreRef: + kind: ClusterSecretStore + name: vault + data: + - secretKey: secret-key + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /cl01tl/movie-roulette/key + metadataPolicy: None + property: secret-key + - secretKey: jellyfin-key + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /cl01tl/jellyfin/movie-roulette + metadataPolicy: None + property: jellyfin-key + - secretKey: jellyfin-user + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /cl01tl/jellyfin/movie-roulette + metadataPolicy: None + property: user + - secretKey: seerr-key + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /cl01tl/seerr/key + metadataPolicy: None + property: key diff --git a/clusters/cl01tl/manifests/movie-roulette/HTTPRoute-movie-roulette.yaml b/clusters/cl01tl/manifests/movie-roulette/HTTPRoute-movie-roulette.yaml new file mode 100644 index 000000000..632f6ddce --- /dev/null +++ b/clusters/cl01tl/manifests/movie-roulette/HTTPRoute-movie-roulette.yaml @@ -0,0 +1,30 @@ +apiVersion: gateway.networking.k8s.io/v1 +kind: HTTPRoute +metadata: + name: movie-roulette + labels: + app.kubernetes.io/instance: movie-roulette + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: movie-roulette + helm.sh/chart: movie-roulette-4.6.2 + namespace: movie-roulette +spec: + parentRefs: + - group: gateway.networking.k8s.io + kind: Gateway + name: traefik-gateway + namespace: traefik + hostnames: + - "movie-roulette.alexlebens.net" + rules: + - backendRefs: + - group: "" + kind: Service + name: movie-roulette + namespace: movie-roulette + port: 80 + weight: 100 + matches: + - path: + type: PathPrefix + value: / diff --git a/clusters/cl01tl/manifests/movie-roulette/PersistentVolumeClaim-movie-roulette-data.yaml b/clusters/cl01tl/manifests/movie-roulette/PersistentVolumeClaim-movie-roulette-data.yaml new file mode 100644 index 000000000..06156629a --- /dev/null +++ b/clusters/cl01tl/manifests/movie-roulette/PersistentVolumeClaim-movie-roulette-data.yaml @@ -0,0 +1,19 @@ +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: movie-roulette-data + labels: + app.kubernetes.io/instance: movie-roulette + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: movie-roulette + helm.sh/chart: movie-roulette-4.6.2 + annotations: + helm.sh/resource-policy: keep + namespace: movie-roulette +spec: + accessModes: + - "ReadWriteOnce" + resources: + requests: + storage: "1Gi" + storageClassName: "ceph-block" diff --git a/clusters/cl01tl/manifests/movie-roulette/Service-movie-roulette.yaml b/clusters/cl01tl/manifests/movie-roulette/Service-movie-roulette.yaml new file mode 100644 index 000000000..97b4be6e8 --- /dev/null +++ b/clusters/cl01tl/manifests/movie-roulette/Service-movie-roulette.yaml @@ -0,0 +1,22 @@ +apiVersion: v1 +kind: Service +metadata: + name: movie-roulette + labels: + app.kubernetes.io/instance: movie-roulette + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: movie-roulette + app.kubernetes.io/service: movie-roulette + helm.sh/chart: movie-roulette-4.6.2 + namespace: movie-roulette +spec: + type: ClusterIP + ports: + - port: 80 + targetPort: 80 + protocol: TCP + name: http + selector: + app.kubernetes.io/controller: main + app.kubernetes.io/instance: movie-roulette + app.kubernetes.io/name: movie-roulette