Velero: Difference between revisions
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 11: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
```