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