50 lines
1.9 KiB
Plaintext
50 lines
1.9 KiB
Plaintext
# Разовый Job для переноса состояния redis из docker compose в k8s (maintenance window).
|
|
# Файл .example -> deploy-пайплайн его не применяет (маска *.example.yaml).
|
|
#
|
|
# Runbook:
|
|
# 1. docker compose -f <repo>/edu_master/compose.yaml stop # SIGTERM -> redis сбросит dump.rdb
|
|
# 2. docker run --rm -v edu_master_redis-data:/data \
|
|
# -v /tmp/edu-master-backup:/backup \
|
|
# redis:alpine sh -c "cp /data/dump.rdb /backup/ && ls -la /backup"
|
|
# 3. kubectl apply -f edu_master/k8s/namespace.yaml
|
|
# 4. kubectl apply -f <только PVC из redis.yaml> # seed строго ДО старта redis-пода
|
|
# 5. kubectl apply -f edu_master/k8s/restore-seed-job.yaml.example
|
|
# kubectl wait --for=condition=complete job/redis-restore-seed -n edu-master --timeout=120s
|
|
# 6. kubectl delete job redis-restore-seed -n edu-master
|
|
# 7. kubectl apply -f edu_master/k8s/ -R # остальные манифесты
|
|
apiVersion: batch/v1
|
|
kind: Job
|
|
metadata:
|
|
name: redis-restore-seed
|
|
namespace: edu-master
|
|
spec:
|
|
backoffLimit: 2
|
|
ttlSecondsAfterFinished: 3600
|
|
template:
|
|
spec:
|
|
restartPolicy: Never
|
|
containers:
|
|
- name: seed
|
|
image: redis:alpine
|
|
command:
|
|
- /bin/sh
|
|
- -ec
|
|
- |
|
|
ls -la /backup
|
|
cp /backup/dump.rdb /data/dump.rdb
|
|
chmod 644 /data/dump.rdb
|
|
ls -la /data
|
|
volumeMounts:
|
|
- name: redis-data
|
|
mountPath: /data
|
|
- name: backup
|
|
mountPath: /backup
|
|
readOnly: true
|
|
volumes:
|
|
- name: redis-data
|
|
persistentVolumeClaim:
|
|
claimName: redis-data-pvc
|
|
- name: backup
|
|
hostPath:
|
|
path: /tmp/edu-master-backup
|
|
type: DirectoryOrCreate |