Met Velero maak en herstel je back-ups van Kubernetes-resources en persistent volumes in een Kubernetes-cluster. Velero bewaart de Kubernetes-resources en verplaatste snapshots naar S3-compatible object storage, zodat de back-up buiten het cluster beschikbaar blijft.
In deze handleiding installeer je Velero met een Helm-chart. Je koppelt Velero aan TransIP's Object Store, schakelt CSI Snapshot Data Movement in en maakt en herstelt daarna een back-up.
De beschreven configuratie gebruikt Velero 1.18.1, Helm-chart 12.1.0 en AWS-plugin 1.14.2. Gebruik versies die volgens de compatibility matrix van de AWS-plugin bij elkaar passen wanneer je een nieuwere versie installeert.
Benodigdheden
Voor deze handleiding heb je het volgende nodig:
- Een Kubernetes-cluster
- kubectl: installeer en configureer kubectl op de computer/laptop waarmee je het cluster beheert.
- Helm: installeer Helm op dezelfde computer.
- TransIP Object Store: maak een container voor de Velero-back-ups en noteer de S3-endpoint, access key en secret key.
Velero installeren
Stap 1
Voeg de officiële Velero-repository aan Helm toe en werk de lokale repository-index bij:
helm repo add vmware-tanzu https://vmware-tanzu.github.io/helm-charts/
helm repo updateControleer welke chart- en Velero-versies beschikbaar zijn:
helm search repo vmware-tanzu/velero --versionsHet argument --versions toont naast de nieuwste chart ook eerdere beschikbare versies.
Stap 2
Maak de namespace voor Velero:
kubectl create namespace velero
Stap 3
Open een nieuw bestand voor de Object Store-credentials:
nano credentials-veleroVoeg de volgende inhoud toe. Vervang <access-key> en <secret-key> door de corresponderende gegevens van je Object Store:
[default]
aws_access_key_id=<access-key>
aws_secret_access_key=<secret-key>Sla de wijzigingen op en sluit het bestand (ctrl + x > y > enter).
Maak met dit bestand een Kubernetes Secret en verwijder daarna het lokale bestand:
kubectl create secret generic velero-credentials --namespace velero --from-file=cloud=credentials-velero
rm credentials-veleroHet argument --namespace velero maakt de Secret in de Velero-namespace. Met --from-file=cloud=credentials-velero wordt de inhoud opgeslagen onder de key cloud, die de AWS-plugin verwacht.
Behandel de access key en secret key als wachtwoorden. Deel het credentials-bestand niet en voeg het niet toe aan een Git-repository.
Stap 4
Open het bestand values.yaml:
nano values.yamlVoeg de volgende configuratie toe. Vervang de waarden tussen punthaken door de naam van je Object Store-container en je persoonlijke S3-endpoint:
image:
tag: v1.18.1
configuration:
backupStorageLocation:
- name: default
provider: aws
bucket: <containernaam>
default: true
credential:
name: velero-credentials
key: cloud
config:
region: EU
s3ForcePathStyle: "true"
s3Url: https://<persoonlijke-url>.objectstore.eu
volumeSnapshotLocation:
- name: default
provider: csi
config: {}
defaultBackupStorageLocation: default
defaultVolumeSnapshotLocation: default
features: EnableCSI
defaultSnapshotMoveData: true
credentials:
useSecret: true
existingSecret: velero-credentials
initContainers:
- name: velero-plugin-for-aws
image: velero/velero-plugin-for-aws:v1.14.2
imagePullPolicy: IfNotPresent
volumeMounts:
- mountPath: /target
name: plugins
deployNodeAgent: true
nodeAgent:
disableHostPath: false
containerSecurityContext:
privileged: true
resources:
requests:
cpu: 250m
memory: 512Mi
limits:
cpu: 500m
memory: 1Gi
resources:
requests:
cpu: 500m
memory: 512Mi
limits:
cpu: 1000m
memory: 1GiSla de wijzigingen op en sluit het bestand (ctrl + x > y > enter).
De AWS-plugin verbindt Velero met de S3-compatible Object Store. De node-agent verplaatst de data uit de CSI-snapshot naar Object Store en heeft daarvoor toegang tot de volumes op de Kubernetes-nodes nodig.
Stap 5
Installeer Velero met de waarden uit values.yaml:
helm install velero vmware-tanzu/velero --version 12.1.0 --namespace velero --values values.yaml --waitDe gebruikte argumenten hebben de volgende functie:
- --version 12.1.0: installeert de chart-versie die Velero 1.18.1 bevat.
- --namespace velero: installeert de resources in de namespace velero.
- --values values.yaml: gebruikt de instellingen uit het opgegeven bestand.
- --wait: wacht totdat de resources gereed zijn of de Helm-timeout verloopt.
Stap 6
Controleer de pods van de Velero-server en node-agent:
kubectl get pods --namespace veleroHet argument --namespace velero beperkt de uitvoer tot de Velero-namespace. Alle pods moeten de status ‘Running’ hebben. Controleer daarna de verbinding met Object Store:
kubectl get backupstoragelocations --namespace veleroDe BackupStorageLocation ‘default’ moet de status ‘Available’ hebben. Bekijk bij een andere status de logs van Velero:
kubectl logs deployment/velero --namespace velero
De Velero-client installeren
De Velero-client beheert back-ups en restores vanuit de command-line. Installeer een clientversie die overeenkomt met de serverversie.
Stap 1
Download en pak de Linux-versie voor AMD64 uit:
curl -LO https://github.com/velero-io/velero/releases/download/v1.18.1/velero-v1.18.1-linux-amd64.tar.gz
tar -xzf velero-v1.18.1-linux-amd64.tar.gzBij curl volgt -L eventuele redirects en slaat -O het bestand onder de oorspronkelijke bestandsnaam op. Bij tar pakken -x, -z en -f het gzip-archief uit en geven ze aan welk bestand tar moet gebruiken.
Gebruik je geen Linux-besturingssysteem of een andere processorarchitectuur dan amd64? Download dan het bijpassende bestand op de Velero-releasepagina.
Stap 2
Installeer de executable in /usr/local/bin:
sudo install velero-v1.18.1-linux-amd64/velero /usr/local/bin/velero
Stap 3
Controleer de client- en serverversie:
velero versionDe output moet zowel de client- als serverversie tonen.
Een back-up maken
Stap 1
Maak een back-up van een namespace. Vervang de placeholders door een herkenbare back-upnaam en de namespace die je wilt back-uppen:
velero backup create <back-upnaam> --include-namespaces <namespace> --snapshot-move-data --waitDe gebruikte optionele argumenten hebben de volgende functie:
- --include-namespaces: beperkt de back-up tot de opgegeven namespace. Laat dit argument weg om alle namespaces op te nemen.
- --snapshot-move-data: verplaatst de data uit de CSI-snapshot naar Object Store. Deze instelling staat ook standaard aan in values.yaml, maar is hier expliciet opgenomen.
- --wait: toont de voortgang totdat de back-up is afgerond. Met ctrl + c stop je alleen het wachten; de back-up gaat door.
Stap 2
Controleer de status en details van de back-up:
velero backup get
velero backup describe <back-upnaam> --detailsHet optionele argument --details toont aanvullende informatie over de opgenomen resources en volumes. Bekijk de logs wanneer de back-up niet de status ‘Completed’ krijgt:
velero backup logs <back-upnaam>
Een back-up herstellen
Stap 1
Herstel de resources en volumes uit een back-up. Gebruik een unieke naam voor de restore:
velero restore create <restorenaam> --from-backup <back-upnaam> --waitDe gebruikte optionele argumenten hebben de volgende functie:
- --from-backup: selecteert de back-up die Velero herstelt.
- --wait: toont de voortgang totdat de restore is afgerond. Met ctrl + c stop je alleen het wachten; de restore gaat door.
Stap 2
Controleer de status en details van de restore:
velero restore get
velero restore describe <restorenaam> --detailsBekijk de logs wanneer de restore niet de status ‘Completed’ krijgt:
velero restore logs <restorenaam>Controleer na een geslaagde restore ook of de applicatie werkt en de verwachte data op de persistent volumes aanwezig is.
Je hebt Velero met Helm in Kubernetes geïnstalleerd en gekoppeld aan TransIP's Object Store. Velero kan nu Kubernetes-resources en data uit CSI-snapshots back-uppen en herstellen.