chore(apps): add kavita

This commit is contained in:
David Landry 2024-01-21 22:27:26 -05:00
parent 7896171b41
commit 11d2dc44d1
14 changed files with 318 additions and 0 deletions

View file

@ -0,0 +1,14 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
creationTimestamp: null
labels:
io.kompose.service: kavita-email-config-pvc
name: kavita-email-config-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Mi
status: {}

View file

@ -0,0 +1,52 @@
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
kompose.cmd: kompose convert -f docker-compose.yml
kompose.version: 1.31.2 (HEAD)
creationTimestamp: null
labels:
io.kompose.service: kavita-email
name: kavita-email
spec:
replicas: 0
selector:
matchLabels:
io.kompose.service: kavita-email
strategy:
type: Recreate
template:
metadata:
annotations:
kompose.cmd: kompose convert -f docker-compose.yml
kompose.version: 1.31.2 (HEAD)
creationTimestamp: null
labels:
io.kompose.network/ebooks-default: "true"
io.kompose.service: kavita-email
app.kubernetes.io/name: kavita-email
spec:
containers:
- image: jvmilazz0/kavitaemail:latest
name: kavita-email
ports:
- name: http
protocol: TCP
containerPort: 5003
readinessProbe:
httpGet:
path: /api/test
port: http
initialDelaySeconds: 30
failureThreshold: 5
periodSeconds: 5
resources: {}
volumeMounts:
- mountPath: /app/config
name: email-config
restartPolicy: Always
volumes:
- name: email-config
persistentVolumeClaim:
claimName: kavita-email-config-pvc
status: {}

View file

@ -0,0 +1,15 @@
apiVersion: v1
kind: Service
metadata:
name: kavita-email
labels:
name: kavita-email
spec:
ports:
- port: 5003
targetPort: http
protocol: TCP
name: http
selector:
app.kubernetes.io/name: kavita-email
#publishNotReadyAddresses: true

View file

@ -0,0 +1,17 @@
apiVersion: v1
kind: PersistentVolume
metadata:
annotations:
pv.kubernetes.io/provisioned-by: cluster.local/nfs-subdir-external-provisioner
name: media-library-comics
spec:
accessModes:
- ReadWriteOnce
capacity:
storage: 100Gi
nfs:
path: /export/comics
server: 192.168.1.215
persistentVolumeReclaimPolicy: Retain
storageClassName: nfs-client
volumeMode: Filesystem

View file

@ -0,0 +1,12 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: kavita-comics-pvc
namespace: media
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Gi
volumeName: media-library-comics

View file

@ -0,0 +1,14 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
creationTimestamp: null
labels:
io.kompose.service: kavita-config-pvc
name: kavita-config-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Mi
status: {}

View file

@ -0,0 +1,91 @@
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
gethompage.dev/enabled: "true"
gethomepage.dev/group: Media
gethomepage.dev/name: Books
gethomepage.dev/description: Ebooks and graphic novels
gethomepage.dev/href: https://library.nc.landry.land
gethomepage.dev/icon: kavita
creationTimestamp: null
labels:
io.kompose.service: kavita
name: kavita
spec:
replicas: 1
selector:
matchLabels:
io.kompose.service: kavita
strategy:
type: Recreate
template:
metadata:
annotations:
gethompage.dev/enabled: "true"
gethomepage.dev/group: Media
gethomepage.dev/name: Books
gethomepage.dev/description: Ebooks and graphic novels
gethomepage.dev/href: https://library.nc.landry.land
gethomepage.dev/icon: kavita
traefik.enable: "true"
traefik.http.routers.library.entrypoints: websecure
traefik.http.routers.library.rule: Host(`library.nc.landry.land`)
traefik.http.routers.library.service: library
traefik.http.routers.library.tls.certresolver: leresolver
traefik.http.services.library.loadbalancer.server.port: "5000"
creationTimestamp: null
labels:
io.kompose.network/ebooks-default: "true"
io.kompose.network/public: "true"
io.kompose.service: kavita
app.kubernetes.io/name: kavita
spec:
containers:
- env:
- name: TZ
value: America/New_York
image: jvmilazz0/kavita:latest
ports:
- name: http
protocol: TCP
containerPort: 5000
livenessProbe:
httpGet:
path: /api/health
port: http
failureThreshold: 5
initialDelaySeconds: 90
periodSeconds: 10
readinessProbe:
httpGet:
path: /api/health
port: http
failureThreshold: 5
periodSeconds: 10
name: kavita
resources: {}
volumeMounts:
- mountPath: /kavita/config
name: kavita-config-pvc
- mountPath: /books
name: kavita-ebooks-pvc
- mountPath: /comics
name:
kavita-comics-pvc
# - mountPath: /manga
# name: kavita-claim2
# - mountPath: /ttrpg
# name: kavita-claim3
restartPolicy: Always
volumes:
- name: kavita-config-pvc
persistentVolumeClaim:
claimName: kavita-config-pvc
- name: kavita-ebooks-pvc
persistentVolumeClaim:
claimName: kavita-ebooks-pvc
- name: kavita-comics-pvc
persistentVolumeClaim:
claimName: kavita-comics-pvc
status: {}

View file

@ -0,0 +1,17 @@
apiVersion: v1
kind: PersistentVolume
metadata:
annotations:
pv.kubernetes.io/provisioned-by: cluster.local/nfs-subdir-external-provisioner
name: media-library-ebooks
spec:
accessModes:
- ReadWriteOnce
capacity:
storage: 100Gi
nfs:
path: /export/ebooks
server: 192.168.1.215
persistentVolumeReclaimPolicy: Retain
storageClassName: nfs-client
volumeMode: Filesystem

View file

@ -0,0 +1,12 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: kavita-ebooks-pvc
namespace: media
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Gi
volumeName: media-library-ebooks

View file

@ -0,0 +1,30 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
cert-manager.io/cluster-issuer: letsencrypt-issuer
gethomepage.dev/enabled: "true"
gethomepage.dev/name: "Books"
gethomepage.dev/description: "Ebooks and graphic novels by Kavita"
gethomepage.dev/group: "Media"
gethomepage.dev/icon: "kavita.png"
name: kavita
labels:
name: kavita
spec:
rules:
- host: library.nc.landry.land
http:
paths:
- backend:
service:
name: kavita
port:
number: 5000
path: /
pathType: Prefix
tls:
- hosts:
- library.nc.landry.land
secretName: kavita-tls

View file

@ -0,0 +1,15 @@
apiVersion: v1
kind: Service
metadata:
name: kavita
labels:
name: kavita
spec:
ports:
- port: 5000
targetPort: http
protocol: TCP
name: http
selector:
app.kubernetes.io/name: kavita
#publishNotReadyAddresses: true

View file

@ -0,0 +1,14 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- email-claim-pvc.yaml
- email-deployment.yaml
- email-service.yaml
- kavita-comics-pv.yaml
- kavita-comics-pvc.yaml
- kavita-config-pvc.yaml
- kavita-deployment.yaml
- kavita-ebooks-pv.yaml
- kavita-ebooks-pvc.yaml
- kavita-ingress.yaml
- kavita-service.yaml