apiVersion: batch/v1
kind: CronJob
metadata:
  name: jupyterhub-user-backup
spec:
  # 매일 자정(00:00)에 실행 (https://crontab.guru/ 참조)
  schedule: "0 0 * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: backup-container
            image: alpine:latest
            command:
            - /bin/sh
            - -c
            - |
              echo "Starting backup job..."
              BACKUP_FILE="jupyterhub-users-$(date +%Y-%m-%d).tar.gz"
              tar -czf "/backup/${BACKUP_FILE}" /data
              echo "Backup completed: ${BACKUP_FILE}"
            volumeMounts:
            - name: user-data-volume
              mountPath: /data
              readOnly: true
            - name: backup-volume
              mountPath: /backup
          restartPolicy: OnFailure
          volumes:
          # --- 중요: 아래 NFS 서버 정보를 실제 환경에 맞게 수정해야 합니다. ---
          - name: user-data-volume
            nfs:
              # 사용자 데이터가 저장된 NFS 서버의 IP 또는 도메인
              server: "YOUR_NFS_SERVER_IP"
              # JupyterHub 데이터가 저장된 NFS 공유 경로
              path: "/path/to/your/jupyterhub/data"
              readOnly: true
          - name: backup-volume
            nfs:
              # 백업 파일을 저장할 NFS 서버의 IP 또는 도메인 (데이터 서버와 같을 수도 있음)
              server: "YOUR_NFS_SERVER_IP"
              # 백업을 저장할 공유 경로
              path: "/path/to/your/backup/directory" 