Lab Adv 01 : Velero - Sauvegarde et restauration de cluster
Objectifs du Lab
Section intitulée « Objectifs du Lab »- 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.
Pré-requis
Section intitulée « Pré-requis »- Un cluster Kubernetes opérationnel fourni par OKS.
- Accès à la CLI
kubectl. - Droits administrateurs sur le cluster.
- Outils nécessaires :
- Accès à un compte Outscale :
- Vous aurez besoin d’un compte Outscale pour créer un bucket et interagir avec celui-ci.
- Configurer AWS CLI :
- Une fois AWS CLI installé, vous devez configurer les informations d’authentification en exécutant la commande suivante :
aws configureCela 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).
- 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.
Récupérer le fichier kubeconfig
Section intitulée « Récupérer le fichier kubeconfig »oks-cli cluster kubeconfig --cluster-name my-cluster --project-name my-project > kubeconfig.yamlexport KUBECONFIG=./kubeconfig.yamlTester le cluster
Section intitulée « Tester le cluster »kubectl get nodesCréation du Bucket
Section intitulée « Création du Bucket »Créer un bucket nommé velero-bucket-oks :
aws s3api create-bucket --bucket velero-bucket-oks --endpoint https://oos.eu-west-2.outscale.comVérification du Bucket
Section intitulée « Vérification du Bucket »Vérifier que le bucket a bien été créé :
aws s3api list-buckets --endpoint https://oos.eu-west-2.outscale.comCréation de la Policy du Bucket
Section intitulée « Création de la Policy du Bucket »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/*" ] } ]}Attachement de la Policy
Section intitulée « Attachement de la Policy »Appliquer la policy au bucket :
aws s3api put-bucket-policy --bucket velero-bucket-oks --policy file://bucket-policy.json --endpoint https://oos.eu-west-2.outscale.comVérification de la Policy
Section intitulée « Vérification de la Policy »Vérifier que la policy a bien été appliquée :
aws s3api get-bucket-policy --bucket velero-bucket-oks --endpoint https://oos.eu-west-2.outscale.comInstallation de Velero
Section intitulée « Installation de Velero »Installer Velero avec Helm :
helm repo add vmware-tanzu https://vmware-tanzu.github.io/helm-chartshelm 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=pluginsCréation d’un Pod avec un Hook
Section intitulée « Création d’un Pod avec un Hook »Exemple de configuration d’un pod avec un hook pre-backup :
---apiVersion: v1kind: Podmetadata: 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: nginxAppliquer la configuration :
kubectl apply -f my-app-with-hook.yamlCréation d’un Backup avec Hook
Section intitulée « Création d’un Backup avec Hook »Créer un backup incluant le namespace default :
velero backup create my-backup-with-hook --include-namespaces default --waitVérification du Statut du Backup
Section intitulée « Vérification du Statut du Backup »Vérifier si le backup a bien été effectué :
velero backup getVérification des Logs du Pod
Section intitulée « Vérification des Logs du Pod »Consulter les logs du pod pour s’assurer que le hook a bien été exécuté :
velero backup logs my-backup-with-hookVous 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 :
s3cmd ls s3://velero-bucket-oksOu avec AWS CLI :
aws s3 ls s3://velero-bucket-oks --recursiveSupprimer toutes les ressources du namespace default :
kubectl delete all --all -n defaultRestaurer le backup :
velero restore create --from-backup my-backup-with-hook --waitVérifier que les ressources ont bien été restaurées :
kubectl get all -n defaultConclusion
Section intitulée « Conclusion »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.