From 0f20fa0b5afbcc19d67ba93bb8a3ce6126fe0ff5 Mon Sep 17 00:00:00 2001 From: Morten Olsen Date: Mon, 8 Sep 2025 20:13:23 +0200 Subject: [PATCH] stuff --- charts/apps/calibre-web/Chart.yaml | 3 ++ charts/apps/calibre-web/templates/client.yaml | 10 ++++ .../calibre-web/templates/deployment.yaml | 42 ++++++++++++++++ .../templates/external-http-service.yaml | 11 +++++ .../calibre-web/templates/http-service.yaml | 11 +++++ charts/apps/calibre-web/templates/pvc.yaml | 11 +++++ .../apps/calibre-web/templates/service.yaml | 15 ++++++ charts/apps/calibre-web/values.yaml | 9 ++++ charts/apps/readeck/Chart.yaml | 3 ++ charts/apps/readeck/templates/deployment.yaml | 35 ++++++++++++++ .../templates/external-http-service.yaml | 11 +++++ .../apps/readeck/templates/http-service.yaml | 11 +++++ charts/apps/readeck/templates/pvc.yaml | 11 +++++ charts/apps/readeck/templates/service.yaml | 15 ++++++ charts/apps/readeck/values.yaml | 9 ++++ charts/backup/templates/client.yaml | 10 ++++ charts/backup/templates/deployment.yaml | 48 +++++++++++++++++++ charts/backup/templates/http-service.yaml | 11 +++++ charts/backup/templates/pvc.yaml | 11 +++++ charts/backup/templates/service.yaml | 15 ++++++ charts/backup/values.yaml | 9 ++++ 21 files changed, 311 insertions(+) create mode 100644 charts/apps/calibre-web/Chart.yaml create mode 100644 charts/apps/calibre-web/templates/client.yaml create mode 100644 charts/apps/calibre-web/templates/deployment.yaml create mode 100644 charts/apps/calibre-web/templates/external-http-service.yaml create mode 100644 charts/apps/calibre-web/templates/http-service.yaml create mode 100644 charts/apps/calibre-web/templates/pvc.yaml create mode 100644 charts/apps/calibre-web/templates/service.yaml create mode 100644 charts/apps/calibre-web/values.yaml create mode 100644 charts/apps/readeck/Chart.yaml create mode 100644 charts/apps/readeck/templates/deployment.yaml create mode 100644 charts/apps/readeck/templates/external-http-service.yaml create mode 100644 charts/apps/readeck/templates/http-service.yaml create mode 100644 charts/apps/readeck/templates/pvc.yaml create mode 100644 charts/apps/readeck/templates/service.yaml create mode 100644 charts/apps/readeck/values.yaml create mode 100644 charts/backup/templates/client.yaml create mode 100644 charts/backup/templates/deployment.yaml create mode 100644 charts/backup/templates/http-service.yaml create mode 100644 charts/backup/templates/pvc.yaml create mode 100644 charts/backup/templates/service.yaml diff --git a/charts/apps/calibre-web/Chart.yaml b/charts/apps/calibre-web/Chart.yaml new file mode 100644 index 0000000..81961cb --- /dev/null +++ b/charts/apps/calibre-web/Chart.yaml @@ -0,0 +1,3 @@ +apiVersion: v2 +version: 1.0.0 +name: calibre-web diff --git a/charts/apps/calibre-web/templates/client.yaml b/charts/apps/calibre-web/templates/client.yaml new file mode 100644 index 0000000..60befa2 --- /dev/null +++ b/charts/apps/calibre-web/templates/client.yaml @@ -0,0 +1,10 @@ +apiVersion: homelab.mortenolsen.pro/v1 +kind: OidcClient +metadata: + name: '{{ .Release.Name }}' +spec: + environment: '{{ .Values.globals.environment }}' + redirectUris: + - path: /api/auth/oidc/callback + subdomain: '{{ .Values.subdomain }}' + matchingMode: strict diff --git a/charts/apps/calibre-web/templates/deployment.yaml b/charts/apps/calibre-web/templates/deployment.yaml new file mode 100644 index 0000000..c22a5a2 --- /dev/null +++ b/charts/apps/calibre-web/templates/deployment.yaml @@ -0,0 +1,42 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: "{{ .Release.Name }}" + labels: + app: "{{ .Release.Name }}" +spec: + replicas: 1 + selector: + matchLabels: + app: "{{ .Release.Name }}" + template: + metadata: + labels: + app: "{{ .Release.Name }}" + spec: + containers: + - name: "{{ .Release.Name }}" + image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" + imagePullPolicy: "{{ .Values.image.pullPolicy }}" + ports: + - containerPort: 8083 + name: http + env: + - name: TZ + value: "{{ .Values.globals.timezone }}" + - name: PUID + value: "1000" + - name: PGID + value: "1000" + volumeMounts: + - mountPath: /config + name: data + - mountPath: /books + name: books + volumes: + - name: data + persistentVolumeClaim: + claimName: "{{ .Release.Name }}-data" + - name: books + persistentVolumeClaim: + claimName: books diff --git a/charts/apps/calibre-web/templates/external-http-service.yaml b/charts/apps/calibre-web/templates/external-http-service.yaml new file mode 100644 index 0000000..e28916d --- /dev/null +++ b/charts/apps/calibre-web/templates/external-http-service.yaml @@ -0,0 +1,11 @@ +apiVersion: homelab.mortenolsen.pro/v1 +kind: ExternalHttpService +metadata: + name: '{{ .Release.Name }}' +spec: + environment: '{{ .Values.globals.environment }}' + subdomain: '{{ .Values.subdomain }}' + destination: + host: '{{ .Release.Name }}.{{ .Release.Namespace }}.svc.cluster.local' + port: + number: 80 diff --git a/charts/apps/calibre-web/templates/http-service.yaml b/charts/apps/calibre-web/templates/http-service.yaml new file mode 100644 index 0000000..15b1989 --- /dev/null +++ b/charts/apps/calibre-web/templates/http-service.yaml @@ -0,0 +1,11 @@ +apiVersion: homelab.mortenolsen.pro/v1 +kind: HttpService +metadata: + name: "{{ .Release.Name }}" +spec: + environment: "{{ .Values.globals.environment }}" + subdomain: "{{ .Values.subdomain }}" + destination: + host: "{{ .Release.Name }}" + port: + number: 80 diff --git a/charts/apps/calibre-web/templates/pvc.yaml b/charts/apps/calibre-web/templates/pvc.yaml new file mode 100644 index 0000000..bc1d0a6 --- /dev/null +++ b/charts/apps/calibre-web/templates/pvc.yaml @@ -0,0 +1,11 @@ +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: '{{ .Release.Name }}-data' +spec: + accessModes: + - 'ReadWriteOnce' + resources: + requests: + storage: '1Gi' + storageClassName: '{{ .Values.globals.environment }}' diff --git a/charts/apps/calibre-web/templates/service.yaml b/charts/apps/calibre-web/templates/service.yaml new file mode 100644 index 0000000..75b8c54 --- /dev/null +++ b/charts/apps/calibre-web/templates/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: "{{ .Release.Name }}" + labels: + app: "{{ .Release.Name }}" +spec: + type: ClusterIP + ports: + - port: 80 + targetPort: 8083 + protocol: TCP + name: http + selector: + app: "{{ .Release.Name }}" diff --git a/charts/apps/calibre-web/values.yaml b/charts/apps/calibre-web/values.yaml new file mode 100644 index 0000000..4daa692 --- /dev/null +++ b/charts/apps/calibre-web/values.yaml @@ -0,0 +1,9 @@ +globals: + environment: prod + domain: olsen.cloud + timezone: Europe/Amsterdam +image: + repository: lscr.io/linuxserver/calibre-web + tag: latest + pullPolicy: IfNotPresent +subdomain: calibre-web diff --git a/charts/apps/readeck/Chart.yaml b/charts/apps/readeck/Chart.yaml new file mode 100644 index 0000000..71ce3d0 --- /dev/null +++ b/charts/apps/readeck/Chart.yaml @@ -0,0 +1,3 @@ +apiVersion: v2 +version: 1.0.0 +name: readeck diff --git a/charts/apps/readeck/templates/deployment.yaml b/charts/apps/readeck/templates/deployment.yaml new file mode 100644 index 0000000..9eb77d8 --- /dev/null +++ b/charts/apps/readeck/templates/deployment.yaml @@ -0,0 +1,35 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: "{{ .Release.Name }}" + labels: + app: "{{ .Release.Name }}" +spec: + replicas: 1 + selector: + matchLabels: + app: "{{ .Release.Name }}" + template: + metadata: + labels: + app: "{{ .Release.Name }}" + spec: + containers: + - name: "{{ .Release.Name }}" + image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" + imagePullPolicy: "{{ .Values.image.pullPolicy }}" + ports: + - containerPort: 8000 + name: http + env: + - name: TZ + value: "{{ .Values.globals.timezone }}" + - name: READECK_SERVER_HOST + value: "0.0.0.0" + volumeMounts: + - mountPath: /readeck + name: data + volumes: + - name: data + persistentVolumeClaim: + claimName: "{{ .Release.Name }}-data" diff --git a/charts/apps/readeck/templates/external-http-service.yaml b/charts/apps/readeck/templates/external-http-service.yaml new file mode 100644 index 0000000..e28916d --- /dev/null +++ b/charts/apps/readeck/templates/external-http-service.yaml @@ -0,0 +1,11 @@ +apiVersion: homelab.mortenolsen.pro/v1 +kind: ExternalHttpService +metadata: + name: '{{ .Release.Name }}' +spec: + environment: '{{ .Values.globals.environment }}' + subdomain: '{{ .Values.subdomain }}' + destination: + host: '{{ .Release.Name }}.{{ .Release.Namespace }}.svc.cluster.local' + port: + number: 80 diff --git a/charts/apps/readeck/templates/http-service.yaml b/charts/apps/readeck/templates/http-service.yaml new file mode 100644 index 0000000..15b1989 --- /dev/null +++ b/charts/apps/readeck/templates/http-service.yaml @@ -0,0 +1,11 @@ +apiVersion: homelab.mortenolsen.pro/v1 +kind: HttpService +metadata: + name: "{{ .Release.Name }}" +spec: + environment: "{{ .Values.globals.environment }}" + subdomain: "{{ .Values.subdomain }}" + destination: + host: "{{ .Release.Name }}" + port: + number: 80 diff --git a/charts/apps/readeck/templates/pvc.yaml b/charts/apps/readeck/templates/pvc.yaml new file mode 100644 index 0000000..bc1d0a6 --- /dev/null +++ b/charts/apps/readeck/templates/pvc.yaml @@ -0,0 +1,11 @@ +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: '{{ .Release.Name }}-data' +spec: + accessModes: + - 'ReadWriteOnce' + resources: + requests: + storage: '1Gi' + storageClassName: '{{ .Values.globals.environment }}' diff --git a/charts/apps/readeck/templates/service.yaml b/charts/apps/readeck/templates/service.yaml new file mode 100644 index 0000000..f7001fc --- /dev/null +++ b/charts/apps/readeck/templates/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: "{{ .Release.Name }}" + labels: + app: "{{ .Release.Name }}" +spec: + type: ClusterIP + ports: + - port: 80 + targetPort: 8000 + protocol: TCP + name: http + selector: + app: "{{ .Release.Name }}" diff --git a/charts/apps/readeck/values.yaml b/charts/apps/readeck/values.yaml new file mode 100644 index 0000000..6924e2d --- /dev/null +++ b/charts/apps/readeck/values.yaml @@ -0,0 +1,9 @@ +globals: + environment: prod + domain: olsen.cloud + timezone: Europe/Amsterdam +image: + repository: codeberg.org/readeck/readeck + tag: latest + pullPolicy: IfNotPresent +subdomain: readeck diff --git a/charts/backup/templates/client.yaml b/charts/backup/templates/client.yaml new file mode 100644 index 0000000..8299b34 --- /dev/null +++ b/charts/backup/templates/client.yaml @@ -0,0 +1,10 @@ +apiVersion: homelab.mortenolsen.pro/v1 +kind: OidcClient +metadata: + name: '{{ .Release.Name }}' +spec: + environment: '{{ .Values.globals.environment }}' + redirectUris: + - path: /oauth/oidc/callback + subdomain: '{{ .Values.subdomain }}' + matchingMode: strict diff --git a/charts/backup/templates/deployment.yaml b/charts/backup/templates/deployment.yaml new file mode 100644 index 0000000..c76fee0 --- /dev/null +++ b/charts/backup/templates/deployment.yaml @@ -0,0 +1,48 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: "{{ .Release.Name }}" +spec: + strategy: + type: Recreate + replicas: 1 + selector: + matchLabels: + app: "{{ .Release.Name }}" + template: + metadata: + labels: + app: "{{ .Release.Name }}" + spec: + containers: + - name: "{{ .Release.Name }}" + image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" + imagePullPolicy: "{{ .Values.image.pullPolicy }}" + ports: + - name: http + containerPort: 9898 + protocol: TCP + livenessProbe: + tcpSocket: + port: http + readinessProbe: + tcpSocket: + port: http + env: + - name: TZ + value: "{{ .Values.globals.timezone }}" + - name: BASE_URL + value: https://{{ .Values.subdomain }}.{{ .Values.globals.domain }} + volumeMounts: + - mountPath: /data + name: data + - mountPath: /backups + name: backups + + volumes: + - name: data + persistentVolumeClaim: + claimName: "{{ .Release.Name }}-data" + - name: backups + persistentVolumeClaim: + claimName: "{{ .Values.target }}" diff --git a/charts/backup/templates/http-service.yaml b/charts/backup/templates/http-service.yaml new file mode 100644 index 0000000..15b1989 --- /dev/null +++ b/charts/backup/templates/http-service.yaml @@ -0,0 +1,11 @@ +apiVersion: homelab.mortenolsen.pro/v1 +kind: HttpService +metadata: + name: "{{ .Release.Name }}" +spec: + environment: "{{ .Values.globals.environment }}" + subdomain: "{{ .Values.subdomain }}" + destination: + host: "{{ .Release.Name }}" + port: + number: 80 diff --git a/charts/backup/templates/pvc.yaml b/charts/backup/templates/pvc.yaml new file mode 100644 index 0000000..bc1d0a6 --- /dev/null +++ b/charts/backup/templates/pvc.yaml @@ -0,0 +1,11 @@ +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: '{{ .Release.Name }}-data' +spec: + accessModes: + - 'ReadWriteOnce' + resources: + requests: + storage: '1Gi' + storageClassName: '{{ .Values.globals.environment }}' diff --git a/charts/backup/templates/service.yaml b/charts/backup/templates/service.yaml new file mode 100644 index 0000000..4d55614 --- /dev/null +++ b/charts/backup/templates/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: "{{ .Release.Name }}" + labels: + app: "{{ .Release.Name }}" +spec: + type: ClusterIP + ports: + - port: 80 + targetPort: 9898 + protocol: TCP + name: http + selector: + app: "{{ .Release.Name }}" diff --git a/charts/backup/values.yaml b/charts/backup/values.yaml index d468666..94c14fc 100644 --- a/charts/backup/values.yaml +++ b/charts/backup/values.yaml @@ -1,3 +1,12 @@ +globals: + environment: prod + timezone: Europe/Amsterdam + domain: olsen.cloud +image: + repository: garethgeorge/backrest + tag: latest + pullPolicy: IfNotPresent +subdomain: restic password: name: backup key: password