feat(k8s): add MinIO deployment to nextgen namespace with shared Jellyfin rclone storage and studio ingress
Build and Push Docker Images / build (nextgen) (push) Waiting to run Details
Build and Push Docker Images / build (worker) (push) Waiting to run Details
Build and Push Docker Images / deploy (push) Blocked by required conditions Details
Build and Push Docker Images / build (api) (push) Failing after 3m6s Details
Build and Push Docker Images / build (musicseerr) (push) Has been cancelled Details
Build and Push Docker Images / build (web) (push) Has been cancelled Details

This commit is contained in:
fchinembiri 2026-08-01 12:43:09 +02:00
parent d844a0ff5b
commit 1d98804845
2 changed files with 152 additions and 0 deletions

151
k8s/nextgen/60-minio.yaml Normal file
View File

@ -0,0 +1,151 @@
apiVersion: v1
kind: Secret
metadata:
name: rclone-secret
namespace: nextgen
type: Opaque
stringData:
RCLONE_CONFIG_SEEDHOST_TYPE: sftp
RCLONE_CONFIG_SEEDHOST_HOST: wax.seedhost.eu
RCLONE_CONFIG_SEEDHOST_USER: tadiwanashe
RCLONE_CONFIG_SEEDHOST_PASS: 9uy5c06oYfPD6wpXnvYwGQ8nH0p9tm6c7ergflo
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: minio
namespace: nextgen
spec:
replicas: 1
selector:
matchLabels:
app: minio
template:
metadata:
labels:
app: minio
spec:
nodeSelector:
kubernetes.io/hostname: vmi3045103.contaboserver.net
containers:
- name: minio
image: quay.io/minio/minio:latest
command:
- sh
- -c
- "echo 'Waiting for storage mount...'; until [ -d '/data' ] && [ \"$(ls -A /data 2>/dev/null)\" ]; do sleep 1; done; echo 'Storage mount ready!'; exec minio server /data --console-address :9001"
env:
- name: MINIO_ROOT_USER
value: "minioadmin"
- name: MINIO_ROOT_PASSWORD
value: "minioadmin123"
ports:
- name: api
containerPort: 9000
- name: console
containerPort: 9001
volumeMounts:
- name: media
mountPath: /data
mountPropagation: HostToContainer
- name: rclone
image: rclone/rclone:latest
args:
- mount
- "seedhost:/home2/tadiwanashe/downloads/media"
- /data
- --allow-other
- --allow-non-empty
- --vfs-cache-mode
- full
- --vfs-cache-max-size
- 30G
- --vfs-read-chunk-size
- 128M
- --vfs-read-chunk-size-limit
- 2G
- --buffer-size
- 128M
- --vfs-cache-max-age
- 24h
- --cache-dir
- /cache
- --dir-cache-time
- 1m
securityContext:
privileged: true
capabilities:
add: ["SYS_ADMIN"]
lifecycle:
preStop:
exec:
command: ["/bin/sh", "-c", "fusermount -u /data"]
envFrom:
- secretRef:
name: rclone-secret
volumeMounts:
- name: media
mountPath: /data
mountPropagation: Bidirectional
- name: cache
mountPath: /cache
volumes:
- name: cache
emptyDir: {}
- name: media
emptyDir: {}
---
apiVersion: v1
kind: Service
metadata:
name: minio
namespace: nextgen
spec:
selector:
app: minio
ports:
- name: api
port: 9000
targetPort: 9000
- name: console
port: 9001
targetPort: 9001
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: minio-ingress
namespace: nextgen
annotations:
cert-manager.io/cluster-issuer: "letsencrypt-prod"
nginx.ingress.kubernetes.io/proxy-body-size: "0"
spec:
ingressClassName: nginx
tls:
- hosts:
- minio.next-gen.techarvest.co.zw
secretName: minio-nextgen-api-tls
- hosts:
- studio.minio.next-gen.techarvest.co.zw
secretName: studio-minio-nextgen-tls
rules:
- host: minio.next-gen.techarvest.co.zw
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: minio
port:
number: 9000
- host: studio.minio.next-gen.techarvest.co.zw
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: minio
port:
number: 9001

View File

@ -11,6 +11,7 @@ resources:
- supabase-nextgen-credentials.yaml
- supabase-nextgen.yaml
- supabase-nextgen-ingress.yaml
- 60-minio.yaml