Velero: Difference between revisions

From Essential
Jump to navigation Jump to search
No edit summary
No edit summary
Line 70: Line 70:
EOF
EOF
</syntaxhighlight>
</syntaxhighlight>
== documentation MD ==
<pre>
# Ajouter Velero à C2
Ce guide vous explique comment ajouter Velero à C2 pour effectuer des sauvegardes et des restaurations de ressources Kubernetes.
## 1) Création du bucket S3
Avant d'installer Velero, vous devez créer un bucket S3 où les sauvegardes seront stockées.
Pour créer le bucket S3, exécutez les commandes suivantes :
```bash
# Définir les variables d'environnement
export s3Url=https://minio.c1.mi.infocepo.com                                       
export bucketName=mi0003                           
export AccessKey=8Nko6oyZ8rZ1f7ch
echo SecretKey ;read i &&export SecretKey=$i
```
```bash
# Créer le bucket S3
aws s3api create-bucket --endpoint-url $s3Url --no-verify-ssl --bucket $bucketName
```
Importer votre secret :
```bash
cat <<EOT > ~/credentials-velero
[default]
aws_access_key_id = $AccessKey
aws_secret_access_key = $SecretKey
EOT
```
Assurez-vous de remplacer les valeurs des variables d'environnement `s3Url`, `bucketName` et `SecretKey` selon votre configuration.
## 2) Installation de Velero avec Helm
Pour installer Velero, suivez les étapes ci-dessous :
### 2.1) Ajouter le référentiel Helm Velero
```bash
export nameSpace=velero
helm repo add vmware-tanzu https://vmware-tanzu.github.io/helm-charts
helm repo update
```
### 2.2) Installer Velero avec les paramètres appropriés
```bash
kubectl create namespace $nameSpace
```
```bash
helm install velero vmware-tanzu/velero \
  --namespace $nameSpace \
  --set-file credentials.secretContents.cloud=$(realpath ~/credentials-velero ) \
  --set configuration.backupStorageLocation[0].provider=aws \
  --set configuration.backupStorageLocation[0].name=default \
  --set configuration.backupStorageLocation[0].bucket=${bucketName} \
  --set configuration.backupStorageLocation[0].config.region=minio \
  --set configuration.backupStorageLocation[0].config.s3ForcePathStyle=true \
  --set configuration.backupStorageLocation[0].config.s3Url=${s3Url} \
  --set snapshotsEnabled=false \
  --set deployNodeAgent=true \
  --set 'initContainers[0].name=velero-plugin-for-aws' \
  --set 'initContainers[0].volumeMounts[0].mountPath=/target' \
  --set 'initContainers[0].image=velero/velero-plugin-for-aws:v1.2.0' \
  --set 'initContainers[0].volumeMounts[0].name=plugins'
```
Assurez-vous de remplacer les valeurs des paramètres selon votre configuration :
- `credentials.secretContents.cloud` : Chemin du fichier contenant les informations d'identification pour Velero.
- `configuration.backupStorageLocation.bucket` : Nom du bucket de stockage des sauvegardes.
- `configuration.backupStorageLocation.config.region` : Région où est situé le stockage des sauvegardes.
- `configuration.backupStorageLocation.config.s3Url` : URL S3 personnalisée pour l'adresse du service de stockage.
Vérifiez que Velero est correctement installé en exécutant la commande suivante :
```bash
kubectl get pods -n $nameSpace
```
## 3) Utilisation de Velero
Une fois Velero installé, vous pouvez utiliser les commandes suivantes pour effectuer des sauvegardes et des restaurations de ressources Kubernetes.
Tout d'abord, définissez le `storageLocation` de Velero en ex
écutant la commande `kubectl api-resources`.
### 3.1) Création d'une sauvegarde
```bash
==BACKUP==
export nameSpace=infra-root
export backupSuffix="-$(date '+%Y%m%d-%H')"
export backupName=${nameSpace}${backupSuffix}
cat <<EOF |kubectl -n velero apply -f -
apiVersion: velero.io/v1
kind: Backup
metadata:
  name: ${backupName}
spec:
  defaultVolumesToRestic: true
  snapshotVolumes: true
  includedNamespaces:
  - ${nameSpace}
  storageLocation: default
  ttl: 240h0m0s
EOF
```
```bash
export nameSpace=infra-root
export backupSuffix="-$(date '+%Y%m%d-%H')"
export backupName=${nameSpace}${backupSuffix}
```
Créez un fichier `backup.yaml` et ajoutez le code suivant :
```yaml
apiVersion: velero.io/v1
kind: Backup
metadata:
  name: ${backupName}
spec:
  defaultVolumesToRestic: true
  snapshotVolumes: true
  includedNamespaces:
  - ${nameSpace}
  storageLocation: default
  ttl: 240h0m0s
```
### 3.2) Création d'une restauration
```bash
==RESTORE==
export nameSpace=openproject
export nameSpaceDestination=openproject2
export backupSuffix="-$(date '+%Y%m%d-%H')"
export backupName=${nameSpace}${backupSuffix}
export restoreName=${nameSpace}${backupSuffix}
cat <<EOF |kubectl -n velero apply -f -
apiVersion: velero.io/v1
kind: Restore
metadata:
  name: ${restoreName}
spec:
  backupName: ${backupName}
  restorePVs: true
  namespaceMapping:
    ${nameSpace}: ${nameSpaceDestination}
EOF
```
```bash
export restoreName=infra-root
export nameSpaceDestination=ns-restore
```
Créez un fichier `restore.yaml` et ajoutez le code suivant :
```yaml
apiVersion: velero.io/v1
kind: Restore
metadata:
  name: ${restoreName}
spec:
  backupName: ${backupName}
  restorePVs: true
  namespaceMapping:
    ${nameSpace}: ${nameSpaceDestination}
```
Assurez-vous de remplacer les variables `${backupName}`, `${nameSpace}`, `${nameSpaceDestination}` et `<nom de storageLocation>` selon vos besoins.
Vous pouvez utiliser ces fichiers YAML pour créer des sauvegardes et effectuer des restaurations en utilisant la commande `kubectl apply -f <fichier.yaml>`.
```bash
#==SCEDULE==
export namespaceList="velero
openproject"
echo "${namespaceList}" |while read nameSpace ;do
  scheduleName=$nameSpace
  cat <<EOF |kubectl -n velero apply -f -
apiVersion: velero.io/v1
kind: Schedule
metadata:
  name: ${scheduleName}
spec:
  schedule: '0 0 * * * '
  template:
    storageLocation: default
    ttl: 240h0m0s
    defaultVolumesToRestic: true
    includedNamespaces:
      - ${nameSpace}
EOF
done
```
</pre>

