From 905937e358a42fa078bff918ec279637b9b15457 Mon Sep 17 00:00:00 2001 From: Michael Thomson Date: Thu, 23 Jan 2025 10:13:24 -0500 Subject: [PATCH] calibre-web --- .../kustomization-calibre-web.yaml | 18 +++++++++ .../namespaces/namespace-calibre-web.yaml | 4 ++ calibre-web/config.yaml | 10 +++++ calibre-web/deployment.yaml | 38 +++++++++++++++++++ calibre-web/dns-endpoint.yaml | 12 ++++++ calibre-web/ingress.yaml | 24 ++++++++++++ calibre-web/pvc-config.yaml | 12 ++++++ calibre-web/pvc-data.yaml | 12 ++++++ calibre-web/service.yaml | 12 ++++++ 9 files changed, 142 insertions(+) create mode 100644 bootstrap/kustomizations/kustomization-calibre-web.yaml create mode 100644 bootstrap/namespaces/namespace-calibre-web.yaml create mode 100644 calibre-web/config.yaml create mode 100644 calibre-web/deployment.yaml create mode 100644 calibre-web/dns-endpoint.yaml create mode 100644 calibre-web/ingress.yaml create mode 100644 calibre-web/pvc-config.yaml create mode 100644 calibre-web/pvc-data.yaml create mode 100644 calibre-web/service.yaml diff --git a/bootstrap/kustomizations/kustomization-calibre-web.yaml b/bootstrap/kustomizations/kustomization-calibre-web.yaml new file mode 100644 index 0000000..4d61b6f --- /dev/null +++ b/bootstrap/kustomizations/kustomization-calibre-web.yaml @@ -0,0 +1,18 @@ +apiVersion: kustomize.toolkit.fluxcd.io/v1 +kind: Kustomization +metadata: + name: calibre-web + namespace: flux-system +spec: + interval: 15m + path: ./calibre-web + prune: true # remove any elements later removed from the above path + timeout: 2m # if not set, this defaults to interval duration, which is 1h + sourceRef: + kind: GitRepository + name: flux-system + healthChecks: + - apiVersion: apps/v1 + kind: Deployment + name: calibre-web + namespace: calibre-web diff --git a/bootstrap/namespaces/namespace-calibre-web.yaml b/bootstrap/namespaces/namespace-calibre-web.yaml new file mode 100644 index 0000000..d950ea2 --- /dev/null +++ b/bootstrap/namespaces/namespace-calibre-web.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: calibre-web diff --git a/calibre-web/config.yaml b/calibre-web/config.yaml new file mode 100644 index 0000000..502c8a4 --- /dev/null +++ b/calibre-web/config.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: calibre-web-config + namespace: calibre-web +data: + PUID: "1000" + PGID: "1000" + TZ: "America/Toronto" + DOCKER_MODS: "linuxserver/mods:universal-calibre" diff --git a/calibre-web/deployment.yaml b/calibre-web/deployment.yaml new file mode 100644 index 0000000..5afd908 --- /dev/null +++ b/calibre-web/deployment.yaml @@ -0,0 +1,38 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: calibre-web + namespace: calibre-web +spec: + selector: + matchLabels: + app: calibre-web + template: + metadata: + labels: + app: calibre-web + spec: + containers: + - name: calibre-web + image: lscr.io/linuxserver/calibre-web:latest + imagePullPolicy: Always + envFrom: + - configMapRef: + name: calibre-web-config + optional: false + ports: + - containerPort: 8083 + name: http + protocol: TCP + volumeMounts: + - name: config + mountPath: /config + - mountPath: /books + name: data + volumes: + - name: config + persistentVolumeClaim: + claimName: calibre-web-config + - name: data + persistentVolumeClaim: + claimName: calibre-web-data diff --git a/calibre-web/dns-endpoint.yaml b/calibre-web/dns-endpoint.yaml new file mode 100644 index 0000000..1b55174 --- /dev/null +++ b/calibre-web/dns-endpoint.yaml @@ -0,0 +1,12 @@ +apiVersion: externaldns.k8s.io/v1alpha1 +kind: DNSEndpoint +metadata: + name: calibre.michaelthomson.dev + namespace: calibre-web +spec: + endpoints: + - dnsName: calibre.michaelthomson.dev + recordTTL: 180 + recordType: CNAME + targets: + - server.michaelthomson.dev diff --git a/calibre-web/ingress.yaml b/calibre-web/ingress.yaml new file mode 100644 index 0000000..243e432 --- /dev/null +++ b/calibre-web/ingress.yaml @@ -0,0 +1,24 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: calibre-web + namespace: calibre-web + annotations: + traefik.ingress.kubernetes.io/router.entrypoints: websecure + traefik.ingress.kubernetes.io/router.tls: "true" +spec: + rules: + - host: calibre-web.michaelthomson.dev + http: + paths: + - pathType: ImplementationSpecific + path: / + backend: + service: + name: calibre-web + port: + name: http + tls: + - hosts: + - calibre-web.michaelthomson.dev + secretName: letsencrypt-wildcard-cert-michaelthomson.dev diff --git a/calibre-web/pvc-config.yaml b/calibre-web/pvc-config.yaml new file mode 100644 index 0000000..cc3d078 --- /dev/null +++ b/calibre-web/pvc-config.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: calibre-web-config + namespace: calibre-web +spec: + resources: + requests: + storage: 4Gi + storageClassName: longhorn + accessModes: + - ReadWriteOnce diff --git a/calibre-web/pvc-data.yaml b/calibre-web/pvc-data.yaml new file mode 100644 index 0000000..3d02bcb --- /dev/null +++ b/calibre-web/pvc-data.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: calibre-web-data + namespace: calibre-web +spec: + accessModes: + - ReadWriteOnce + storageClassName: nfs-client + resources: + requests: + storage: 1Ti diff --git a/calibre-web/service.yaml b/calibre-web/service.yaml new file mode 100644 index 0000000..a99217e --- /dev/null +++ b/calibre-web/service.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: Service +metadata: + name: calibre-web + namespace: calibre-web +spec: + selector: + app: calibre-web + ports: + - port: 80 + targetPort: http + name: http