diff --git a/clusters/cl01tl/manifests/booklore/PhysicalBackup-booklore-mariadb-cluster-backup-external.yaml b/clusters/cl01tl/manifests/booklore/PhysicalBackup-booklore-mariadb-cluster-backup-external.yaml index 34908e033..b0dbc4a6c 100644 --- a/clusters/cl01tl/manifests/booklore/PhysicalBackup-booklore-mariadb-cluster-backup-external.yaml +++ b/clusters/cl01tl/manifests/booklore/PhysicalBackup-booklore-mariadb-cluster-backup-external.yaml @@ -14,7 +14,7 @@ spec: name: booklore-mariadb-cluster namespace: booklore compression: gzip - maxRetention: 720h + maxRetention: 2160h schedule: cron: 0 0 * * 0 immediate: true @@ -33,3 +33,4 @@ spec: name: booklore-mariadb-cluster-backup-secret-external tls: enabled: true + successfulJobsHistoryLimit: 1 diff --git a/clusters/cl01tl/manifests/booklore/PhysicalBackup-booklore-mariadb-cluster-backup-garage.yaml b/clusters/cl01tl/manifests/booklore/PhysicalBackup-booklore-mariadb-cluster-backup-garage.yaml index efd11310e..d785d255b 100644 --- a/clusters/cl01tl/manifests/booklore/PhysicalBackup-booklore-mariadb-cluster-backup-garage.yaml +++ b/clusters/cl01tl/manifests/booklore/PhysicalBackup-booklore-mariadb-cluster-backup-garage.yaml @@ -31,3 +31,4 @@ spec: secretAccessKeySecretKeyRef: key: secret name: booklore-mariadb-cluster-backup-secret-garage + successfulJobsHistoryLimit: 1 diff --git a/clusters/cl01tl/manifests/booklore/PhysicalBackup-booklore-mariadb-cluster-backup-remote.yaml b/clusters/cl01tl/manifests/booklore/PhysicalBackup-booklore-mariadb-cluster-backup-remote.yaml new file mode 100644 index 000000000..cba34f2ac --- /dev/null +++ b/clusters/cl01tl/manifests/booklore/PhysicalBackup-booklore-mariadb-cluster-backup-remote.yaml @@ -0,0 +1,34 @@ +apiVersion: k8s.mariadb.com/v1alpha1 +kind: PhysicalBackup +metadata: + name: booklore-mariadb-cluster-backup-remote + namespace: booklore + labels: + helm.sh/chart: mariadb-cluster-25.10.2 + app.kubernetes.io/name: mariadb-cluster + app.kubernetes.io/instance: booklore + app.kubernetes.io/version: "0.0.0" + app.kubernetes.io/managed-by: Helm +spec: + mariaDbRef: + name: booklore-mariadb-cluster + namespace: booklore + compression: gzip + maxRetention: 2160h + schedule: + cron: 0 0 * * 0 + immediate: true + suspend: false + storage: + s3: + accessKeyIdSecretKeyRef: + key: access + name: booklore-mariadb-cluster-backup-secret-garage + bucket: mariadb-backups + endpoint: garage-ps10rp.boreal-beaufort.ts.net:3900 + prefix: cl01tl/booklore + region: us-east-1 + secretAccessKeySecretKeyRef: + key: secret + name: booklore-mariadb-cluster-backup-secret-garage + successfulJobsHistoryLimit: 1 diff --git a/clusters/cl01tl/manifests/code-server/Deployment-code-server.yaml b/clusters/cl01tl/manifests/code-server/Deployment-code-server.yaml index c4cc84e9c..20bbf330d 100644 --- a/clusters/cl01tl/manifests/code-server/Deployment-code-server.yaml +++ b/clusters/cl01tl/manifests/code-server/Deployment-code-server.yaml @@ -54,9 +54,14 @@ spec: cpu: 10m memory: 128Mi volumeMounts: - - mountPath: /config + - mountPath: /config-new name: config + - mountPath: /config + name: config-old volumes: - name: config + persistentVolumeClaim: + claimName: code-server-config + - name: config-old persistentVolumeClaim: claimName: code-server-nfs-storage diff --git a/clusters/cl01tl/manifests/code-server/ExternalSecret-data-backup-secret-external.yaml b/clusters/cl01tl/manifests/code-server/ExternalSecret-data-backup-secret-external.yaml new file mode 100644 index 000000000..12ffe56e5 --- /dev/null +++ b/clusters/cl01tl/manifests/code-server/ExternalSecret-data-backup-secret-external.yaml @@ -0,0 +1,58 @@ +apiVersion: external-secrets.io/v1 +kind: ExternalSecret +metadata: + name: data-backup-secret-external + namespace: code-server + labels: + helm.sh/chart: volsync-target-data-0.5.0 + app.kubernetes.io/instance: code-server + app.kubernetes.io/part-of: code-server + app.kubernetes.io/version: "0.5.0" + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: data-backup-secret-external +spec: + secretStoreRef: + kind: ClusterSecretStore + name: vault + target: + template: + mergePolicy: Merge + engineVersion: v2 + data: + RESTIC_REPOSITORY: "{{ .BUCKET_ENDPOINT }}/code-server/data" + data: + - secretKey: BUCKET_ENDPOINT + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /volsync/restic/digital-ocean + metadataPolicy: None + property: BUCKET_ENDPOINT + - secretKey: RESTIC_PASSWORD + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /volsync/restic/digital-ocean + metadataPolicy: None + property: RESTIC_PASSWORD + - secretKey: AWS_DEFAULT_REGION + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /digital-ocean/home-infra/volsync-backups + metadataPolicy: None + property: AWS_DEFAULT_REGION + - secretKey: AWS_ACCESS_KEY_ID + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /digital-ocean/home-infra/volsync-backups + metadataPolicy: None + property: AWS_ACCESS_KEY_ID + - secretKey: AWS_SECRET_ACCESS_KEY + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /digital-ocean/home-infra/volsync-backups + metadataPolicy: None + property: AWS_SECRET_ACCESS_KEY diff --git a/clusters/cl01tl/manifests/code-server/ExternalSecret-data-backup-secret-local.yaml b/clusters/cl01tl/manifests/code-server/ExternalSecret-data-backup-secret-local.yaml new file mode 100644 index 000000000..92734c99f --- /dev/null +++ b/clusters/cl01tl/manifests/code-server/ExternalSecret-data-backup-secret-local.yaml @@ -0,0 +1,58 @@ +apiVersion: external-secrets.io/v1 +kind: ExternalSecret +metadata: + name: data-backup-secret-local + namespace: code-server + labels: + helm.sh/chart: volsync-target-data-0.5.0 + app.kubernetes.io/instance: code-server + app.kubernetes.io/part-of: code-server + app.kubernetes.io/version: "0.5.0" + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: data-backup-secret-local +spec: + secretStoreRef: + kind: ClusterSecretStore + name: vault + target: + template: + mergePolicy: Merge + engineVersion: v2 + data: + RESTIC_REPOSITORY: "{{ .BUCKET_ENDPOINT }}/code-server/data" + data: + - secretKey: BUCKET_ENDPOINT + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /volsync/restic/garage-local + metadataPolicy: None + property: BUCKET_ENDPOINT + - secretKey: RESTIC_PASSWORD + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /volsync/restic/garage-local + metadataPolicy: None + property: RESTIC_PASSWORD + - secretKey: AWS_DEFAULT_REGION + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /garage/home-infra/volsync-backups + metadataPolicy: None + property: ACCESS_REGION + - secretKey: AWS_ACCESS_KEY_ID + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /garage/home-infra/volsync-backups + metadataPolicy: None + property: ACCESS_KEY_ID + - secretKey: AWS_SECRET_ACCESS_KEY + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /garage/home-infra/volsync-backups + metadataPolicy: None + property: ACCESS_SECRET_KEY diff --git a/clusters/cl01tl/manifests/code-server/ExternalSecret-data-backup-secret-remote.yaml b/clusters/cl01tl/manifests/code-server/ExternalSecret-data-backup-secret-remote.yaml new file mode 100644 index 000000000..6ac296918 --- /dev/null +++ b/clusters/cl01tl/manifests/code-server/ExternalSecret-data-backup-secret-remote.yaml @@ -0,0 +1,58 @@ +apiVersion: external-secrets.io/v1 +kind: ExternalSecret +metadata: + name: data-backup-secret-remote + namespace: code-server + labels: + helm.sh/chart: volsync-target-data-0.5.0 + app.kubernetes.io/instance: code-server + app.kubernetes.io/part-of: code-server + app.kubernetes.io/version: "0.5.0" + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: data-backup-secret-remote +spec: + secretStoreRef: + kind: ClusterSecretStore + name: vault + target: + template: + mergePolicy: Merge + engineVersion: v2 + data: + RESTIC_REPOSITORY: "{{ .BUCKET_ENDPOINT }}/code-server/data" + data: + - secretKey: BUCKET_ENDPOINT + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /volsync/restic/garage-remote + metadataPolicy: None + property: BUCKET_ENDPOINT + - secretKey: RESTIC_PASSWORD + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /volsync/restic/garage-remote + metadataPolicy: None + property: RESTIC_PASSWORD + - secretKey: AWS_DEFAULT_REGION + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /garage/home-infra/volsync-backups + metadataPolicy: None + property: ACCESS_REGION + - secretKey: AWS_ACCESS_KEY_ID + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /garage/home-infra/volsync-backups + metadataPolicy: None + property: ACCESS_KEY_ID + - secretKey: AWS_SECRET_ACCESS_KEY + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /garage/home-infra/volsync-backups + metadataPolicy: None + property: ACCESS_SECRET_KEY diff --git a/clusters/cl01tl/manifests/code-server/PersistentVolumeClaim-code-server-config.yaml b/clusters/cl01tl/manifests/code-server/PersistentVolumeClaim-code-server-config.yaml new file mode 100644 index 000000000..5b316956a --- /dev/null +++ b/clusters/cl01tl/manifests/code-server/PersistentVolumeClaim-code-server-config.yaml @@ -0,0 +1,19 @@ +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: code-server-config + labels: + app.kubernetes.io/instance: code-server + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: code-server + helm.sh/chart: code-server-4.5.0 + annotations: + helm.sh/resource-policy: keep + namespace: code-server +spec: + accessModes: + - "ReadWriteOnce" + resources: + requests: + storage: "2Gi" + storageClassName: "ceph-block" diff --git a/clusters/cl01tl/manifests/code-server/ReplicationSource-data-backup-source-external.yaml b/clusters/cl01tl/manifests/code-server/ReplicationSource-data-backup-source-external.yaml new file mode 100644 index 000000000..f109b6f11 --- /dev/null +++ b/clusters/cl01tl/manifests/code-server/ReplicationSource-data-backup-source-external.yaml @@ -0,0 +1,29 @@ +apiVersion: volsync.backube/v1alpha1 +kind: ReplicationSource +metadata: + name: data-backup-source-external + namespace: code-server + labels: + helm.sh/chart: volsync-target-data-0.5.0 + app.kubernetes.io/instance: code-server + app.kubernetes.io/part-of: code-server + app.kubernetes.io/version: "0.5.0" + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: data-backup +spec: + sourcePVC: data + trigger: + schedule: 0 4 * * * + restic: + pruneIntervalDays: 7 + repository: data-backup-secret-external + retain: + daily: 3 + hourly: 1 + monthly: 2 + weekly: 2 + yearly: 4 + copyMethod: Snapshot + storageClassName: ceph-block + volumeSnapshotClassName: ceph-blockpool-snapshot + cacheCapacity: 1Gi diff --git a/clusters/cl01tl/manifests/code-server/ReplicationSource-data-backup-source-local.yaml b/clusters/cl01tl/manifests/code-server/ReplicationSource-data-backup-source-local.yaml new file mode 100644 index 000000000..a831bc08f --- /dev/null +++ b/clusters/cl01tl/manifests/code-server/ReplicationSource-data-backup-source-local.yaml @@ -0,0 +1,29 @@ +apiVersion: volsync.backube/v1alpha1 +kind: ReplicationSource +metadata: + name: data-backup-source-local + namespace: code-server + labels: + helm.sh/chart: volsync-target-data-0.5.0 + app.kubernetes.io/instance: code-server + app.kubernetes.io/part-of: code-server + app.kubernetes.io/version: "0.5.0" + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: data-backup +spec: + sourcePVC: data + trigger: + schedule: 0 2 * * * + restic: + pruneIntervalDays: 7 + repository: data-backup-secret-local + retain: + daily: 3 + hourly: 1 + monthly: 2 + weekly: 2 + yearly: 4 + copyMethod: Snapshot + storageClassName: ceph-block + volumeSnapshotClassName: ceph-blockpool-snapshot + cacheCapacity: 1Gi diff --git a/clusters/cl01tl/manifests/code-server/ReplicationSource-data-backup-source-remote.yaml b/clusters/cl01tl/manifests/code-server/ReplicationSource-data-backup-source-remote.yaml new file mode 100644 index 000000000..8fcb934a2 --- /dev/null +++ b/clusters/cl01tl/manifests/code-server/ReplicationSource-data-backup-source-remote.yaml @@ -0,0 +1,29 @@ +apiVersion: volsync.backube/v1alpha1 +kind: ReplicationSource +metadata: + name: data-backup-source-remote + namespace: code-server + labels: + helm.sh/chart: volsync-target-data-0.5.0 + app.kubernetes.io/instance: code-server + app.kubernetes.io/part-of: code-server + app.kubernetes.io/version: "0.5.0" + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: data-backup +spec: + sourcePVC: data + trigger: + schedule: 0 3 * * * + restic: + pruneIntervalDays: 7 + repository: data-backup-secret-remote + retain: + daily: 3 + hourly: 1 + monthly: 2 + weekly: 2 + yearly: 4 + copyMethod: Snapshot + storageClassName: ceph-block + volumeSnapshotClassName: ceph-blockpool-snapshot + cacheCapacity: 1Gi diff --git a/clusters/cl01tl/manifests/homepage/ConfigMap-homepage.yaml b/clusters/cl01tl/manifests/homepage/ConfigMap-homepage.yaml index 79dea6a9d..a7b2b00d3 100644 --- a/clusters/cl01tl/manifests/homepage/ConfigMap-homepage.yaml +++ b/clusters/cl01tl/manifests/homepage/ConfigMap-homepage.yaml @@ -74,7 +74,7 @@ data: href: https://jellyfin.alexlebens.net siteMonitor: http://jellyfin.jellyfin:80 statusStyle: dot - - Jellyfin (Alt: + - Jellyfin (Alt): icon: sh-jellyfin.webp description: Media server (Alternate UI) href: https://jellyfin-vue.alexlebens.net diff --git a/clusters/cl01tl/manifests/homepage/Deployment-homepage.yaml b/clusters/cl01tl/manifests/homepage/Deployment-homepage.yaml index 691630e7b..744608240 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: 518d12f6e6b587145a3309d2bf7fe6a4de5e9a13a8a0554285e12c80d13d0c68 + checksum/configMaps: 2984ee8cd8be3b7e2ae8d51162de5f784476d0a22410a4f354887e6e9c1f8cdd checksum/secrets: d3ba83f111cd32f92c909268c55ad8bbd4f9e299b74b35b33c1a011180d8b378 labels: app.kubernetes.io/controller: main diff --git a/clusters/cl01tl/manifests/jellyfin/HTTPRoute-http-route-jellyfin-vue.yaml b/clusters/cl01tl/manifests/jellyfin/HTTPRoute-http-route-jellyfin-vue.yaml new file mode 100644 index 000000000..4fb824b48 --- /dev/null +++ b/clusters/cl01tl/manifests/jellyfin/HTTPRoute-http-route-jellyfin-vue.yaml @@ -0,0 +1,28 @@ +apiVersion: gateway.networking.k8s.io/v1 +kind: HTTPRoute +metadata: + name: http-route-jellyfin-vue + namespace: jellyfin + labels: + app.kubernetes.io/name: http-route-jellyfin-vue + app.kubernetes.io/instance: jellyfin + app.kubernetes.io/part-of: jellyfin +spec: + parentRefs: + - group: gateway.networking.k8s.io + kind: Gateway + name: traefik-gateway + namespace: traefik + hostnames: + - jellyfin-vue.alexlebens.net + rules: + - matches: + - path: + type: PathPrefix + value: / + backendRefs: + - group: '' + kind: Service + name: jellyfin-vue + port: 80 + weight: 100