Handleiding Velero

Het kan soms voorkomen dat je een foutje maakt in je productie kubernetescluster en je dit dan het liefst eigenlijk zo snel mogelijk wilt terugdraaien. Sneller nog dan het redeployen van je hele cluster. Met velero (https://velero.io/) is dat mogelijk.

Velero is een opensource tool gesponsord door VMware om veilig kubernetesclusters te backuppen, migreren en te restoren. De tool draait als een server proces (deployment) in je cluster. Daarnaast heb je op je desktop een cli client waarmee je de service kan aansturen. Met deze cli client kun je backups maken, restoren, plannen en verwijderen.

In deze handleiding/blog nemen we de stappen door hoe je dit kunt inrichten in combinatie met S3 object storage. In deze handleiding gebruiken we een Linux werkstation. Voor Windows of MacOS zul je sommige stappen moeten aanpassen.

Voorwaarden:

·         Een werkend kubernetescluster in Previder PaaS+

·         kubectl cli tool geconfigureerd voor je cluster (https://docs.jelastic.com/kubernetes-cluster-access/)

·         Een S3 bucket met credentials (Previder Object Storage of andere S3 compatible storage)

Stap 1, de velero client installeren.

Vind de juiste versie voor je OS op deze githubpagina: https://github.com/vmware-tanzu/velero/releases

download de veleroclient naar je /tmp folder

  cd /tmp
❯  wget https://link_van_git

 Pak de tarball uit

  tar -xvzf velero-v1.5.3-linux-amd64.tar.gz

In je /tmp dir heb je nu de velero binary staan. Je kan evt. al testen of deze werkt

  ./velero-v1.5.3-linux-amd64/velero help

Als alles goed werkt verplaats je de binary naar je PATH. Onder (Ubuntu) Linux doe je dat door deze te verplaatsen naar /usr/local/bin

  sudo mv velero-v1.5.3-linux-amd64/velero /usr/local/bin/velero

 Stap 2 Configureren S3  storage

Maak een configuratiebestand (credentials-velero) aan voor de S3 bucket in je homefolder met de credentials van je bucket

[default]
aws_access_key_id =
aws_secret_access_key =

 Stap 3 Installeren Velero in Kubernetes Cluster

 Nu kun je velero installeren middels het volgende commando, let er op dat je bij de bucket parameter de juiste bucket opgeeft en bij de s3 url de url van je objectstore, in dit geval die van Previder.

 ❯ velero install \

    --provider aws \

    --plugins velero/velero-plugin-for-aws \

    --bucket mijnvelerobucket \

    --secret-file ./credentials-velero \

    --use-volume-snapshots=false \

    --wait \

    --backup-location-config region=NL,s3ForcePathStyle="true",s3Url=https://object.previder.nl

 Als de installatie klaar is kun je deze controleren via

 ❯ kubectl get deployments -l component=velero –namespace=velero

 Je krijgt dan de volgende output

 

Stap 4 Testen

Voor deze test kun je gebruik maken van de example application die meegeleverd wordt in de tarball uit stap 1. Je kunt hier natuurlijk ook een een willekeurige andere applicatie gebruiken.

❯ kubectl apply -f examples/nginx-app/base.yaml

namespace/nginx-example created

deployment.apps/nginx-deployment created

 Maak nu een backup van deze nginx app, dit kan met het volgende commando

❯ velero backup create nginx-backup --selector app=nginx

We kunnen kijken of alles goed is gegaan middels:

❯ velero backup describe nginx-backup

Vervolgens gooien we de gehele namespace waar de nginx testapplicatie in draait weg.

❯ kubectl delete namespace nginx-example

En controleer dat alles weg is

❯ kubectl get deployments --namespace=nginx-example

❯ kubectl get services --namespace=nginx-example

❯ kubectl get namespace/nginx-example

 

 Restore de nginx applicatie

❯ velero restore create --from-backup nginx-backup

En controleer of de namespace en de services weer terug zijn:

❯ kubectl get namespace/nginx-example

❯ kubectl get services --namespace=nginx-example


 Overige tips

In plaats van met de hand te backuppen kan je het ook inplannen met cron. Als voorbeeld om onze nginx demo applicatie elke nacht om 1 uur te backuppen:

❯ velero schedule create nginx-daily --schedule="0 1 * * *" --selector app=nginx

Je kunt de backup opruimen met

❯ velero backup delete nginx-backup

Om alles uit deze test te verwijderen uit het cluster

❯ kubectl delete namespace/velero clusterrolebinding/velero

❯ kubectl delete crds -l component=velero

❯ kubectl delete -f examples/nginx-app/base.yaml

 

 

Algemene support nodig?

Ben je klant van Previder en kom je een foutmelding tegen bij één van onze diensten? Bekijk hieronder de meest voorkomende problemen met de bijbehorende oplossingen. Kun je de gewenste oplossing niet vinden? Neem dan contact op met onze supportdesk via 088 - 332 3355.

  • Op werkdagen bereikbaar van 08:00 tot 18:00
  • Altijd de juiste persoon aan de telefoon
  • Via de e-mail kun je ons bereiken via support@previder.nl.
© 1998 - 2019 Previder Voorwaarden Privacy | Contact Supportdesk Previder is onderdeel van de Odin Groep