Fixes #2170 The number of days to delay file replication deletion by is configurable in the Helm chart with `replica_deletion_delay_days` (set by default to 7 days in `values.yaml` to encourage good practice, though we could change this). When `replica_deletion_delay_days` is set to an int above 0, when a delete replica job would otherwise be started as a Kubernetes Job, a CronJob is created instead with a cron schedule set to run yearly, starting x days from the current moment. This cronjob is then deleted by the operator after the job successfully completes. If a failed background job is retried, it is re-run immediately as a Job rather than being scheduled out into the future again. --------- Co-authored-by: Ilya Kreymer <ikreymer@users.noreply.github.com>
		
			
				
	
	
		
			82 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| apiVersion: batch/v1
 | |
| kind: CronJob
 | |
| metadata:
 | |
|   name: "{{ id }}"
 | |
|   labels:
 | |
|     role: "cron-background-job"
 | |
|     job_type: {{ job_type }}
 | |
|     btrix.org: {{ oid }}
 | |
| 
 | |
| spec:
 | |
|   concurrencyPolicy: Forbid
 | |
|   successfulJobsHistoryLimit: 0
 | |
|   failedJobsHistoryLimit: 2
 | |
| 
 | |
|   schedule: "{{ schedule }}"
 | |
| 
 | |
|   jobTemplate:
 | |
|     metadata:
 | |
|       labels:
 | |
|         role: "background-job"
 | |
|         job_type: {{ job_type }}
 | |
|         job_id: {{ id }}
 | |
|         btrix.org: {{ oid }}
 | |
| 
 | |
|     spec:
 | |
|       template:
 | |
|         spec:
 | |
|           restartPolicy: Never
 | |
|           priorityClassName: bg-job
 | |
|           podFailurePolicy:
 | |
|             rules:
 | |
|             - action: FailJob
 | |
|               onExitCodes:
 | |
|                 containerName: rclone
 | |
|                 operator: NotIn
 | |
|                 values: [0]
 | |
| 
 | |
|           containers:
 | |
|             - name: rclone
 | |
|               image: rclone/rclone:latest
 | |
|               env:
 | |
| 
 | |
|               - name: RCLONE_CONFIG_REPLICA_TYPE
 | |
|                 value: "s3"
 | |
| 
 | |
|               - name: RCLONE_CONFIG_REPLICA_ACCESS_KEY_ID
 | |
|                 valueFrom:
 | |
|                   secretKeyRef:
 | |
|                     name: "{{ replica_secret_name }}"
 | |
|                     key: STORE_ACCESS_KEY
 | |
| 
 | |
|               - name: RCLONE_CONFIG_REPLICA_SECRET_ACCESS_KEY
 | |
|                 valueFrom:
 | |
|                   secretKeyRef:
 | |
|                     name: "{{ replica_secret_name }}"
 | |
|                     key: STORE_SECRET_KEY
 | |
| 
 | |
|               - name: RCLONE_CONFIG_REPLICA_REGION
 | |
|                 valueFrom:
 | |
|                   secretKeyRef:
 | |
|                     name: "{{ replica_secret_name }}"
 | |
|                     key: STORE_REGION
 | |
| 
 | |
|               - name: RCLONE_CONFIG_REPLICA_PROVIDER
 | |
|                 valueFrom:
 | |
|                   secretKeyRef:
 | |
|                     name: "{{ replica_secret_name }}"
 | |
|                     key: STORE_S3_PROVIDER
 | |
| 
 | |
|               - name: RCLONE_CONFIG_REPLICA_ENDPOINT
 | |
|                 value: "{{ replica_endpoint }}"
 | |
| 
 | |
|               command: ["rclone", "-vv", "delete", "replica:{{ replica_file_path }}"]
 | |
| 
 | |
|               resources:
 | |
|                 limits:
 | |
|                   memory: "200Mi"
 | |
| 
 | |
|                 requests:
 | |
|                   memory: "200Mi"
 | |
|                   cpu: "50m"
 |