Revision as of 12:02, 17 July 2023

restore.sh

#!/bin/bash
# <source_ns> [destination_ns]

nameSpace=$1
nameSpaceDestination=$2

echo

# Read file names into an array
mapfile -t files_array < <(oc get Backup -n openshift-adp -o name |tac |cut -d/ -f2 |grep -w $nameSpace)

# Display the index number and file name for each file in the array
echo "Backups :"
for ((i=0; i<${#files_array[@]}; i++)); do
    echo "$i:${files_array[$i]}"
done

echo
echo "Select index [0]:" 
read i
[ -z $i ] &&i=0
backupName="${files_array[$i]}"

[ -z $nameSpaceDestination ] &&nameSpaceDestination=$nameSpace
kubectl get ns $nameSpaceDestination -o name >/dev/null 2>&1 &&nameSpaceDestination=${nameSpaceDestination}-$(echo $RANDOM |md5sum |cut -c1-6 )

OADP_OPERATOR_NAMESPACE=openshift-adp
cat <<EOF |kubectl -n ${OADP_OPERATOR_NAMESPACE} apply -f -
apiVersion: velero.io/v1
kind: Restore
metadata:
  name: ${nameSpace}-$(date '+%Y%m%d%H%M')
spec:
  backupName: ${backupName}
  restorePVs: true
  namespaceMapping:
    ${nameSpace}: ${nameSpaceDestination}
EOF

watch kubectl get all -n ${nameSpaceDestination}

backup.sh

#!/bin/bash
# <source_ns>

export nameSpace=$1

backupSuffix="-$(date '+%Y%m%d-%H-%M')"
backupName=${nameSpace}${backupSuffix}
export OADP_OPERATOR_NAMESPACE=openshift-adp

cat <<EOF |kubectl -n ${OADP_OPERATOR_NAMESPACE} apply -f - |cut -d' ' -f1 |xargs watch kubectl -o jsonpath='{.status.phase}' -n ${OADP_OPERATOR_NAMESPACE} get
apiVersion: velero.io/v1
kind: Backup
metadata:
  name: ${backupName}
spec:
  defaultVolumesToRestic: true
  snapshotVolumes: true
  includedNamespaces:
  - ${nameSpace}
  storageLocation: velero-1
  ttl: 240h0m0s
  volumeSnapshotLocations:
  - velero-1
EOF

documentation MD

# Ajouter Velero à C2

Ce guide vous explique comment ajouter Velero à C2 pour effectuer des sauvegardes et des restaurations de ressources Kubernetes.

## 1) Création du bucket S3

Avant d'installer Velero, vous devez créer un bucket S3 où les sauvegardes seront stockées. 
Pour créer le bucket S3, exécutez les commandes suivantes :

```bash
# Définir les variables d'environnement
export s3Url=https://minio.c1.mi.infocepo.com                                         
export bucketName=mi0003                             
export AccessKey=8Nko6oyZ8rZ1f7ch
echo SecretKey ;read i &&export SecretKey=$i
```
```bash
# Créer le bucket S3
aws s3api create-bucket --endpoint-url $s3Url --no-verify-ssl --bucket $bucketName
```
Importer votre secret :
```bash
cat <<EOT > ~/credentials-velero
[default]
aws_access_key_id = $AccessKey
aws_secret_access_key = $SecretKey
EOT
```

Assurez-vous de remplacer les valeurs des variables d'environnement `s3Url`, `bucketName` et `SecretKey` selon votre configuration.

## 2) Installation de Velero avec Helm

Pour installer Velero, suivez les étapes ci-dessous :
 

### 2.1) Ajouter le référentiel Helm Velero

```bash
export nameSpace=velero
helm repo add vmware-tanzu https://vmware-tanzu.github.io/helm-charts
helm repo update
```

### 2.2) Installer Velero avec les paramètres appropriés
```bash
kubectl create namespace $nameSpace
```

```bash
helm install velero vmware-tanzu/velero \
  --namespace $nameSpace \
  --set-file credentials.secretContents.cloud=$(realpath ~/credentials-velero ) \
  --set configuration.backupStorageLocation[0].provider=aws \
  --set configuration.backupStorageLocation[0].name=default \
  --set configuration.backupStorageLocation[0].bucket=${bucketName} \
  --set configuration.backupStorageLocation[0].config.region=minio \
  --set configuration.backupStorageLocation[0].config.s3ForcePathStyle=true \
  --set configuration.backupStorageLocation[0].config.s3Url=${s3Url} \
  --set snapshotsEnabled=false \
  --set deployNodeAgent=true \
  --set 'initContainers[0].name=velero-plugin-for-aws' \
  --set 'initContainers[0].volumeMounts[0].mountPath=/target' \
  --set 'initContainers[0].image=velero/velero-plugin-for-aws:v1.2.0' \
  --set 'initContainers[0].volumeMounts[0].name=plugins'
```

Assurez-vous de remplacer les valeurs des paramètres selon votre configuration :

- `credentials.secretContents.cloud` : Chemin du fichier contenant les informations d'identification pour Velero.
- `configuration.backupStorageLocation.bucket` : Nom du bucket de stockage des sauvegardes.
- `configuration.backupStorageLocation.config.region` : Région où est situé le stockage des sauvegardes.
- `configuration.backupStorageLocation.config.s3Url` : URL S3 personnalisée pour l'adresse du service de stockage.

Vérifiez que Velero est correctement installé en exécutant la commande suivante :

```bash
kubectl get pods -n $nameSpace
```

## 3) Utilisation de Velero

Une fois Velero installé, vous pouvez utiliser les commandes suivantes pour effectuer des sauvegardes et des restaurations de ressources Kubernetes.

Tout d'abord, définissez le `storageLocation` de Velero en ex

écutant la commande `kubectl api-resources`.

### 3.1) Création d'une sauvegarde

```bash
==BACKUP==
export nameSpace=infra-root

export backupSuffix="-$(date '+%Y%m%d-%H')"
export backupName=${nameSpace}${backupSuffix}

cat <<EOF |kubectl -n velero apply -f -
apiVersion: velero.io/v1
kind: Backup
metadata:
  name: ${backupName}
spec:
  defaultVolumesToRestic: true
  snapshotVolumes: true
  includedNamespaces:
  - ${nameSpace}
  storageLocation: default
  ttl: 240h0m0s
EOF
```
```bash
export nameSpace=infra-root
export backupSuffix="-$(date '+%Y%m%d-%H')"
export backupName=${nameSpace}${backupSuffix}
```

Créez un fichier `backup.yaml` et ajoutez le code suivant :

```yaml
apiVersion: velero.io/v1
kind: Backup
metadata:
  name: ${backupName}
spec:
  defaultVolumesToRestic: true
  snapshotVolumes: true
  includedNamespaces:
  - ${nameSpace}
  storageLocation: default
  ttl: 240h0m0s
```

### 3.2) Création d'une restauration

```bash
==RESTORE==
export nameSpace=openproject
export nameSpaceDestination=openproject2

export backupSuffix="-$(date '+%Y%m%d-%H')"
export backupName=${nameSpace}${backupSuffix}
export restoreName=${nameSpace}${backupSuffix}

cat <<EOF |kubectl -n velero apply -f -
apiVersion: velero.io/v1
kind: Restore
metadata:
  name: ${restoreName}
spec:
  backupName: ${backupName}
  restorePVs: true
  namespaceMapping:
    ${nameSpace}: ${nameSpaceDestination}
EOF
```
```bash
export restoreName=infra-root
export nameSpaceDestination=ns-restore
```

Créez un fichier `restore.yaml` et ajoutez le code suivant :

```yaml
apiVersion: velero.io/v1
kind: Restore
metadata:
  name: ${restoreName}
spec:
  backupName: ${backupName}
  restorePVs: true
  namespaceMapping:
    ${nameSpace}: ${nameSpaceDestination}
```

Assurez-vous de remplacer les variables `${backupName}`, `${nameSpace}`, `${nameSpaceDestination}` et `<nom de storageLocation>` selon vos besoins.

Vous pouvez utiliser ces fichiers YAML pour créer des sauvegardes et effectuer des restaurations en utilisant la commande `kubectl apply -f <fichier.yaml>`.

```bash
#==SCEDULE==
export namespaceList="velero
openproject"

echo "${namespaceList}" |while read nameSpace ;do
  scheduleName=$nameSpace
  cat <<EOF |kubectl -n velero apply -f -
apiVersion: velero.io/v1
kind: Schedule
metadata:
  name: ${scheduleName}
spec:
  schedule: '0 0 * * * '
  template:
    storageLocation: default
    ttl: 240h0m0s
    defaultVolumesToRestic: true
    includedNamespaces:
      - ${nameSpace}
EOF
done
```