Aller au contenu

Lab Adv 01 : Velero - Sauvegarde et restauration de cluster

  • Installer Velero sur un cluster Kubernetes.
  • Configurer Velero pour sauvegarder et restaurer des ressources Kubernetes.
  • Tester la sauvegarde et la restauration d’un pod avec un hook pre-backup.
  • Vérifier le contenu du backup dans un bucket S3 d’Outscale.
  1. Un cluster Kubernetes opérationnel fourni par OKS.
  2. Accès à la CLI kubectl.
  3. Droits administrateurs sur le cluster.
  4. Outils nécessaires :
    • aws-cli : Outil en ligne de commande pour interagir avec AWS S3. Vous pouvez l’installer en suivant les instructions ici.
    • s3cmd : Un autre outil pour interagir avec S3, notamment pour la gestion des fichiers dans les buckets. L’installation est décrite ici.
  5. Accès à un compte Outscale :
    • Vous aurez besoin d’un compte Outscale pour créer un bucket et interagir avec celui-ci.
  6. Configurer AWS CLI :
    • Une fois AWS CLI installé, vous devez configurer les informations d’authentification en exécutant la commande suivante :
Terminal window
aws configure

Cela vous demandera vos clés d’accès AWS (Access Key et Secret Key), la région (par exemple eu-west-2), et le format de sortie préféré (par défaut json).

  1. Créer un bucket S3 dans Outscale :
    • Vous devez avoir un bucket S3 pour y stocker vos backups Velero. Suivez les étapes ci-dessous pour créer et configurer ce bucket dans Outscale.
Terminal window
oks-cli cluster kubeconfig --cluster-name my-cluster --project-name my-project > kubeconfig.yaml
export KUBECONFIG=./kubeconfig.yaml
Terminal window
kubectl get nodes

Créer un bucket nommé velero-bucket-oks :

Terminal window
aws s3api create-bucket --bucket velero-bucket-oks --endpoint https://oos.eu-west-2.outscale.com

Vérifier que le bucket a bien été créé :

Terminal window
aws s3api list-buckets --endpoint https://oos.eu-west-2.outscale.com

Créer un fichier bucket-policy.json avec le contenu suivant :

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::velero-bucket-oks",
"arn:aws:s3:::velero-bucket-oks/*"
]
}
]
}

Appliquer la policy au bucket :

Terminal window
aws s3api put-bucket-policy --bucket velero-bucket-oks --policy file://bucket-policy.json --endpoint https://oos.eu-west-2.outscale.com

Vérifier que la policy a bien été appliquée :

Terminal window
aws s3api get-bucket-policy --bucket velero-bucket-oks --endpoint https://oos.eu-west-2.outscale.com

Installer Velero avec Helm :

Terminal window
helm repo add vmware-tanzu https://vmware-tanzu.github.io/helm-charts
helm install velero vmware-tanzu/velero \
--namespace velero \
--create-namespace \
--set-file credentials.secretContents.cloud=$(echo ~/.aws/credentials) \
--set configuration.backupStorageLocation[0].name=default \
--set configuration.backupStorageLocation[0].provider=aws \
--set configuration.backupStorageLocation[0].bucket=velero-bucket-oks \
--set configuration.backupStorageLocation[0].config.region=eu-west-2 \
--set configuration.backupStorageLocation[0].config.s3Url=https://oos.eu-west-2.outscale.com \
--set configuration.volumeSnapshotLocation[0].name=default \
--set configuration.volumeSnapshotLocation[0].provider=aws \
--set configuration.volumeSnapshotLocation[0].config.region=eu-west-2 \
--set initContainers[0].name=velero-plugin-for-aws \
--set initContainers[0].image=velero/velero-plugin-for-aws:v1.7.0 \
--set initContainers[0].volumeMounts[0].mountPath=/target \
--set initContainers[0].volumeMounts[0].name=plugins

Exemple de configuration d’un pod avec un hook pre-backup :

---
apiVersion: v1
kind: Pod
metadata:
name: my-app
annotations:
pre.hook.backup.velero.io/command: '["/bin/sh", "-c", "echo Running_pre-backup_hook"]'
spec:
containers:
- name: my-app-container
image: nginx

Appliquer la configuration :

Terminal window
kubectl apply -f my-app-with-hook.yaml

Créer un backup incluant le namespace default :

Terminal window
velero backup create my-backup-with-hook --include-namespaces default --wait

Vérifier si le backup a bien été effectué :

Terminal window
velero backup get

Consulter les logs du pod pour s’assurer que le hook a bien été exécuté :

Terminal window
velero backup logs my-backup-with-hook

Vous devriez voir le message Running pre-backup hook dans les logs.

Vérification du Contenu du Backup dans le Bucket Outscale

Section intitulée « Vérification du Contenu du Backup dans le Bucket Outscale »

Lister les objets dans le bucket Outscale avec s3cmd :

Terminal window
s3cmd ls s3://velero-bucket-oks

Ou avec AWS CLI :

Terminal window
aws s3 ls s3://velero-bucket-oks --recursive

Supprimer toutes les ressources du namespace default :

Terminal window
kubectl delete all --all -n default

Restaurer le backup :

Terminal window
velero restore create --from-backup my-backup-with-hook --wait

Vérifier que les ressources ont bien été restaurées :

Terminal window
kubectl get all -n default

Dans ce lab, vous avez appris à installer Velero, à configurer un backup avec un hook pre-backup, et à vérifier le contenu du backup dans un bucket S3 d’Outscale. Vous avez également testé la restauration des ressources à partir du backup. Vous êtes maintenant prêt à utiliser Velero pour gérer vos sauvegardes et restaurations de cluster Kubernetes.