Difference between revisions of "Pv-migrate"

From UVOO Tech Wiki
Jump to navigation Jump to search
 
(3 intermediate revisions by the same user not shown)
Line 15: Line 15:
 
sudo mv pv-migrate /usr/local/bin/
 
sudo mv pv-migrate /usr/local/bin/
 
pv-migrate --version
 
pv-migrate --version
 +
```
 +
 +
 +
# Backup to ceph-rbd
 +
 +
wordpress.tmp.pvc.yaml
 +
```
 +
---
 +
apiVersion: v1
 +
kind: PersistentVolumeClaim
 +
metadata:
 +
  name: data-wordpress-mariadb-0-a
 +
spec:
 +
  accessModes:
 +
  - ReadWriteOnce
 +
  storageClassName: ceph-rbd
 +
  resources:
 +
    requests:
 +
      storage: 8Gi
 +
---
 +
apiVersion: v1
 +
kind: PersistentVolumeClaim
 +
metadata:
 +
  name: wordpress-a
 +
spec:
 +
  accessModes:
 +
  - ReadWriteOnce
 +
  storageClassName: ceph-rbd
 +
  resources:
 +
    requests:
 +
      storage: 10Gi
 +
```
 +
 +
```
 +
kubectl apply -f wordpress.tmp.pvc.yaml
 +
```
 +
 +
## Migrate to temporary backup pvcs
 +
 +
```
 +
kubectl scale deployment wordpress --replicas=0
 +
kubectl scale statefulset wordpress-mariadb --replicas=0
 +
 +
sleep 5
 +
 +
pv-migrate migrate \
 +
  data-wordpress-mariadb-0 data-wordpress-mariadb-0-a
 +
 +
pv-migrate migrate \
 +
  wordpress wordpress-a
 +
```
 +
 +
Scale
 +
```
 +
#!/bin/bash
 +
set -eu
 +
kubectl scale deployment wordpress --replicas=0
 +
kubectl scale statefulset wordpress-mariadb --replicas=0
 +
 +
sleep 5
 +
pv-migrate migrate \
 +
  data-wordpress-mariadb-0-a data-wordpress-mariadb-0
 +
 +
pv-migrate migrate \
 +
  wordpress-a wordpress
 +
 +
kubectl scale deployment wordpress --replicas=1
 +
kubectl scale statefulset wordpress-mariadb --replicas=1
 +
 +
exit
 +
```
 +
 +
 +
# Example helm wordpress
 +
 +
cm.yaml
 +
```
 +
apiVersion: v1
 +
kind: ConfigMap
 +
metadata:
 +
  name: php-ini
 +
  labels:
 +
    app.kubernetes.io/name: wordpress
 +
data:
 +
  php-custom.ini: |
 +
    upload_max_filesize = 2256M
 +
    post_max_size = 2256M
 +
    max_execution_time = 360
 +
    max_input_time = 360
 +
    memory_limit = 2512M
 +
```
 +
 +
main.sh
 +
```
 +
#!/bin/bash
 +
set -eu
 +
 +
kubectl_apply "-f cm.yaml"
 +
helm upgrade --install wordpress bitnami/wordpress
 +
# if custom values
 +
# envsubst < values.yaml.envsubst > values.yaml
 +
# helm upgrade --install wordpress bitnami/wordpress values.yaml
 +
```
 +
 +
## Run
 +
```
 +
./main.sh
 
```
 
```

Latest revision as of 20:25, 2 December 2023

pv-migrate

https://devopstales.github.io/home/k8s-migrate-pv/

https://github.com/utkuozdemir/pv-migrate

https://github.com/utkuozdemir/pv-migrate/blob/master/USAGE.md

Add

#!/bin/sh
set -eu
curl -LO https://github.com/utkuozdemir/pv-migrate/releases/download/v1.7.1/pv-migrate_v1.7.1_linux_x86_64.tar.gz
tar xf pv-migrate_v1.7.1_linux_x86_64.tar.gz
sudo mv pv-migrate /usr/local/bin/
pv-migrate --version

Backup to ceph-rbd

wordpress.tmp.pvc.yaml

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: data-wordpress-mariadb-0-a
spec:
  accessModes:
  - ReadWriteOnce
  storageClassName: ceph-rbd
  resources:
    requests:
      storage: 8Gi
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: wordpress-a
spec:
  accessModes:
  - ReadWriteOnce
  storageClassName: ceph-rbd
  resources:
    requests:
      storage: 10Gi
kubectl apply -f wordpress.tmp.pvc.yaml

Migrate to temporary backup pvcs

kubectl scale deployment wordpress --replicas=0
kubectl scale statefulset wordpress-mariadb --replicas=0

sleep 5

pv-migrate migrate \
  data-wordpress-mariadb-0 data-wordpress-mariadb-0-a

pv-migrate migrate \
  wordpress wordpress-a

Scale

#!/bin/bash
set -eu
kubectl scale deployment wordpress --replicas=0
kubectl scale statefulset wordpress-mariadb --replicas=0

sleep 5
pv-migrate migrate \
  data-wordpress-mariadb-0-a data-wordpress-mariadb-0

pv-migrate migrate \
  wordpress-a wordpress

kubectl scale deployment wordpress --replicas=1
kubectl scale statefulset wordpress-mariadb --replicas=1

exit

Example helm wordpress

cm.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: php-ini
  labels:
    app.kubernetes.io/name: wordpress
data:
  php-custom.ini: |
    upload_max_filesize = 2256M
    post_max_size = 2256M
    max_execution_time = 360
    max_input_time = 360
    memory_limit = 2512M

main.sh

#!/bin/bash
set -eu

kubectl_apply "-f cm.yaml"
helm upgrade --install wordpress bitnami/wordpress
# if custom values
# envsubst < values.yaml.envsubst > values.yaml
# helm upgrade --install wordpress bitnami/wordpress values.yaml

Run

./main.sh