163 lines
4.3 KiB
YAML
163 lines
4.3 KiB
YAML
|
|
# Job for one-time data processing
|
||
|
|
apiVersion: batch/v1
|
||
|
|
kind: Job
|
||
|
|
metadata:
|
||
|
|
name: data-processing-job
|
||
|
|
namespace: my-app
|
||
|
|
labels:
|
||
|
|
app: data-processor
|
||
|
|
job-type: batch
|
||
|
|
spec:
|
||
|
|
completions: 3 # Run 3 times
|
||
|
|
parallelism: 2 # Run 2 in parallel
|
||
|
|
backoffLimit: 3 # Retry 3 times on failure
|
||
|
|
template:
|
||
|
|
metadata:
|
||
|
|
labels:
|
||
|
|
app: data-processor
|
||
|
|
job-type: batch
|
||
|
|
spec:
|
||
|
|
restartPolicy: Never
|
||
|
|
containers:
|
||
|
|
- name: data-processor
|
||
|
|
image: python:3.9-slim
|
||
|
|
command: ["python", "process_data.py"]
|
||
|
|
env:
|
||
|
|
- name: INPUT_FILE
|
||
|
|
value: "/data/input.csv"
|
||
|
|
- name: OUTPUT_FILE
|
||
|
|
value: "/data/output.csv"
|
||
|
|
- name: DB_HOST
|
||
|
|
valueFrom:
|
||
|
|
configMapKeyRef:
|
||
|
|
name: app-config
|
||
|
|
key: DB_HOST
|
||
|
|
- name: DB_PASSWORD
|
||
|
|
valueFrom:
|
||
|
|
secretKeyRef:
|
||
|
|
name: db-secret
|
||
|
|
key: DB_PASSWORD
|
||
|
|
volumeMounts:
|
||
|
|
- name: data-volume
|
||
|
|
mountPath: /data
|
||
|
|
- name: script-volume
|
||
|
|
mountPath: /app
|
||
|
|
resources:
|
||
|
|
requests:
|
||
|
|
memory: "128Mi"
|
||
|
|
cpu: "250m"
|
||
|
|
limits:
|
||
|
|
memory: "256Mi"
|
||
|
|
cpu: "500m"
|
||
|
|
volumes:
|
||
|
|
- name: data-volume
|
||
|
|
persistentVolumeClaim:
|
||
|
|
claimName: data-pvc
|
||
|
|
- name: script-volume
|
||
|
|
configMap:
|
||
|
|
name: app-config
|
||
|
|
---
|
||
|
|
# CronJob for scheduled tasks
|
||
|
|
apiVersion: batch/v1
|
||
|
|
kind: CronJob
|
||
|
|
metadata:
|
||
|
|
name: daily-backup
|
||
|
|
namespace: my-app
|
||
|
|
labels:
|
||
|
|
app: backup
|
||
|
|
job-type: scheduled
|
||
|
|
spec:
|
||
|
|
schedule: "0 2 * * *" # Daily at 2 AM
|
||
|
|
concurrencyPolicy: Forbid # Don't run if previous job is still running
|
||
|
|
successfulJobsHistoryLimit: 3 # Keep 3 successful job histories
|
||
|
|
failedJobsHistoryLimit: 1 # Keep 1 failed job history
|
||
|
|
jobTemplate:
|
||
|
|
spec:
|
||
|
|
template:
|
||
|
|
metadata:
|
||
|
|
labels:
|
||
|
|
app: backup
|
||
|
|
job-type: scheduled
|
||
|
|
spec:
|
||
|
|
restartPolicy: OnFailure
|
||
|
|
containers:
|
||
|
|
- name: backup
|
||
|
|
image: postgres:13
|
||
|
|
command: ["/bin/bash", "-c"]
|
||
|
|
args:
|
||
|
|
- |
|
||
|
|
echo "Starting backup at $(date)"
|
||
|
|
pg_dump -h $DB_HOST -U $DB_USER -d $DB_NAME > /backup/backup-$(date +%Y%m%d).sql
|
||
|
|
echo "Backup completed at $(date)"
|
||
|
|
echo "Backup file size: $(ls -lh /backup/backup-$(date +%Y%m%d).sql)"
|
||
|
|
env:
|
||
|
|
- name: PGHOST
|
||
|
|
valueFrom:
|
||
|
|
configMapKeyRef:
|
||
|
|
name: app-config
|
||
|
|
key: DB_HOST
|
||
|
|
- name: PGUSER
|
||
|
|
valueFrom:
|
||
|
|
secretKeyRef:
|
||
|
|
name: db-secret
|
||
|
|
key: DB_USERNAME
|
||
|
|
- name: PGPASSWORD
|
||
|
|
valueFrom:
|
||
|
|
secretKeyRef:
|
||
|
|
name: db-secret
|
||
|
|
key: DB_PASSWORD
|
||
|
|
- name: PGDATABASE
|
||
|
|
value: "myapp"
|
||
|
|
volumeMounts:
|
||
|
|
- name: backup-volume
|
||
|
|
mountPath: /backup
|
||
|
|
resources:
|
||
|
|
requests:
|
||
|
|
memory: "256Mi"
|
||
|
|
cpu: "250m"
|
||
|
|
limits:
|
||
|
|
memory: "512Mi"
|
||
|
|
cpu: "500m"
|
||
|
|
volumes:
|
||
|
|
- name: backup-volume
|
||
|
|
persistentVolumeClaim:
|
||
|
|
claimName: backup-pvc
|
||
|
|
---
|
||
|
|
# CronJob for cleanup tasks
|
||
|
|
apiVersion: batch/v1
|
||
|
|
kind: CronJob
|
||
|
|
metadata:
|
||
|
|
name: cleanup-logs
|
||
|
|
namespace: my-app
|
||
|
|
labels:
|
||
|
|
app: cleanup
|
||
|
|
job-type: maintenance
|
||
|
|
spec:
|
||
|
|
schedule: "0 3 * * 0" # Weekly on Sunday at 3 AM
|
||
|
|
concurrencyPolicy: Allow
|
||
|
|
jobTemplate:
|
||
|
|
spec:
|
||
|
|
template:
|
||
|
|
metadata:
|
||
|
|
labels:
|
||
|
|
app: cleanup
|
||
|
|
job-type: maintenance
|
||
|
|
spec:
|
||
|
|
restartPolicy: OnFailure
|
||
|
|
containers:
|
||
|
|
- name: cleanup
|
||
|
|
image: alpine:latest
|
||
|
|
command: ["/bin/sh", "-c"]
|
||
|
|
args:
|
||
|
|
- |
|
||
|
|
echo "Starting log cleanup at $(date)"
|
||
|
|
find /logs -name "*.log" -mtime +7 -delete
|
||
|
|
echo "Cleanup completed at $(date)"
|
||
|
|
volumeMounts:
|
||
|
|
- name: logs-volume
|
||
|
|
mountPath: /logs
|
||
|
|
volumes:
|
||
|
|
- name: logs-volume
|
||
|
|
persistentVolumeClaim:
|
||
|
|
claimName: logs-pvc
|