Compare commits
84 Commits
e1216f9603
...
renovate/p
| Author | SHA1 | Date | |
|---|---|---|---|
| 74af642d61 | |||
| a536911c7f | |||
| ca6d8ece07 | |||
| 403e0adc4a | |||
| ded8953892 | |||
| 5701c2fffe | |||
| 23b96db049 | |||
| e9f8b65f79 | |||
| fdc23b9b66 | |||
| c0fbef2afa | |||
| f055fd498b | |||
| d3d2852c4c | |||
| 7a9a87169a | |||
| 44142581ec | |||
| 2c05411617 | |||
| 30a08f1b41 | |||
| b3811f31cd | |||
| 4973a38623 | |||
| 5dd8427336 | |||
| 0a393b19c8 | |||
| c33107f0d8 | |||
| 27cbf5b35f | |||
| f014334375 | |||
| 19d75c5179 | |||
| 9a1c192d66 | |||
| 5d210d7c31 | |||
| 20f384f59d | |||
| 1a296f6630 | |||
| aa7db1d91a | |||
| 35dd82d3fa | |||
| c2303473b5 | |||
| a5a6194ef5 | |||
| 60fdb7794b | |||
| 647c088918 | |||
| c35754b4ef | |||
| 04df9f7d56 | |||
| 0370e5fb11 | |||
| 09f8a52a4a | |||
| 4a0a54eb6d | |||
| 0493c177af | |||
| a2455e4b5b | |||
| cfd2a59b62 | |||
| d21f192a65 | |||
| eb53c0e663 | |||
| 12f7343c3b | |||
| 1e8af651a1 | |||
| dbe81b336a | |||
| 4eb385d134 | |||
| 30a460fbc5 | |||
| 406a470489 | |||
| 86d9b89769 | |||
| d1fd69888a | |||
| 35af177b45 | |||
| 012f70811f | |||
| fd890b6042 | |||
| 34552dc98b | |||
| 2768705251 | |||
| 2d5ed2648c | |||
| 40bf1df4f2 | |||
| 2f3adc819b | |||
| e64df393a4 | |||
| 7c828dce5b | |||
| 83e32e23af | |||
| 01f6e05fe0 | |||
| d8564be2cb | |||
| fbce2041af | |||
| ce802a4891 | |||
| 923cc6dd52 | |||
| 8b9a8ef750 | |||
| e254b05af8 | |||
| e9364cfb16 | |||
| d5dd8ce96c | |||
| bbd06048e0 | |||
| 5840b67d04 | |||
| ea0feb3e59 | |||
| 7d92cd9358 | |||
| c5a0b629c4 | |||
| 8277398e2e | |||
| f2d3ad28aa | |||
| 09c38f3d6c | |||
| 22efed6f66 | |||
| 7b9e53414c | |||
| 4c4a383425 | |||
| 5ee8569d96 |
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
**/secret.yaml
|
||||||
12
deploy/arrs-suite/kustomization.yaml
Normal file
12
deploy/arrs-suite/kustomization.yaml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
|
||||||
|
resources:
|
||||||
|
- radarr-config-pvc.yaml
|
||||||
|
- sonarr-config-pvc.yaml
|
||||||
|
- sonarr-deploy.yaml
|
||||||
|
- radarr-deploy.yaml
|
||||||
|
- sonarr-svc.yaml
|
||||||
|
- radarr-svc.yaml
|
||||||
|
- sonarr-ingress.yaml
|
||||||
|
- radarr-ingress.yaml
|
||||||
12
deploy/arrs-suite/radarr-config-pvc.yaml
Normal file
12
deploy/arrs-suite/radarr-config-pvc.yaml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
name: radarr-config
|
||||||
|
namespace: jellyfin
|
||||||
|
spec:
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteOnce
|
||||||
|
storageClassName: longhorn
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 5Gi
|
||||||
44
deploy/arrs-suite/radarr-deploy.yaml
Normal file
44
deploy/arrs-suite/radarr-deploy.yaml
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: radarr
|
||||||
|
namespace: jellyfin
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: radarr
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: radarr
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: radarr
|
||||||
|
image: lscr.io/linuxserver/radarr:latest
|
||||||
|
ports:
|
||||||
|
- containerPort: 7878
|
||||||
|
env:
|
||||||
|
- name: PUID
|
||||||
|
value: "0"
|
||||||
|
- name: PGID
|
||||||
|
value: "0"
|
||||||
|
- name: TZ
|
||||||
|
value: Europe/Rome
|
||||||
|
volumeMounts:
|
||||||
|
- name: config
|
||||||
|
mountPath: /config
|
||||||
|
- name: media
|
||||||
|
mountPath: /media
|
||||||
|
- name: downloads
|
||||||
|
mountPath: /downloads
|
||||||
|
volumes:
|
||||||
|
- name: config
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: radarr-config
|
||||||
|
- name: media
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: media-rwx-pvc
|
||||||
|
- name: downloads
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: deluge-downloads
|
||||||
25
deploy/arrs-suite/radarr-ingress.yaml
Normal file
25
deploy/arrs-suite/radarr-ingress.yaml
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: radarr-ingress
|
||||||
|
namespace: jellyfin
|
||||||
|
annotations:
|
||||||
|
kubernetes.io/ingress.class: "nginx"
|
||||||
|
acme.cert-manager.io/disable-http01-propagation-check: "true"
|
||||||
|
cert-manager.io/cluster-issuer: "letsencrypt-prod"
|
||||||
|
spec:
|
||||||
|
tls:
|
||||||
|
- hosts:
|
||||||
|
- radarr.beatrice.wtf
|
||||||
|
secretName: radarr-tls
|
||||||
|
rules:
|
||||||
|
- host: radarr.beatrice.wtf
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: Prefix
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: radarr
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
12
deploy/arrs-suite/radarr-svc.yaml
Normal file
12
deploy/arrs-suite/radarr-svc.yaml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: radarr
|
||||||
|
namespace: jellyfin
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
app: radarr
|
||||||
|
ports:
|
||||||
|
- protocol: TCP
|
||||||
|
port: 80
|
||||||
|
targetPort: 7878
|
||||||
12
deploy/arrs-suite/sonarr-config-pvc.yaml
Normal file
12
deploy/arrs-suite/sonarr-config-pvc.yaml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
name: sonarr-config
|
||||||
|
namespace: jellyfin
|
||||||
|
spec:
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteOnce
|
||||||
|
storageClassName: longhorn
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 5Gi
|
||||||
44
deploy/arrs-suite/sonarr-deploy.yaml
Normal file
44
deploy/arrs-suite/sonarr-deploy.yaml
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: sonarr
|
||||||
|
namespace: jellyfin
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: sonarr
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: sonarr
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: sonarr
|
||||||
|
image: lscr.io/linuxserver/sonarr:latest
|
||||||
|
ports:
|
||||||
|
- containerPort: 8989
|
||||||
|
env:
|
||||||
|
- name: PUID
|
||||||
|
value: "0"
|
||||||
|
- name: PGID
|
||||||
|
value: "0"
|
||||||
|
- name: TZ
|
||||||
|
value: Europe/Rome
|
||||||
|
volumeMounts:
|
||||||
|
- name: config
|
||||||
|
mountPath: /config
|
||||||
|
- name: media
|
||||||
|
mountPath: /media
|
||||||
|
- name: downloads
|
||||||
|
mountPath: /downloads
|
||||||
|
volumes:
|
||||||
|
- name: config
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: sonarr-config
|
||||||
|
- name: media
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: media-rwx-pvc
|
||||||
|
- name: downloads
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: deluge-downloads
|
||||||
25
deploy/arrs-suite/sonarr-ingress.yaml
Normal file
25
deploy/arrs-suite/sonarr-ingress.yaml
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: sonarr-ingress
|
||||||
|
namespace: jellyfin
|
||||||
|
annotations:
|
||||||
|
kubernetes.io/ingress.class: "nginx"
|
||||||
|
acme.cert-manager.io/disable-http01-propagation-check: "true"
|
||||||
|
cert-manager.io/cluster-issuer: "letsencrypt-prod"
|
||||||
|
spec:
|
||||||
|
tls:
|
||||||
|
- hosts:
|
||||||
|
- sonarr.beatrice.wtf
|
||||||
|
secretName: sonarr-tls
|
||||||
|
rules:
|
||||||
|
- host: sonarr.beatrice.wtf
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: Prefix
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: sonarr
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
12
deploy/arrs-suite/sonarr-svc.yaml
Normal file
12
deploy/arrs-suite/sonarr-svc.yaml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: sonarr
|
||||||
|
namespace: jellyfin
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
app: sonarr
|
||||||
|
ports:
|
||||||
|
- protocol: TCP
|
||||||
|
port: 80
|
||||||
|
targetPort: 8989
|
||||||
12
deploy/deluge/deluge-config-pvc.yaml
Normal file
12
deploy/deluge/deluge-config-pvc.yaml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
name: deluge-config
|
||||||
|
namespace: jellyfin
|
||||||
|
spec:
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteOnce
|
||||||
|
storageClassName: longhorn
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 5Gi
|
||||||
71
deploy/deluge/deluge-deploy.yaml
Normal file
71
deploy/deluge/deluge-deploy.yaml
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: deluge
|
||||||
|
namespace: jellyfin
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: deluge
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: deluge
|
||||||
|
spec:
|
||||||
|
securityContext:
|
||||||
|
runAsUser: 0
|
||||||
|
containers:
|
||||||
|
- name: deluge
|
||||||
|
image: bottledpills/deluge-openvpn:v1.7
|
||||||
|
securityContext:
|
||||||
|
privileged: true # Often required for TUN/TAP devices
|
||||||
|
capabilities:
|
||||||
|
add:
|
||||||
|
- NET_ADMIN
|
||||||
|
ports:
|
||||||
|
- containerPort: 8112
|
||||||
|
protocol: TCP
|
||||||
|
- containerPort: 6881
|
||||||
|
protocol: TCP
|
||||||
|
- containerPort: 6881
|
||||||
|
protocol: UDP
|
||||||
|
- containerPort: 58846
|
||||||
|
protocol: TCP
|
||||||
|
env:
|
||||||
|
- name: TZ
|
||||||
|
value: Etc/UTC
|
||||||
|
- name: DELUGE_LOGLEVEL
|
||||||
|
value: "error"
|
||||||
|
- name: OPENVPN_PROVIDER
|
||||||
|
value: "nordvpn"
|
||||||
|
- name: OPENVPN_USERNAME
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: nordvpn-credentials
|
||||||
|
key: username
|
||||||
|
- name: OPENVPN_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: nordvpn-credentials
|
||||||
|
key: password
|
||||||
|
- name: LOCAL_NETWORK
|
||||||
|
value: "10.10.10.0/24,10.244.0.0/24"
|
||||||
|
volumeMounts:
|
||||||
|
- name: config
|
||||||
|
mountPath: /config
|
||||||
|
- name: downloads
|
||||||
|
mountPath: /download
|
||||||
|
- name: dev-net-tun
|
||||||
|
mountPath: /dev/net/tun
|
||||||
|
volumes:
|
||||||
|
- name: config
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: deluge-config
|
||||||
|
- name: downloads
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: deluge-downloads
|
||||||
|
- name: dev-net-tun
|
||||||
|
hostPath:
|
||||||
|
path: /dev/net/tun
|
||||||
|
type: CharDevice
|
||||||
27
deploy/deluge/deluge-ingress.yaml
Normal file
27
deploy/deluge/deluge-ingress.yaml
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: deluge-ingress
|
||||||
|
namespace: jellyfin
|
||||||
|
annotations:
|
||||||
|
kubernetes.io/ingress.class: "nginx"
|
||||||
|
acme.cert-manager.io/disable-http01-propagation-check: "true"
|
||||||
|
cert-manager.io/cluster-issuer: "letsencrypt-prod"
|
||||||
|
nginx.ingress.kubernetes.io/ssl-redirect: "true"
|
||||||
|
spec:
|
||||||
|
tls:
|
||||||
|
- hosts:
|
||||||
|
- torrent.beatrice.wtf
|
||||||
|
secretName: deluge-tls
|
||||||
|
rules:
|
||||||
|
- host: torrent.beatrice.wtf
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: Prefix
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: deluge
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
|
|
||||||
25
deploy/deluge/deluge-svc.yaml
Normal file
25
deploy/deluge/deluge-svc.yaml
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: deluge
|
||||||
|
namespace: jellyfin
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
app: deluge
|
||||||
|
ports:
|
||||||
|
- name: web
|
||||||
|
protocol: TCP
|
||||||
|
port: 80
|
||||||
|
targetPort: 8112
|
||||||
|
- name: torrent-tcp
|
||||||
|
protocol: TCP
|
||||||
|
port: 6881
|
||||||
|
targetPort: 6881
|
||||||
|
- name: torrent-udp
|
||||||
|
protocol: UDP
|
||||||
|
port: 6881
|
||||||
|
targetPort: 6881
|
||||||
|
- name: daemon
|
||||||
|
protocol: TCP
|
||||||
|
port: 58846
|
||||||
|
targetPort: 58846
|
||||||
9
deploy/deluge/kustomization.yaml
Normal file
9
deploy/deluge/kustomization.yaml
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
|
||||||
|
resources:
|
||||||
|
- shared-downloads-pvc.yaml
|
||||||
|
- deluge-config-pvc.yaml
|
||||||
|
- deluge-deploy.yaml
|
||||||
|
- deluge-ingress.yaml
|
||||||
|
- deluge-svc.yaml
|
||||||
12
deploy/deluge/shared-downloads-pvc.yaml
Normal file
12
deploy/deluge/shared-downloads-pvc.yaml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
name: deluge-downloads
|
||||||
|
namespace: jellyfin
|
||||||
|
spec:
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteMany
|
||||||
|
storageClassName: longhorn
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 100Gi
|
||||||
@@ -1,105 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: PersistentVolumeClaim
|
|
||||||
metadata:
|
|
||||||
name: drone-pv
|
|
||||||
namespace: drone
|
|
||||||
labels:
|
|
||||||
name: drone-server
|
|
||||||
spec:
|
|
||||||
storageClassName: longhorn
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: 20Gi
|
|
||||||
---
|
|
||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: drone-server
|
|
||||||
namespace: drone
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
name: drone-server
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
name: drone-server
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- name: drone-server
|
|
||||||
image: drone/drone:2.26.0
|
|
||||||
imagePullPolicy: Always
|
|
||||||
env:
|
|
||||||
- name: "DRONE_GITHUB_CLIENT_ID"
|
|
||||||
value: Ov23liTTrc709dX7YetV
|
|
||||||
- name: "DRONE_GITHUB_CLIENT_SECRET"
|
|
||||||
value: 7373d79bce815b380d503fb39c9373a53599897a
|
|
||||||
- name: "DRONE_RPC_SECRET"
|
|
||||||
value: f2ae9e7aea06ef9897a30c5e2b27f17c
|
|
||||||
- name: "DRONE_SERVER_HOST"
|
|
||||||
value: drone.diveedi.dev
|
|
||||||
- name: "DRONE_SERVER_PROTO"
|
|
||||||
value: https
|
|
||||||
- name: "DRONE_SERVER_PORT"
|
|
||||||
value: :80
|
|
||||||
- name: "DRONE_USER_CREATE"
|
|
||||||
value: "username:nicolag97,admin:true"
|
|
||||||
- name: "DRONE_USER_FILTER"
|
|
||||||
value: "ticketag,diveedi-lab"
|
|
||||||
- name: "DRONE_DATABASE_DRIVER"
|
|
||||||
value: "postgres"
|
|
||||||
- name: "DRONE_DATABASE_DATASOURCE"
|
|
||||||
value: "postgres://drone:be1932a990ec0d4a9720@postgres-rw.db:5432/drone?sslmode=disable"
|
|
||||||
volumeMounts:
|
|
||||||
- mountPath: /var/lib/drone
|
|
||||||
name: drone-lib
|
|
||||||
volumes:
|
|
||||||
- name: drone-lib
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: drone-pv
|
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: drone-server
|
|
||||||
namespace: drone
|
|
||||||
labels:
|
|
||||||
name: drone-server
|
|
||||||
spec:
|
|
||||||
type: ClusterIP
|
|
||||||
ports:
|
|
||||||
- protocol: TCP
|
|
||||||
port: 80
|
|
||||||
targetPort: 80
|
|
||||||
selector:
|
|
||||||
name: drone-server
|
|
||||||
---
|
|
||||||
apiVersion: networking.k8s.io/v1
|
|
||||||
kind: Ingress
|
|
||||||
metadata:
|
|
||||||
name: drone-ingress
|
|
||||||
namespace: drone
|
|
||||||
annotations:
|
|
||||||
cert-manager.io/cluster-issuer: "letsencrypt-prod"
|
|
||||||
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
|
|
||||||
spec:
|
|
||||||
ingressClassName: nginx
|
|
||||||
tls:
|
|
||||||
- hosts:
|
|
||||||
- drone.panic.haus
|
|
||||||
secretName: drone-tls
|
|
||||||
|
|
||||||
rules:
|
|
||||||
- host: drone.panic.haus
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- path: /
|
|
||||||
pathType: Prefix
|
|
||||||
backend:
|
|
||||||
service:
|
|
||||||
name: drone-server
|
|
||||||
port:
|
|
||||||
number: 80
|
|
||||||
26
deploy/drone/drone-ingress.yaml
Normal file
26
deploy/drone/drone-ingress.yaml
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: drone-ingress
|
||||||
|
namespace: drone
|
||||||
|
annotations:
|
||||||
|
cert-manager.io/cluster-issuer: "letsencrypt-prod"
|
||||||
|
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
|
||||||
|
spec:
|
||||||
|
ingressClassName: nginx
|
||||||
|
tls:
|
||||||
|
- hosts:
|
||||||
|
- drone.beatrice.wtf
|
||||||
|
secretName: drone-tls
|
||||||
|
|
||||||
|
rules:
|
||||||
|
- host: drone.beatrice.wtf
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: Prefix
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: drone-server
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
29
deploy/drone/drone-pvc.yaml
Normal file
29
deploy/drone/drone-pvc.yaml
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
name: drone-lib-pvc
|
||||||
|
namespace: drone
|
||||||
|
labels:
|
||||||
|
name: drone-server
|
||||||
|
spec:
|
||||||
|
storageClassName: longhorn
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteOnce
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 20Gi
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
name: drone-data-pvc
|
||||||
|
namespace: drone
|
||||||
|
labels:
|
||||||
|
name: drone-server
|
||||||
|
spec:
|
||||||
|
storageClassName: longhorn
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteOnce
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 20Gi
|
||||||
26
deploy/drone/drone-rbac.yaml
Normal file
26
deploy/drone/drone-rbac.yaml
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
kind: Role
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
metadata:
|
||||||
|
namespace: drone
|
||||||
|
name: drone
|
||||||
|
rules:
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources: ["secrets"]
|
||||||
|
verbs: ["create", "delete"]
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources: ["pods", "pods/log"]
|
||||||
|
verbs: ["get", "create", "delete", "list", "watch", "update"]
|
||||||
|
---
|
||||||
|
kind: RoleBinding
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
metadata:
|
||||||
|
name: drone
|
||||||
|
namespace: drone
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: default
|
||||||
|
namespace: drone
|
||||||
|
roleRef:
|
||||||
|
kind: Role
|
||||||
|
name: drone
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
36
deploy/drone/drone-runner-amd64.yaml
Normal file
36
deploy/drone/drone-runner-amd64.yaml
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: drone-runner-amd64
|
||||||
|
namespace: drone
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: drone-runner-amd64
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: drone-runner-amd64
|
||||||
|
spec:
|
||||||
|
nodeSelector:
|
||||||
|
kubernetes.io/arch: "amd64"
|
||||||
|
containers:
|
||||||
|
- name: drone-runner-amd64
|
||||||
|
image: drone/drone-runner-kube:latest
|
||||||
|
imagePullPolicy: Always
|
||||||
|
env:
|
||||||
|
- name: DRONE_RPC_HOST
|
||||||
|
value: "drone.beatrice.wtf"
|
||||||
|
- name: DRONE_RPC_PROTO
|
||||||
|
value: "https"
|
||||||
|
- name: DRONE_RPC_SECRET
|
||||||
|
value: "26a2221fd8090ea38720fc445eca6a45a39a63fcce3ba30712e7153b855f8"
|
||||||
|
- name: DRONE_RUNNER_CAPACITY
|
||||||
|
value: "3"
|
||||||
|
- name: DRONE_DEBUG
|
||||||
|
value: "true"
|
||||||
|
- name: DRONE_NAMESPACE_DEFAULT
|
||||||
|
value: "drone"
|
||||||
|
- name: DRONE_NODE_SELECTOR_DEFAULT
|
||||||
|
value: "kubernetes.io/arch:amd64"
|
||||||
36
deploy/drone/drone-runner-arm64.yaml
Normal file
36
deploy/drone/drone-runner-arm64.yaml
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: drone-runner-arm64
|
||||||
|
namespace: drone
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: drone-runner-arm64
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: drone-runner-arm64
|
||||||
|
spec:
|
||||||
|
nodeSelector:
|
||||||
|
kubernetes.io/arch: "arm64"
|
||||||
|
containers:
|
||||||
|
- name: drone-runner-arm64
|
||||||
|
image: drone/drone-runner-kube:latest
|
||||||
|
imagePullPolicy: Always
|
||||||
|
env:
|
||||||
|
- name: DRONE_RPC_HOST
|
||||||
|
value: "drone.beatrice.wtf"
|
||||||
|
- name: DRONE_RPC_PROTO
|
||||||
|
value: "https"
|
||||||
|
- name: DRONE_RPC_SECRET
|
||||||
|
value: "26a2221fd8090ea38720fc445eca6a45a39a63fcce3ba30712e7153b855f8"
|
||||||
|
- name: DRONE_RUNNER_CAPACITY
|
||||||
|
value: "3"
|
||||||
|
- name: DRONE_DEBUG
|
||||||
|
value: "true"
|
||||||
|
- name: DRONE_NAMESPACE_DEFAULT
|
||||||
|
value: "drone"
|
||||||
|
- name: DRONE_NODE_SELECTOR_DEFAULT
|
||||||
|
value: "kubernetes.io/arch:arm64"
|
||||||
72
deploy/drone/drone-server.yaml
Normal file
72
deploy/drone/drone-server.yaml
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: drone-server
|
||||||
|
namespace: drone
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
name: drone-server
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
name: drone-server
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: drone-server
|
||||||
|
image: drone/drone:2
|
||||||
|
imagePullPolicy: Always
|
||||||
|
env:
|
||||||
|
- name: "DRONE_GITEA_CLIENT_ID"
|
||||||
|
value: "e6a4fb3b-e6b1-43dd-8f45-4def94742609"
|
||||||
|
- name: "DRONE_GITEA_CLIENT_SECRET"
|
||||||
|
value: "gto_4ggtzkrukdzsmheoa2b4wz5cza2jif6gpf7wunbrtxa74senlykq"
|
||||||
|
- name: "DRONE_GITEA_SERVER"
|
||||||
|
value: "https://git.beatrice.wtf"
|
||||||
|
- name: "DRONE_GIT_ALWAYS_AUTH"
|
||||||
|
value: "false"
|
||||||
|
- name: "DRONE_RPC_SECRET"
|
||||||
|
value: "26a2221fd8090ea38720fc445eca6a45a39a63fcce3ba30712e7153b855f8"
|
||||||
|
- name: "DRONE_WEBHOOK_SECRET"
|
||||||
|
value: "9329e50de8f250dc3c997571f395d09e"
|
||||||
|
- name: "DRONE_SERVER_HOST"
|
||||||
|
value: "drone.beatrice.wtf"
|
||||||
|
- name: "DRONE_SERVER_PROTO"
|
||||||
|
value: "https"
|
||||||
|
- name: "DRONE_SERVER_PORT"
|
||||||
|
value: ":80"
|
||||||
|
- name: "DRONE_SERVER_BUILD_LIMIT"
|
||||||
|
value: "9"
|
||||||
|
- name: "DRONE_ALLOW_PRIVILEGED"
|
||||||
|
value: "true"
|
||||||
|
- name: "DRONE_LOGS_DEBUG"
|
||||||
|
value: "true"
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /var/lib/drone
|
||||||
|
name: drone-lib
|
||||||
|
- mountPath: /data
|
||||||
|
name: drone-data
|
||||||
|
volumes:
|
||||||
|
- name: drone-lib
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: drone-lib-pvc
|
||||||
|
- name: drone-data
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: drone-data-pvc
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: drone-server
|
||||||
|
namespace: drone
|
||||||
|
labels:
|
||||||
|
name: drone-server
|
||||||
|
spec:
|
||||||
|
type: ClusterIP
|
||||||
|
ports:
|
||||||
|
- protocol: TCP
|
||||||
|
port: 80
|
||||||
|
targetPort: 80
|
||||||
|
selector:
|
||||||
|
name: drone-server
|
||||||
@@ -1,2 +1,7 @@
|
|||||||
resources:
|
resources:
|
||||||
- deploy.yaml
|
- drone-rbac.yaml
|
||||||
|
- drone-server.yaml
|
||||||
|
- drone-runner-arm64.yaml
|
||||||
|
- drone-runner-amd64.yaml
|
||||||
|
- drone-ingress.yaml
|
||||||
|
- drone-pvc.yaml
|
||||||
|
|||||||
32
deploy/jackett/flaresolverr-deploy.yaml
Normal file
32
deploy/jackett/flaresolverr-deploy.yaml
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
# Flaresolverr Deployment
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: flaresolverr
|
||||||
|
namespace: jellyfin
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: flaresolverr
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: flaresolverr
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: flaresolverr
|
||||||
|
image: ghcr.io/flaresolverr/flaresolverr:latest
|
||||||
|
ports:
|
||||||
|
- containerPort: 8191
|
||||||
|
env:
|
||||||
|
- name: LOG_LEVEL
|
||||||
|
value: "info"
|
||||||
|
- name: LOG_HTML
|
||||||
|
value: "false"
|
||||||
|
- name: CAPTCHA_SOLVER
|
||||||
|
value: "none"
|
||||||
|
- name: TZ
|
||||||
|
value: "Europe/Rome"
|
||||||
|
- name: HOME
|
||||||
|
value: "/tmp"
|
||||||
26
deploy/jackett/flaresolverr-ingress.yaml
Normal file
26
deploy/jackett/flaresolverr-ingress.yaml
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: flaresolverr-ingress
|
||||||
|
namespace: jellyfin
|
||||||
|
annotations:
|
||||||
|
kubernetes.io/ingress.class: "nginx"
|
||||||
|
acme.cert-manager.io/disable-http01-propagation-check: "true"
|
||||||
|
cert-manager.io/cluster-issuer: "letsencrypt-prod"
|
||||||
|
nginx.ingress.kubernetes.io/ssl-redirect: "true"
|
||||||
|
spec:
|
||||||
|
tls:
|
||||||
|
- hosts:
|
||||||
|
- flaresolverr.beatrice.wtf
|
||||||
|
secretName: flaresolverr-tls
|
||||||
|
rules:
|
||||||
|
- host: flaresolverr.beatrice.wtf
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: Prefix
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: flaresolverr
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
14
deploy/jackett/flaresolverr-svc.yaml
Normal file
14
deploy/jackett/flaresolverr-svc.yaml
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
# Flaresolverr Service
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: flaresolverr
|
||||||
|
namespace: jellyfin
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
app: flaresolverr
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
protocol: TCP
|
||||||
|
port: 80
|
||||||
|
targetPort: 8191
|
||||||
13
deploy/jackett/jackett-blackhole-pvc.yaml
Normal file
13
deploy/jackett/jackett-blackhole-pvc.yaml
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
# PVC for Jackett "blackhole" (downloads) folder
|
||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
name: jackett-blackhole
|
||||||
|
namespace: jellyfin
|
||||||
|
spec:
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteMany
|
||||||
|
storageClassName: longhorn
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 10Gi
|
||||||
13
deploy/jackett/jackett-config-pvc.yaml
Normal file
13
deploy/jackett/jackett-config-pvc.yaml
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
# PVC for Jackett configuration
|
||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
name: jackett-config
|
||||||
|
namespace: jellyfin
|
||||||
|
spec:
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteOnce
|
||||||
|
storageClassName: longhorn
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 10Gi
|
||||||
44
deploy/jackett/jackett-deploy.yaml
Normal file
44
deploy/jackett/jackett-deploy.yaml
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
# Jackett Deployment
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: jackett
|
||||||
|
namespace: jellyfin
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: jackett
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: jackett
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: jackett
|
||||||
|
image: lscr.io/linuxserver/jackett:latest
|
||||||
|
ports:
|
||||||
|
- containerPort: 9117
|
||||||
|
env:
|
||||||
|
- name: PUID
|
||||||
|
value: "1000"
|
||||||
|
- name: PGID
|
||||||
|
value: "1000"
|
||||||
|
- name: TZ
|
||||||
|
value: "Etc/UTC"
|
||||||
|
- name: AUTO_UPDATE
|
||||||
|
value: "true"
|
||||||
|
- name: RUN_OPTS
|
||||||
|
value: ""
|
||||||
|
volumeMounts:
|
||||||
|
- name: config
|
||||||
|
mountPath: /config
|
||||||
|
- name: blackhole
|
||||||
|
mountPath: /downloads
|
||||||
|
volumes:
|
||||||
|
- name: config
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: jackett-config
|
||||||
|
- name: blackhole
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: jackett-blackhole
|
||||||
26
deploy/jackett/jackett-ingress.yaml
Normal file
26
deploy/jackett/jackett-ingress.yaml
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: jackett-ingress
|
||||||
|
namespace: jellyfin
|
||||||
|
annotations:
|
||||||
|
kubernetes.io/ingress.class: "nginx"
|
||||||
|
acme.cert-manager.io/disable-http01-propagation-check: "true"
|
||||||
|
cert-manager.io/cluster-issuer: "letsencrypt-prod"
|
||||||
|
nginx.ingress.kubernetes.io/ssl-redirect: "true"
|
||||||
|
spec:
|
||||||
|
tls:
|
||||||
|
- hosts:
|
||||||
|
- jackett.beatrice.wtf
|
||||||
|
secretName: jackett-tls
|
||||||
|
rules:
|
||||||
|
- host: jackett.beatrice.wtf
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: Prefix
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: jackett
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
14
deploy/jackett/jackett-svc.yaml
Normal file
14
deploy/jackett/jackett-svc.yaml
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
# Jackett Service
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: jackett
|
||||||
|
namespace: jellyfin
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
app: jackett
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
protocol: TCP
|
||||||
|
port: 80
|
||||||
|
targetPort: 9117
|
||||||
12
deploy/jackett/kustomization.yaml
Normal file
12
deploy/jackett/kustomization.yaml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
|
||||||
|
resources:
|
||||||
|
- jackett-blackhole-pvc.yaml
|
||||||
|
- jackett-config-pvc.yaml
|
||||||
|
- jackett-deploy.yaml
|
||||||
|
- jackett-svc.yaml
|
||||||
|
- jackett-ingress.yaml
|
||||||
|
- flaresolverr-deploy.yaml
|
||||||
|
- flaresolverr-svc.yaml
|
||||||
|
- flaresolverr-ingress.yaml
|
||||||
@@ -21,7 +21,7 @@ metadata:
|
|||||||
spec:
|
spec:
|
||||||
storageClassName: media-storage
|
storageClassName: media-storage
|
||||||
accessModes:
|
accessModes:
|
||||||
- ReadWriteMany # Longhorn supports RWO; if RWX is needed, enable RWX mode in Longhorn UI
|
- ReadWriteMany
|
||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
storage: 500Gi
|
storage: 1050Gi
|
||||||
|
|||||||
27
deploy/longhorn/longhorn-dashboard.yaml
Normal file
27
deploy/longhorn/longhorn-dashboard.yaml
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: longhorn-dashboard
|
||||||
|
namespace: longhorn-system
|
||||||
|
annotations:
|
||||||
|
kubernetes.io/ingress.class: nginx
|
||||||
|
cert-manager.io/cluster-issuer: letsencrypt-prod
|
||||||
|
nginx.ingress.kubernetes.io/auth-signin: https://$host/oauth2/start?rd=$escaped_request_uri
|
||||||
|
nginx.ingress.kubernetes.io/auth-url: https://$host/oauth2/auth
|
||||||
|
spec:
|
||||||
|
tls:
|
||||||
|
- hosts:
|
||||||
|
- longhorn.panic.haus
|
||||||
|
secretName: longhorn-tls
|
||||||
|
rules:
|
||||||
|
- host: longhorn.panic.haus
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: Prefix
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: longhorn-frontend
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
|
|
||||||
33
deploy/longhorn/longhorn-ingress.yaml
Normal file
33
deploy/longhorn/longhorn-ingress.yaml
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: longhorn-ingress
|
||||||
|
namespace: longhorn-system
|
||||||
|
annotations:
|
||||||
|
kubernetes.io/ingress.class: "nginx"
|
||||||
|
cert-manager.io/cluster-issuer: "letsencrypt-prod"
|
||||||
|
nginx.ingress.kubernetes.io/auth-url: "http://oauth2-proxy-service.longhorn-system.svc.cluster.local:4180/oauth2/auth"
|
||||||
|
nginx.ingress.kubernetes.io/auth-signin: "https://longhorn.panic.haus/oauth2/start?rd=$escaped_request_uri"
|
||||||
|
spec:
|
||||||
|
tls:
|
||||||
|
- hosts:
|
||||||
|
- longhorn.panic.haus
|
||||||
|
secretName: longhorn-tls
|
||||||
|
rules:
|
||||||
|
- host: longhorn.panic.haus
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- path: /oauth2
|
||||||
|
pathType: Prefix
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: oauth2-proxy-longhorn-service
|
||||||
|
port:
|
||||||
|
number: 4180
|
||||||
|
- path: /
|
||||||
|
pathType: Prefix
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: longhorn-frontend
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
19
deploy/longhorn/oauth2-proxy-longhorn-ingress.yaml
Normal file
19
deploy/longhorn/oauth2-proxy-longhorn-ingress.yaml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: oauth2-proxy-longhorn-ingress
|
||||||
|
namespace: longhorn-system
|
||||||
|
annotations:
|
||||||
|
kubernetes.io/ingress.class: nginx
|
||||||
|
spec:
|
||||||
|
rules:
|
||||||
|
- host: longhorn.panic.haus
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- path: /oauth2
|
||||||
|
pathType: Prefix
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: oauth2-proxy-longhorn-service
|
||||||
|
port:
|
||||||
|
number: 4180
|
||||||
13
deploy/longhorn/oauth2-proxy-longhorn-svc.yaml
Normal file
13
deploy/longhorn/oauth2-proxy-longhorn-svc.yaml
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: oauth2-proxy-longhorn-service
|
||||||
|
namespace: longhorn-system
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- port: 4180
|
||||||
|
targetPort: 4180
|
||||||
|
protocol: TCP
|
||||||
|
name: http
|
||||||
|
selector:
|
||||||
|
app: oauth2-proxy-longhorn
|
||||||
38
deploy/longhorn/oauth2-proxy-longhorn.yaml
Normal file
38
deploy/longhorn/oauth2-proxy-longhorn.yaml
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: oauth2-proxy-longhorn
|
||||||
|
namespace: longhorn-system
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: oauth2-proxy-longhorn
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: oauth2-proxy-longhorn
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: oauth2-proxy-longhorn
|
||||||
|
image: quay.io/oauth2-proxy/oauth2-proxy:v7.8.1
|
||||||
|
args:
|
||||||
|
- --provider=keycloak
|
||||||
|
- --client-id=longhorn
|
||||||
|
- --client-secret=0U2QuP1QMAXln8bzwJ3aJMIvaH9t2QvJ
|
||||||
|
- --cookie-secret=lDE7du7SlDuG1UySIZUhcHfuk5HlgFlgDWdHD_PQ9UI=
|
||||||
|
- --oidc-issuer-url=https://sso.beatrice.wtf/auth/realms/panic-haus
|
||||||
|
- --cookie-domain=longhorn.panic.haus
|
||||||
|
- --email-domain=*
|
||||||
|
- --http-address=0.0.0.0:4180
|
||||||
|
- --redirect-url=https://longhorn.panic.haus/oauth2/callback
|
||||||
|
- --upstream=http://longhorn-frontend.longhorn-system.svc.cluster.local:80
|
||||||
|
- --scope=openid
|
||||||
|
- --login-url=https://sso.beatrice.wtf/auth/realms/panic-haus/protocol/openid-connect/auth
|
||||||
|
- --validate-url=https://sso.beatrice.wtf/auth/realms/panic-haus/protocol/openid-connect/userinfo
|
||||||
|
- --redeem-url=https://sso.beatrice.wtf/auth/realms/panic-haus/protocol/openid-connect/token
|
||||||
|
- --skip-auth-regex=^(?:https?:\/\/)?longhorn\.panic\.haus\/(favicon\.ico|.*\.(?:js|css)(\.map)?)$|^\/(favicon\.ico|.*\.(?:js|css)(\.map)?)$
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 4180
|
||||||
|
protocol: TCP
|
||||||
202
deploy/metrics-server/components.yaml
Normal file
202
deploy/metrics-server/components.yaml
Normal file
@@ -0,0 +1,202 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
k8s-app: metrics-server
|
||||||
|
name: metrics-server
|
||||||
|
namespace: kube-system
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRole
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
k8s-app: metrics-server
|
||||||
|
rbac.authorization.k8s.io/aggregate-to-admin: "true"
|
||||||
|
rbac.authorization.k8s.io/aggregate-to-edit: "true"
|
||||||
|
rbac.authorization.k8s.io/aggregate-to-view: "true"
|
||||||
|
name: system:aggregated-metrics-reader
|
||||||
|
rules:
|
||||||
|
- apiGroups:
|
||||||
|
- metrics.k8s.io
|
||||||
|
resources:
|
||||||
|
- pods
|
||||||
|
- nodes
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRole
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
k8s-app: metrics-server
|
||||||
|
name: system:metrics-server
|
||||||
|
rules:
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- nodes/metrics
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- pods
|
||||||
|
- nodes
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: RoleBinding
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
k8s-app: metrics-server
|
||||||
|
name: metrics-server-auth-reader
|
||||||
|
namespace: kube-system
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: Role
|
||||||
|
name: extension-apiserver-authentication-reader
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: metrics-server
|
||||||
|
namespace: kube-system
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRoleBinding
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
k8s-app: metrics-server
|
||||||
|
name: metrics-server:system:auth-delegator
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: ClusterRole
|
||||||
|
name: system:auth-delegator
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: metrics-server
|
||||||
|
namespace: kube-system
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRoleBinding
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
k8s-app: metrics-server
|
||||||
|
name: system:metrics-server
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: ClusterRole
|
||||||
|
name: system:metrics-server
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: metrics-server
|
||||||
|
namespace: kube-system
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
k8s-app: metrics-server
|
||||||
|
name: metrics-server
|
||||||
|
namespace: kube-system
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: https
|
||||||
|
port: 443
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: https
|
||||||
|
selector:
|
||||||
|
k8s-app: metrics-server
|
||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
k8s-app: metrics-server
|
||||||
|
name: metrics-server
|
||||||
|
namespace: kube-system
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
k8s-app: metrics-server
|
||||||
|
strategy:
|
||||||
|
rollingUpdate:
|
||||||
|
maxUnavailable: 0
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
k8s-app: metrics-server
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- args:
|
||||||
|
- --cert-dir=/tmp
|
||||||
|
- --secure-port=10250
|
||||||
|
- --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
|
||||||
|
- --kubelet-use-node-status-port
|
||||||
|
- --metric-resolution=15s
|
||||||
|
- --kubelet-insecure-tls
|
||||||
|
image: registry.k8s.io/metrics-server/metrics-server:v0.7.2
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
livenessProbe:
|
||||||
|
failureThreshold: 3
|
||||||
|
httpGet:
|
||||||
|
path: /livez
|
||||||
|
port: https
|
||||||
|
scheme: HTTPS
|
||||||
|
periodSeconds: 10
|
||||||
|
name: metrics-server
|
||||||
|
ports:
|
||||||
|
- containerPort: 10250
|
||||||
|
name: https
|
||||||
|
protocol: TCP
|
||||||
|
readinessProbe:
|
||||||
|
failureThreshold: 3
|
||||||
|
httpGet:
|
||||||
|
path: /readyz
|
||||||
|
port: https
|
||||||
|
scheme: HTTPS
|
||||||
|
initialDelaySeconds: 20
|
||||||
|
periodSeconds: 10
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: 100m
|
||||||
|
memory: 200Mi
|
||||||
|
securityContext:
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- ALL
|
||||||
|
readOnlyRootFilesystem: true
|
||||||
|
runAsNonRoot: true
|
||||||
|
runAsUser: 1000
|
||||||
|
seccompProfile:
|
||||||
|
type: RuntimeDefault
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /tmp
|
||||||
|
name: tmp-dir
|
||||||
|
nodeSelector:
|
||||||
|
kubernetes.io/os: linux
|
||||||
|
priorityClassName: system-cluster-critical
|
||||||
|
serviceAccountName: metrics-server
|
||||||
|
volumes:
|
||||||
|
- emptyDir: {}
|
||||||
|
name: tmp-dir
|
||||||
|
---
|
||||||
|
apiVersion: apiregistration.k8s.io/v1
|
||||||
|
kind: APIService
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
k8s-app: metrics-server
|
||||||
|
name: v1beta1.metrics.k8s.io
|
||||||
|
spec:
|
||||||
|
group: metrics.k8s.io
|
||||||
|
groupPriorityMinimum: 100
|
||||||
|
insecureSkipTLSVerify: true
|
||||||
|
service:
|
||||||
|
name: metrics-server
|
||||||
|
namespace: kube-system
|
||||||
|
version: v1beta1
|
||||||
|
versionPriority: 100
|
||||||
5
deploy/metrics-server/kustomization.yaml
Normal file
5
deploy/metrics-server/kustomization.yaml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
|
||||||
|
resources:
|
||||||
|
- components.yaml
|
||||||
24
deploy/plane-ce/kustomization.yaml
Normal file
24
deploy/plane-ce/kustomization.yaml
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
namespace: plane-ce
|
||||||
|
|
||||||
|
helmCharts:
|
||||||
|
- name: plane-ce
|
||||||
|
repo: https://helm.plane.so/
|
||||||
|
version: 1.4.0
|
||||||
|
releaseName: plane-app
|
||||||
|
valuesInline:
|
||||||
|
planeVersion: stable
|
||||||
|
postgres:
|
||||||
|
local_setup: false
|
||||||
|
servicePort: 5432
|
||||||
|
env:
|
||||||
|
pgdb_remote_url: postgresql://plane:w20t4g8h244ivjz0kef1hi10@postgres-base-rw.postgres.svc.cluster.local:5432/plane_db
|
||||||
|
certManager: true
|
||||||
|
ingress:
|
||||||
|
ingressClass: nginx
|
||||||
|
tls: true
|
||||||
|
appHost: plane.panic.haus
|
||||||
|
minioHost: minio.plane.panic.haus
|
||||||
|
rabbitmqHost: plane-app-rabbitmq
|
||||||
|
annotations:
|
||||||
|
cert-manager.io/cluster-issuer: letsencrypt-prod
|
||||||
|
nginx.ingress.kubernetes.io/ssl-redirect: "true"
|
||||||
23
deploy/renovate/cronjob.yaml
Normal file
23
deploy/renovate/cronjob.yaml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
apiVersion: batch/v1
|
||||||
|
kind: CronJob
|
||||||
|
metadata:
|
||||||
|
name: renovate
|
||||||
|
namespace: renovate
|
||||||
|
spec:
|
||||||
|
schedule: '@hourly'
|
||||||
|
concurrencyPolicy: Forbid
|
||||||
|
jobTemplate:
|
||||||
|
spec:
|
||||||
|
template:
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: renovate
|
||||||
|
# Update the image if needed
|
||||||
|
image: renovate/renovate:39.211
|
||||||
|
env:
|
||||||
|
- name: LOG_LEVEL
|
||||||
|
value: debug
|
||||||
|
envFrom:
|
||||||
|
- secretRef:
|
||||||
|
name: renovate-env
|
||||||
|
restartPolicy: Never
|
||||||
5
deploy/renovate/kustomization.yaml
Normal file
5
deploy/renovate/kustomization.yaml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
|
||||||
|
resources:
|
||||||
|
- cronjob.yaml
|
||||||
3
renovate.json
Normal file
3
renovate.json
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://docs.renovatebot.com/renovate-schema.json"
|
||||||
|
}
|
||||||
34
utils/migrate.yaml
Normal file
34
utils/migrate.yaml
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
apiVersion: batch/v1
|
||||||
|
kind: Job
|
||||||
|
metadata:
|
||||||
|
namespace: jellyfin # namespace where the PVC's exist
|
||||||
|
name: volume-migration
|
||||||
|
spec:
|
||||||
|
completions: 1
|
||||||
|
parallelism: 1
|
||||||
|
backoffLimit: 3
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
name: volume-migration
|
||||||
|
labels:
|
||||||
|
name: volume-migration
|
||||||
|
spec:
|
||||||
|
restartPolicy: Never
|
||||||
|
containers:
|
||||||
|
- name: volume-migration
|
||||||
|
image: ubuntu:xenial
|
||||||
|
tty: true
|
||||||
|
command: [ "/bin/sh" ]
|
||||||
|
args: [ "-c", "cp -r -v /mnt/old /mnt/new" ]
|
||||||
|
volumeMounts:
|
||||||
|
- name: old-vol
|
||||||
|
mountPath: /mnt/old
|
||||||
|
- name: new-vol
|
||||||
|
mountPath: /mnt/new
|
||||||
|
volumes:
|
||||||
|
- name: old-vol
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: media-pvc
|
||||||
|
- name: new-vol
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: media-rwx-pvc # change to data target PVC
|
||||||
Reference in New Issue
Block a user