Introductie
In deze tutorial leer je hoe je TrilioVault voor Kubernetes (of TVK) implementeert naar je DOKS-cluster, back-ups maakt en herstelt van een back-up als er iets misgaat. Je kunt je hele cluster back-uppen, of optioneel kiezen voor back-ups op basis van een namespace of label.
Voordelen van het gebruik van Trilio:
- Maak volledige (of incrementele) back-ups van je cluster en herstel ze in geval van gegevensverlies.
- Migreer van het ene cluster naar het andere.
- Helm-release back-ups worden ondersteund.
- Voer pre- en post-hooks uit voor back-up- en herstelbewerkingen.
- Webbeheerconsole waarmee je de status van je back-up/herstelbewerkingen gedetailleerd kunt inspecteren.
- Definieer retentiebeleid voor je back-ups.
- De applicatielifecycle (wat TVK zelf betreft) kan worden beheerd via een toegewijde TrilioVault Operator.
- Velero-integratie.
- Je kunt back-ups maken en herstellen van op operator gebaseerde applicaties.
Voor meer informatie, raadpleeg de officiële documentatie van TVK CRDs.
Inhoudsopgave
- Vereisten
- Stap 1 – Installeren van TrilioVault voor Kubernetes
- Stap 2 – Een TrilioVault-doel maken om back-ups op te slaan
- Stap 3 – Kennismaken met de TVK-webbeheerconsole
- Stap 4 – Voorbeeld van back-up en herstel met namespace
- Stap 5 – Voorbeeld van volledige clusterback-up en -herstel
- Stap 6 – Geplande back-ups
- Stap 7 – Beleid voor behoud van back-ups
- Conclusie
Vereisten
Om deze handleiding te voltooien, heb je het volgende nodig:
- A DO Spaces Bucket and access keys. Save the access and secret keys in a safe place for later use.
- A Git client to clone the Starter Kit repository.
- Helm, voor het beheren van TrilioVault Operator-releases en upgrades.
- Doctl voor interactie met de DigitalOcean API.
- Kubectl voor interactie met Kubernetes.
Om TrilioVault correct te laten werken en uw PVC’s te back-uppen, moet DOKS geconfigureerd zijn om de Container Storage Interface (of CSI voor kort) te ondersteunen. Standaard wordt het geleverd met de driver al geïnstalleerd en geconfigureerd. U kunt controleren met behulp van de volgende opdracht:
De uitvoer zou er ongeveer als volgt uit moeten zien. Let op dat de provisioner dobs.csi.digitalocean.com is.
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
do-block-storage (default) dobs.csi.digitalocean.com Delete Immediate true 10d
De installatie van TrilioVault vereist ook de Custom Resource Definition (CRD) volumeSnapshot
voor een succesvolle installatie. U kunt controleren met behulp van de volgende opdracht:
De uitvoer zou er ongeveer als volgt uit moeten zien. Als VolumeSnapshot
CRD niet is geïnstalleerd, raadpleeg dan Installing VolumeSnapshot CRDs.
volumesnapshotclasses.snapshot.storage.k8s.io 2022-02-01T06:01:14Z
volumesnapshotcontents.snapshot.storage.k8s.io 2022-02-01T06:01:14Z
volumesnapshots.snapshot.storage.k8s.io 2022-02-01T06:01:15Z
Zorg er ook voor dat de CRD zowel de API-versies v1beta1
als v1
ondersteunt. U kunt de volgende opdracht uitvoeren om de API-versie te controleren:
Aan het einde van de CRD YAML zou u een storedVersions
lijst moeten zien, met zowel v1beta1
als v1
waarden (indien niet geïnstalleerd, raadpleeg Installing VolumeSnapshot CRDs):
...
- lastTransitionTime: "2022-01-20T07:58:06Z"
message: approved in https://github.com/kubernetes-csi/external-snapshotter/pull/419
reason: ApprovedAnnotation
status: "True"
type: KubernetesAPIApprovalPolicyConformant
storedVersions:
- v1beta1
- v1
Stap 1 – TrilioVault installeren voor Kubernetes
In deze stap leer je hoe je TrilioVault implementeert voor DOKS en TVK-installaties beheert via Helm. Back-upgegevens worden opgeslagen in de DO Spaces-bucket die eerder is aangemaakt in de Vereisten-sectie.
TrilioVault-toepassing kan op verschillende manieren worden geïnstalleerd:
- Via de TrilioVault-operator. Je definieert een
TrilioVaultManager
CRD die deTrilioVault
-operator vertelt hoe de installatie, post-configuratiestappen en toekomstige upgrades van de Trilio-toepassingsonderdelen moeten worden afgehandeld. - Via het triliovault-operator-diagram dat volledig wordt beheerd door Helm, (gedekt in deze tutorial).
TrilioVault installeren met Helm
De Starter Kit-zelfstudie gebruikt het Clustertype voor de TVK-toepassing (applicationScope
Helm-waarde is ingesteld op “Cluster”). Alle voorbeelden in deze tutorial vertrouwen op dit type installatie om correct te functioneren.
Eerst kloon je de Starter Kit Git-repository en wijzig je de map naar je lokale kopie:
Vervolgens voeg je het TrilioVault Helm-repository toe en vermeld je de beschikbare diagrammen:
De uitvoer ziet er vergelijkbaar uit met het volgende:
NAME CHART VERSION APP VERSION DESCRIPTION
triliovault-operator/k8s-triliovault-operator 2.9.2 2.9.2 K8s-TrilioVault-Operator is an operator designe...
De grafiek van interesse is triliovault-operator/k8s-triliovault-operator
, die TrilioVault voor Kubernetes op het cluster zal installeren samen met de TrilioVault-Manager. U kunt helm show values triliovault-operator/k8s-triliovault-operator
uitvoeren en exporteren naar een bestand om alle beschikbare opties te zien.
Vervolgens opent en inspecteert u het TrilioVault Helm-waardenbestand dat wordt geleverd in de Starterkit-opslagplaats met een editor naar keuze (bij voorkeur met YAML-lintondersteuning).
Tenslotte, installeer TrilioVault voor Kubernetes met Helm:
–create-namespace \
De bovenstaande opdracht installeert zowel TrilioVault Operator als TriloVault Manager (TVM) Custom Resource met behulp van de parameters die zijn opgegeven in het triliovault-values.yaml
. De TVK-versie wordt nu beheerd door het tag
-veld in het 05-setup-backup-restore/assets/manifests/triliovault-values.yaml
bestand, zodat de helm-opdracht altijd de nieuwste versie van TVK heeft.
- U kunt de volgende velden bijwerken in
values.yaml
: installTVK.applicationScope
voor TVK-installatieomvang bijvoorbeeldCluster
ofNamespaced
installTVK.ingressConfig.host
voor TVK UI-hostnaam bijvoorbeeldtvk-doks.com
installTVK.ComponentConfiguration.ingressController.service.type
voor het servicetype om toegang te krijgen tot de TVK-UI bijvoorbeeld NodePort
of LoadBalancer
Controleer nu uw TVK-implementatie:
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
triliovault-manager-tvk tvk 1 2022-06-08 08:30:08.490304959 +0000 UTC deployed k8s-triliovault-2.9.2 2.9.2
triliovault-operator tvk 1 2022-06-08 11:32:55.755395 +0300 EEST deployed k8s-triliovault-operator-2.9.2 2.9.2
De uitvoer ziet er vergelijkbaar uit met het volgende fragment (de STATUS
-kolom moet deployed
weergeven):
Vervolgens controleer je of TrilioVault actief is en draait:
NAME READY UP-TO-DATE AVAILABLE AGE
k8s-triliovault-admission-webhook 1/1 1 1 83s
k8s-triliovault-control-plane 1/1 1 1 83s
k8s-triliovault-exporter 1/1 1 1 83s
k8s-triliovault-ingress-nginx-controller 1/1 1 1 83s
k8s-triliovault-web 1/1 1 1 83s
k8s-triliovault-web-backend 1/1 1 1 83s
triliovault-operator-k8s-triliovault-operator 1/1 1 1 4m22s
De uitvoer ziet er vergelijkbaar uit met het volgende fragment. Alle implementatie-pods moeten in de Ready
-status zijn.
Als de uitvoer er zo uitziet, heb je TVK succesvol geïnstalleerd. Vervolgens leer je hoe je het licentietype en de geldigheid kunt controleren, evenals hoe je het kunt vernieuwen.
TrilioVault Applicatie Licenties
- Standaard wordt bij het installeren van TVK via Helm geen gratis proeflicentie automatisch geïnstalleerd. Je kunt altijd naar de Trilio-website gaan en een nieuwe licentie genereren voor je cluster die aan je behoeften voldoet (bijvoorbeeld, je kunt het basislicentietype kiezen waarmee je TrilioVault onbeperkt kunt uitvoeren als de capaciteit van je cluster niet meer dan 10 knooppunten overschrijdt). Een gratis proeflicentie stelt je in staat om TVK een maand lang op een onbeperkt aantal clusterknooppunten uit te voeren.
- TrilioVault is gratis voor Kubernetes-clusters met maximaal 100.000 knooppunten voor DigitalOcean-gebruikers. Zij kunnen de volgende stappen volgen om een speciale licentie te creëren die alleen beschikbaar is voor DO-klanten.
Starter Kit-voorbeelden zijn afhankelijk van een Cluster-licentietype om correct te functioneren.
TVK-toepassingslicenties maken en controleren
Voer de volgende opdracht uit om een nieuwe licentie voor uw cluster aan te maken (deze wordt beheerd via de License CRD):
De bovenstaande opdracht zal een taak job.batch/tvk-license-digitalocean
aanmaken die een pod tvk-license-digitalocean-828rx
zal uitvoeren om de licentie van de Trilio License Server op te halen en te installeren op de DOKS-cluster. Nadat de taak is voltooid, wordt deze na 60 seconden verwijderd.
Als u een gratis licentie van de website van Trilio downloadt, pas deze dan toe met deze opdracht:
Voer alstublieft de volgende opdracht uit om te controleren of de licentie is geïnstalleerd en in de Actief
-status staat op uw cluster.
NAME STATUS MESSAGE CURRENT NODE COUNT GRACE PERIOD END TIME EDITION CAPACITY EXPIRATION TIME MAX NODES
test-license-1 Active Cluster License Activated successfully. 1 FreeTrial 100000 2023-02-25T00:00:00Z 1
De uitvoer ziet er ongeveer als volgt uit. Let op de STATUS
, die Actief
moet zijn, evenals het licentietype in de EDITION
-kolom en de VERLOOPDATUM
.
De licentie wordt beheerd via een speciale CRD genaamd Licentie
-object. U kunt dit inspecteren door de volgende opdracht uit te voeren:
De uitvoer ziet er ongeveer als volgt uit. Let op de velden Bericht
en Capaciteit
, evenals de Uitgave
.
De bovenstaande uitvoer zal je ook vertellen wanneer de licentie gaat verlopen in het veld Vervaltijdstempel
, en de Bereik
(Cluster
gebaseerd in dit geval). U kunt kiezen voor een licentietype op cluster niveau of op namespace gebaseerde licentie.
TVK Applicatielicentie vernieuwen
Om de licentie te vernieuwen, moet je een nieuwe aanvragen op de Trilio-website door naar de licentiepagina te gaan om de oude te vervangen. Nadat je het formulier hebt ingevuld, zou je het licentie YAML-manifest moeten ontvangen, dat kan worden toegepast op je cluster met behulp van kubectl
. De volgende commando’s gaan ervan uit dat TVK is geïnstalleerd in de standaard tvk
namespace (vervang alstublieft de <>
plaatshouders waar nodig):
# Informatie verkrijgen over een specifieke licentie uit de `tvk` namespace
In de volgende stap leer je hoe je de opslagbackend voor TrilioVault kunt definiëren om back-ups op te slaan, genaamd een doelwit.
Stap 2 – Het aanmaken van een TrilioVault Doel om Back-ups op te slaan
A typical Target
definition looks like:
TrilioVault moet eerst weten waar uw back-ups moeten worden opgeslagen. TrilioVault verwijst naar de opslagbackend door gebruik te maken van de term doel
, en het wordt beheerd via een speciale CRD met de naam Doel
. De volgende doeltypes worden ondersteund: S3
en NFS
. Voor DigitalOcean en het doel van het Starter Kit is het logisch om te vertrouwen op het S3
-opslagtype omdat het goedkoop en schaalbaar is. Om te profiteren van een verbeterd niveau van bescherming, kunt u meerdere doeltypes maken (voor zowel S3
als NFS
), zodat uw gegevens veilig worden bewaard op meerdere plaatsen, en zo back-up redundantie te bereiken.
- In deze configuratie,
spec.type
: Type doel voor back-upopslag (S3 is een objectopslag).spec.vendor
: Derde partij die het doel host (voor DigitalOcean Spaces moet uAnders
gebruiken in plaats vanAWS
).spec.enableBrowsing
: Bladeren voor het doel inschakelen.spec.objectStoreCredentials
: Definieert vereiste referenties (viacredentialSecret
) om toegang te krijgen tot deS3
-opslag, evenals andere parameters zoals bucketregio en -naam.
spec.thresholdCapacity
: Maximale drempelcapaciteit om back-upgegevens op te slaan.
# waarde moet base64 gecodeerd zijn
Let op dat de naam van het geheim trilio-s3-target
is en dat het wordt aangeroepen door het veld spec.objectStoreCredentials.credentialSecret
van de eerder uitgelegde Target CRD. Het geheim
kan zich in dezelfde namespace
bevinden waar TrilioVault is geïnstalleerd (standaard tvk), of in een andere door u gekozen namespace. Zorg er gewoon voor dat u de namespace correct refereert. Aan de andere kant, zorg ervoor dat u de namespace waarin u TrilioVault-geheimen opslaat, beschermt via RBAC om veiligheidsredenen.
Stappen om een doelwit voor TrilioVault te maken:
Eerst, wijzig de directory waar de Starter Kit Git-repository op uw lokale machine is gekloond:
Vervolgens, maak het Kubernetes-geheim aan met uw S3-bucketreferenties (vervang alstublieft de <>
plaatshouders dienovereenkomstig):
–from-literal=accessKey=“<UW_DO_SPACES_ACCESS_KEY_HIER>” \
–from-literal=secretKey=“<UW_DO_SPACES_SECRET_KEY_HIER>”
Vervolgens opent en inspecteert u het doelmanifestbestand dat wordt geleverd in de repository van de Startkit met een editor naar keuze (bij voorkeur met YAML-lintondersteuning).
Wijzig nu alstublieft de placeholders <>
dienovereenkomstig voor uw DO Spaces Trilio-bucket, zoals bucketName
, region
, url
en credentialSecret
.
Tenslotte, sla het manifestbestand op en maak het doelobject aan met kubectl
:
NAME TYPE THRESHOLD CAPACITY VENDOR STATUS BROWSING ENABLED
trilio-s3-target ObjectStore 10Gi Other Available
Vervolgens zal TrilioVault een werktaken met de naam trilio-s3-target-validator
starten die verantwoordelijk is voor het valideren van uw S3-bucket (zoals beschikbaarheid, machtigingen, enz.). Als de taak met succes is voltooid, wordt de bucket als gezond of beschikbaar beschouwd en wordt de bron van de taak trilio-s3-target-validator
vervolgens verwijderd. Als er iets fout gaat, blijft de taak voor het valideren van de S3-doel op actief staan zodat u de logs kunt controleren en het mogelijke probleem kunt vinden.
Controleer nu alstublieft of het eerder aangemaakte doelobject gezond is:
# Output ziet er ongeveer zo uit:
...
INFO:root:2021-11-24 09:06:50.595166: waiting for mount operation to complete.
INFO:root:2021-11-24 09:06:52.595772: waiting for mount operation to complete.
ERROR:root:2021-11-24 09:06:54.598541: timeout exceeded, not able to mount within time.
ERROR:root:/triliodata is not a mountpoint. We can't proceed further.
Traceback (most recent call last):
File "/opt/tvk/datastore-attacher/mount_utility/mount_by_target_crd/mount_datastores.py", line 56, in main
utilities.mount_datastore(metadata, datastore.get(constants.DATASTORE_TYPE), base_path)
File "/opt/tvk/datastore-attacher/mount_utility/utilities.py", line 377, in mount_datastore
mount_s3_datastore(metadata_list, base_path)
File "/opt/tvk/datastore-attacher/mount_utility/utilities.py", line 306, in mount_s3_datastore
wait_until_mount(base_path)
File "/opt/tvk/datastore-attacher/mount_utility/utilities.py", line 328, in wait_until_mount
base_path))
Exception: /triliodata is not a mountpoint. We can't proceed further.
...
#trilio-s3-target-validator-tio99a-6lz4q 1/1 Running 0 104s
# Haal nu loggegevens op
De uitvoer zal deze uitzondering zijn:
Hierna ontdek je de TVK-webconsole, die een nuttige toevoeging is om je te helpen bij het eenvoudig beheren van back-up- en herstelbewerkingen, naast vele andere functies.
Stap 3 – Kennismaking met de TVK Web Management Console
Hoewel je back-up- en herstelbewerkingen volledig kunt beheren via de CLI via kubectl
en CRD’s, biedt TVK een Web Management Console om dezelfde bewerkingen uit te voeren via de GUI. De beheerconsole vereenvoudigt veelvoorkomende taken via point-and-click bewerkingen, biedt betere visualisatie en inspectie van TVK-clusterobjecten, evenals het maken van disaster recovery-plannen (of DRP’s).
De met Helm gebaseerde installatie die wordt behandeld in Stap 1 – TrilioVault voor Kubernetes installeren heeft al gezorgd voor het installeren van de benodigde componenten voor de webbeheerconsole.
Toegang krijgen tot de TVK-webbeheerconsole
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
k8s-triliovault-admission-webhook ClusterIP 10.245.202.17 <none> 443/TCP 13m
k8s-triliovault-ingress-nginx-controller NodePort 10.245.192.140 <none> 80:32448/TCP,443:32588/TCP 13m
k8s-triliovault-ingress-nginx-controller-admission ClusterIP 10.3.20.89 <none> 443/TCP 13m
k8s-triliovault-web ClusterIP 10.245.214.13 <none> 80/TCP 13m
k8s-triliovault-web-backend ClusterIP 10.245.10.221 <none> 80/TCP 13m
triliovault-operator-k8s-triliovault-operator-webhook-service ClusterIP 10.245.186.59 <none> 443/TCP 16m
Om toegang te krijgen tot de console en de functies te verkennen die het biedt, moet je de ingangcontroller-service voor TVK doorsturen.
De uitvoer ziet er ongeveer als volgt uit. Zoek naar de regel k8s-triliovault-ingress-nginx-controller
en let op dat deze luistert op poort 80
in de PORT(S)
-kolom.
127.0.0.1 tvk-doks.com
TVK gebruikt een Nginx Ingress Controller om het verkeer naar de beheerwebconsole-services te routeren. Het routeren is op basis van hosts en de hostnaam is tvk-doks.com
zoals gedefinieerd in het Helm-waardenbestand van de Starter Kit:
# De hostnaam om te gebruiken bij het openen van de webconsole via de TVK-ingress nginx-controller
Ten slotte exporteer je het kubeconfig
-bestand voor je DOKS-cluster. Deze stap is vereist zodat de webconsole je kan authenticeren.
# Lijst met beschikbare clusters
# Sla clusterconfiguratie op naar YAML
Als je slechts één cluster hebt, voer dan het volgende commando uit:
Na het volgen van deze stappen kun je toegang krijgen tot de console in je webbrowser door te navigeren naar: http://tvk-doks.com:8080. Wanneer gevraagd wordt om het kubeconfig
-bestand, selecteer dan degene die je hebt aangemaakt in het vorige commando hierboven.
Houd het gegenereerde kubeconfig
-bestand veilig omdat het gevoelige gegevens bevat.
- Verken de gebruikersinterface van de TVK Web Console
- Verken elke sectie aan de linkerkant, zoals:
- Clusterbeheer: Hier wordt de lijst weergegeven van primaire en andere clusters met TVK-instanties, toegevoegd aan de primaire OVH-cluster met behulp van de functie Multi-Clusterbeheer.
- Back-up & Herstel: Dit is het hoofddashboard dat u een algemeen overzicht geeft van de hele cluster, zoals Ontdekte namespaces, Toepassingen, Lijst met back-upplannen, Doelen, Haken, Beleidsregels, enz.
Monitoring: Dit heeft twee opties – TrilioVault Monitoring en Velero Monitoring als de gebruiker Velero geconfigureerd heeft op hun OVH-cluster.
Ramp Herstel: Hiermee kunt u ramp hersteloperaties beheren en uitvoeren.
Ramp Herstel: Hiermee kunt u ramp hersteloperaties beheren en uitvoeren.
U kunt ook het eerder aangemaakte S3-doelwit zien door te navigeren naar Back-up & Herstel -> Doelen -> <Namespace> tvk vanuit het dropdown-menu bovenaan.
Verder kunt u het doelwit doorbladeren en de beschikbare back-ups bekijken door te klikken op de Acties knop rechts en vervolgens de Start Browser optie te selecteren in het pop-up menu. Hiervoor moet het doelwit de vlag enableBrowsing
ingesteld hebben op true
.
Voor meer informatie en beschikbare functies kunt u de officiële documentatie van de TVK Web Management Console-gebruikersinterface raadplegen.
Daarna leert u hoe u back-up en hersteloperaties kunt uitvoeren voor specifieke gebruiksgevallen.
Stap 4 – Voorbeeld van Namespaced Backup en Herstel
In deze stap leert u hoe u een eenmalige back-up maakt voor een hele namespace (ambassador
in dit geval) vanuit uw DOKS-cluster en deze vervolgens herstelt, waarbij ervoor wordt gezorgd dat alle resources opnieuw worden aangemaakt. TVK heeft een functie waarmee u back-ups kunt maken op een hoger niveau dan alleen namespaces.
- Het maken van de Ambassador Helm Release-back-up
- Om back-ups uit te voeren voor een enkele toepassing op het namespace-niveau (of Helm-release), is een BackupPlan gevolgd door een Backup CRD vereist. BackupPlan is een definitie van ‘wat’, ‘waar’, ‘naartoe’, en ‘hoe’ van het back-upproces, maar voert de daadwerkelijke back-up niet uit. De Backup CRD is verantwoordelijk voor het triggeren van het daadwerkelijke back-upproces, zoals bepaald door de BackupPlan-spec.
- In deze configuratie,
A typical Backup CRD looks like below:
spec.backupConfig.target.name
: Vertelt TVK welke doelnaam moet worden gebruikt voor het opslaan van back-ups.
spec.backupConfig.target.namespace
: Vertelt TVK in welke namespace het doel is gemaakt.spec.backupComponents
: Definieert een lijst van resources om te backuppen.
In deze configuratie,
spec.type
: Specificeert het back-uptype.
spec.backupPlan
: Specificeert het BackupPlan dat deze Backup moet gebruiken.
Stappen om de Ambassador Helm-release eenmalig te initiëren:
Ten eerste, zorg ervoor dat de Ambassador Edge Stack is geïmplementeerd in uw cluster door de stappen te volgen uit de Ambassador Ingress handleiding.
Vervolgens, verander de directory naar waar het Starter Kit Git-repository is gekloond op uw lokale machine:
Daarna, open en inspecteer de Ambassador BackupPlan- en Backup-manifestbestanden die worden geleverd in het Starter Kit-repository met een editor naar keuze (bij voorkeur met YAML-lintondersteuning).
NAME TARGET ... STATUS
ambassador-helm-release-backup-plan trilio-s3-target ... Available
Tenslotte, maak de BackupPlan- en Backup-resources aan met behulp van kubectl
.
Controleer nu de BackupPlan-status (gericht op de ambassador
Helm-release) met kubectl
:
NAME BACKUPPLAN BACKUP TYPE STATUS ...
ambassador-helm-release-full-backup ambassador-helm-release-backup-plan Full InProgress ...
De uitvoer ziet er ongeveer als volgt uit. Let op de waarde van de kolom STATUS
, die moet zijn ingesteld op Available
.
Vervolgens controleert u de status van het Backup-object met kubectl
:
NAME BACKUPPLAN BACKUP TYPE STATUS ... PERCENTAGE
ambassador-helm-release-full-backup ambassador-helm-release-backup-plan Full Available ... 100
De uitvoer ziet er ongeveer als volgt uit. Let op de waarde van de kolom STATUS
, die moet zijn ingesteld op InProgress
, evenals het BACKUP TYPE
ingesteld op Full
.
Nadat alle ambassadeur Helm-releasecomponenten zijn geüpload naar het S3
-doel, moet je deze resultaten krijgen:
2021-11-25 07:04 28 s3://trilio-starter-kit/6c68af15-5392-45bb-a70b-b26a93605bd9/
2021-11-25 07:04 28 s3://trilio-starter-kit/6c68af15-5392-45bb-a70b-b26a93605bd9/5ebfffb5-442a-455c-b0de-1db98e18b425/
2021-11-25 07:04 311 s3://trilio-starter-kit/6c68af15-5392-45bb-a70b-b26a93605bd9/5ebfffb5-442a-455c-b0de-1db98e18b425/backup-namespace.json.manifest.00000004
2021-11-25 07:04 302 s3://trilio-starter-kit/6c68af15-5392-45bb-a70b-b26a93605bd9/5ebfffb5-442a-455c-b0de-1db98e18b425/backup.json.manifest.00000004
2021-11-25 07:04 305 s3://trilio-starter-kit/6c68af15-5392-45bb-a70b-b26a93605bd9/5ebfffb5-442a-455c-b0de-1db98e18b425/backupplan.json.manifest.00000004
2021-11-25 07:04 28 s3://trilio-starter-kit/6c68af15-5392-45bb-a70b-b26a93605bd9/5ebfffb5-442a-455c-b0de-1db98e18b425/custom/
2021-11-25 07:04 28 s3://trilio-starter-kit/6c68af15-5392-45bb-a70b-b26a93605bd9/5ebfffb5-442a-455c-b0de-1db98e18b425/custom/metadata-snapshot/
2021-11-25 07:04 330 s3://trilio-starter-kit/6c68af15-5392-45bb-a70b-b26a93605bd9/5ebfffb5-442a-455c-b0de-1db98e18b425/custom/metadata-snapshot/metadata.json.manifest.00000002
...
# De output ziet er ongeveer als volgt uit (let op dat de `STATUS` is gewijzigd in `Beschikbaar`, en `PERCENTAGE` is `100`)
Als de output er zo uitziet, is de back-up van de ambassadeur
Helm-release succesvol voltooid. U kunt doorgaan en zien hoe TrilioVault Kubernetes-metadata opslaat door de inhoud van de TrilioVault S3-bucket te vermelden. U kunt bijvoorbeeld s3cmd gebruiken:
ambassador-helm-release-full-backup-metamover-mg9gl0--1-2d6wx 1/1 Running 0 4m32s
De output ziet er ongeveer als volgt uit. Let op dat de lijst JSON-manifesten en UIDs bevat, die Kubernetes-objecten vertegenwoordigen.
Als de back-up niet beschikbaar wordt, kunt u de logs van de metamover
-Pod inspecteren om het probleem te vinden:
...
{"component":"meta-mover","file":"pkg/metamover/snapshot/parser/commons.go:1366","func":"github.com/trilioData/k8s-triliovault/pkg/metamover/snapshot/parser.(*Component).ParseForDataComponents","level":"info","msg":"Parsing data components of resource rbac.authorization.k8s.io/v1, Kind=ClusterRoleBinding: [edge-stack]","time":"2022-06-14T06:20:56Z"}
{"component":"meta-mover","file":"pkg/metamover/snapshot/parser/commons.go:1366","func":"github.com/trilioData/k8s-triliovault/pkg/metamover/snapshot/parser.(*Component).ParseForDataComponents","level":"info","msg":"Parsing data components of resource rbac.authorization.k8s.io/v1, Kind=RoleBinding: [edge-stack-agent-config]","time":"2022-06-14T06:20:56Z"}
...
Output ziet er ongeveer als volgt uit:
Haal nu loggegevens op:
De output ziet er ongeveer als volgt uit.
Tenslotte kunt u controleren of de back-up ook beschikbaar is in de webconsole door te navigeren naar Resource Management -> Ambassadeur -> Backupplannen. Let op dat het in de Beschikbaar
-status is en dat de ambassadeur Helm-release is back-up in de Component Details-subweergave.
Het verwijderen van de ambassadeur Helm-release en bronnen
Ga nu verder en simuleer een ramp door opzettelijk de ambassador
Helm-release te verwijderen:
Controleer vervolgens of de namespace-resources zijn verwijderd (de lijst moet leeg zijn):
- Tenslotte, controleer of het eindpunt van de
echo
– enquote
-backend-servicesDOWN
is. Raadpleeg Het maken van de Ambassador Edge Stack Backend Services met betrekking tot de backend-applicaties die worden gebruikt in de Starter Kit-zelfstudie. U kuntcurl
gebruiken om te testen (of u kunt uw webbrowser gebruiken): - Het herstellen van de Ambassador Helm Release-back-up
- Belangrijk
Als u dezelfde namespace herstelt, zorg er dan voor dat de oorspronkelijke toepassingscomponenten zijn verwijderd. Vooral de PVC van de toepassing moet zijn verwijderd.
Indien u herstelt naar een ander cluster (migratiescenario), zorg ervoor dat TrilioVault voor Kubernetes ook draait in de externe namespace/cluster. Om te herstellen in een nieuw cluster (waar de Backup CR niet bestaat), moet source.type
worden ingesteld op location
. Raadpleeg de sectie Aangepaste Resource Definitie Herstel voor een voorbeeld van herstel op locatie.
- Wanneer u de
ambassador
namespace verwijdert, wordt de load balancer resource geassocieerd met de ambassador service ook verwijderd. Dus, wanneer u deambassador
service herstelt, zal de LB opnieuw worden aangemaakt door DigitalOcean. Het probleem is dat u een NIEUW IP adres krijgt voor uw LB, dus u zult deA-records
moeten aanpassen om verkeer te krijgen naar uw domeinen gehost op het cluster. - Om een specifieke Backup te herstellen, moet u een
Restore
CRD maken. Een typische Restore CRD ziet er als volgt uit: - In deze configuratie,
spec.source.type
: Specificeert het back-uptype om van te herstellen.
spec.source.backup
: Bevat een referentie naar het backup object om van te herstellen.
spec.skipIfAlreadyExists
: Specificeert of het herstellen van een resource moet worden overgeslagen als deze al bestaat in de herstelde namespace.
Herstellen stelt u in staat om de laatste succesvolle back-up voor een toepassing te herstellen. Het wordt gebruikt om een enkelvoudige namespace of Helm-release te herstellen, beschermd door de Backup CRD. De Backup CRD wordt geïdentificeerd aan de hand van de naam ambassador-helm-release-full-backup
.
Eerst inspecteert u het voorbeeld van de Restore CRD uit de Starter Kit Git-repository:
NAME STATUS DATA SIZE START TIME END TIME PERCENTAGE COMPLETED DURATION
ambassador-helm-release-restore Completed 0 2021-11-25T15:06:52Z 2021-11-25T15:07:35Z 100 43.524191306s
Vervolgens maakt u de Restore-resource aan met kubectl
:
Ten slotte inspecteert u de status van het Restore-object:
De uitvoer ziet er vergelijkbaar uit als volgt. Let op de STATUS
-kolom ingesteld op Voltooid
, evenals de PERCENTAGE COMPLETED
ingesteld op 100
.
Als de uitvoer er zo uitziet, dan is het herstelproces van de ambassador
Helm-release succesvol voltooid.
NAME READY STATUS RESTARTS AGE
pod/ambassador-5bdc64f9f6-42wzr 1/1 Running 0 9m58s
pod/ambassador-5bdc64f9f6-nrkzd 1/1 Running 0 9m58s
pod/ambassador-agent-bcdd8ccc8-ktmcv 1/1 Running 0 9m58s
pod/ambassador-redis-64b7c668b9-69drs 1/1 Running 0 9m58s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/ambassador LoadBalancer 10.245.173.90 157.245.23.93 80:30304/TCP,443:30577/TCP 9m59s
service/ambassador-admin ClusterIP 10.245.217.211 <none> 8877/TCP,8005/TCP 9m59s
service/ambassador-redis ClusterIP 10.245.77.142 <none> 6379/TCP 9m59s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/ambassador 2/2 2 2 9m59s
deployment.apps/ambassador-agent 1/1 1 1 9m59s
deployment.apps/ambassador-redis 1/1 1 1 9m59s
NAME DESIRED CURRENT READY AGE
replicaset.apps/ambassador-5bdc64f9f6 2 2 2 9m59s
replicaset.apps/ambassador-agent-bcdd8ccc8 1 1 1 9m59s
replicaset.apps/ambassador-redis-64b7c668b9 1 1 1 9m59s
Verifiëren van Toepassingsintegriteit na Herstel
Controleer of alle resources van de ambassador
-namespace aanwezig zijn en draaien:
NAME HOSTNAME STATE PHASE COMPLETED PHASE PENDING AGE
echo-host echo.starter-kit.online Ready 11m
quote-host quote.starter-kit.online Ready 11m
De uitvoer ziet er vergelijkbaar uit:
Krijg ambassador-hosts:
NAME SOURCE HOST SOURCE PREFIX DEST SERVICE STATE REASON
ambassador-devportal /documentation/ 127.0.0.1:8500
ambassador-devportal-api /openapi/ 127.0.0.1:8500
ambassador-devportal-assets /documentation/(assets|styles)/(.*)(.css) 127.0.0.1:8500
ambassador-devportal-demo /docs/ 127.0.0.1:8500
echo-backend echo.starter-kit.online /echo/ echo.backend
quote-backend quote.starter-kit.online /quote/ quote.backend
De uitvoer ziet er vergelijkbaar uit als volgt. STATE
moet Klaar
zijn, evenals de HOSTNAME
-kolom die wijst naar de volledig gekwalificeerde hostnaam.
Krijg ambassador-mappings:
De output ziet er ongeveer als volgt uit. Let op de echo-backend
die is gekoppeld aan de host echo.starter-kit.online
en het bronvoorvoegsel /echo/
, hetzelfde geldt voor quote-backend
.
Nu moet je je DNS A-records
bijwerken, omdat de DigitalOcean load balancer-resource opnieuw is aangemaakt en er een nieuw extern IP-adres aan is toegewezen.
Tenslotte, controleer of de backend-applicaties ook reageren op HTTP-verzoeken. Raadpleeg Het maken van de Ambassador Edge Stack Backend-services met betrekking tot de backend-applicaties die worden gebruikt in de Starter Kit-tutorial.
De volgende stap gaat over het back-uppen en herstellen van de hele cluster.
Stap 5 – Voorbeeld van het back-uppen en herstellen van de hele cluster
A typical ClusterBackupPlan
manifest targeting multiple namespaces looks like this:
In deze stap simuleer je een scenario voor het herstel na een ramp. De hele DOKS-cluster wordt verwijderd en vervolgens worden de belangrijke applicaties hersteld vanuit een eerdere back-up.
Het maken van de back-up van de DOKS-cluster
Het hoofdidee hier is om een DOKS-clusterback-up uit te voeren door alle belangrijke namespaces op te nemen die uw essentiële toepassingen en configuraties bevatten.
Merk op dat kube-system
(of andere aan DOKS-cluster gerelateerde namespaces) niet zijn opgenomen in de lijst. Meestal zijn die niet vereist, tenzij er een speciaal geval is waarbij sommige instellingen op dat niveau moeten worden behouden.
Verander eerst de directory waar de Starter Kit Git-repository is gekloond op uw lokale machine:
Vervolgens opent en inspecteert u de manifestbestanden ClusterBackupPlan
en ClusterBackup
die worden geleverd in de Starter Kit-repository met behulp van een editor naar keuze (bij voorkeur met YAML-lintondersteuning).
NAME TARGET ... STATUS
starter-kit-cluster-backup-plan trilio-s3-target ... Available
Maak tot slot de resources ClusterBackupPlan
en ClusterBackup
aan met behulp van kubectl
:
Inspecteer nu de status van ClusterBackupPlan
met behulp van kubectl
:
NAME BACKUPPLAN BACKUP TYPE STATUS ... PERCENTAGE COMPLETE
starter-kit-cluster-backup starter-kit-cluster-backup-plan Full Available ... 100
De output ziet er vergelijkbaar uit met het volgende. Let op de waarde van de kolom STATUS
die moet zijn ingesteld op Available
.
Controleer vervolgens de status van ClusterBackup
met behulp van kubectl
:
De output ziet er vergelijkbaar uit met het volgende. Let op de waarde van de kolom STATUS
die moet zijn ingesteld op Available
, evenals de PERCENTAGE COMPLETE
ingesteld op 100
.
Als de output eruitziet zoals hierboven, dan zijn alle belangrijke toepassingsnamespaces succesvol geback-upt.
Het kan even duren voordat de volledige clusterback-up is voltooid, afhankelijk van hoeveel namespaces en bijbehorende resources bij het proces zijn betrokken.
U kunt ook het hoofddashboard van de webconsole openen en de multi-namespace back-up inspecteren (let op hoe alle belangrijke namespaces die zijn back-up zijn gemarkeerd in groen, in een honingraatstructuur):
Het opnieuw maken van de DOKS-cluster en het herstellen van applicaties
Een belangrijk aspect om in gedachten te houden is dat telkens wanneer u een DOKS-cluster vernietigt en vervolgens herstelt, er ook een nieuwe Load Balancer met een nieuw extern IP-adres wordt aangemaakt wanneer TVK uw ingress-controller herstelt. Zorg er dus voor dat u uw DigitalOcean DNS A-records
dienovereenkomstig bijwerkt.
Verwijder nu de hele DOKS-cluster (zorg ervoor dat u de <>
plaatshouders vervangt):
Vervolgens maakt u de cluster opnieuw aan zoals beschreven in Digitale Oceaan Kubernetes instellen.
Om de hersteloperatie uit te voeren, moet u de TVK-toepassing installeren zoals beschreven in Stap 1 – TrilioVault voor Kubernetes installeren. Het is belangrijk om dezelfde Helm Chart-versie te gebruiken.
Na succesvolle installatie, configureer het TVK-doel zoals beschreven in Stap 2 – Het maken van een TrilioVault Doel om Back-ups op te slaan, en wijs het toe aan dezelfde S3 bucket
waar je back-upgegevens zich bevinden. Zorg er ook voor dat doelbladeren
ingeschakeld is.
Vervolgens verifieer en activeer je een nieuwe licentie zoals beschreven in de TrilioVault Applicatie Licentie sectie.
Om toegang te krijgen tot de webconsole-gebruikersinterface, raadpleeg de Toegang krijgen tot de TVK Web Management Console sectie.
Navigeer dan naar Resource Management -> TVK Namespace -> Doelen (in geval van een Starter Kit is de TVK Namespace tvk
):
Verder gaan, blader door het doel en lijst de beschikbare back-ups op door te klikken op de Acties knop. Selecteer vervolgens de Browser starten optie uit het pop-up menu. Hiervoor moet het doel de enableBrowsing
vlag ingesteld hebben op true
.
Klik nu op het starter-kit-cluster-backup-plan item uit de lijst, en klik dan en breid het starter-kit-cluster-backup item uit het rechter sub-venster:
Om het herstelproces te starten, klik op de Herstellen knop.
Controleren van de Status van DOKS Clusterapplicaties
Eerst controleren we alle Kubernetes-resources van de cluster.
Vervolgens zorgen we ervoor dat uw DNS A-records zijn bijgewerkt om te verwijzen naar het externe IP-adres van uw nieuwe load balancer.
Tenslotte moeten de backend-applicaties ook reageren op HTTP-verzoeken. Raadpleeg Het maken van de Ambassador Edge Stack Backend Services met betrekking tot de backend-applicaties die worden gebruikt in de Starter Kit-tutorial.
In de volgende stap leert u hoe u geplande (of automatische) back-ups kunt uitvoeren voor uw DOKS-clusterapplicaties.
Automatisch back-ups maken op basis van een schema is een zeer handige functie. Het stelt u in staat om de tijd terug te spoelen en het systeem te herstellen naar een vorig werkende staat als er iets misgaat. In deze sectie wordt een voorbeeld gegeven van een automatische back-up op een schema van 5 minuten (de kube-system
-namespace is gekozen).
Eerst moet je een Policy
CRD van het type Schedule
maken dat het back-upschema definieert in cron-formaat (hetzelfde als Linux
cron). Planning policies kunnen worden gebruikt voor zowel BackupPlan
als ClusterBackupPlan
CRD’s. Een typisch planningbeleid CRD ziet er als volgt uit (definieert een 5 minuten
schema):
# activeer elke 5 minuten
Vervolgens kunt u het planningsbeleid toepassen op een ClusterBackupPlan
CRD bijvoorbeeld, zoals hieronder te zien is:
U kunt zien dat het een basis ClusterBackupPlan
CRD is, waarin wordt verwezen naar de eerder gedefinieerde Policy
CRD via het spec.backupConfig.schedulePolicy
veld. U kunt afzonderlijke beleidsregels maken voor volledige of incrementele back-ups, vandaar dat het fullBackupPolicy
of incrementalBackupPolicy
kan worden gespecificeerd in de spec.
Maak nu alstublieft het schema Policy
aan met behulp van het voorbeeldmanifest dat wordt verstrekt door de Starter Kit-tutorial.
NAME POLICY DEFAULT
scheduled-backup-every-5min Schedule false
Wijzig de directory naar waar het Starter Kit Git-repository is gekloond op uw lokale machine.
Maak ten slotte de resources aan voor de geplande back-ups van de kube-system
namespace:
# Maak eerst het back-upplan voor de kube-system namespace
NAME TARGET ... FULL BACKUP POLICY STATUS
kube-system-ns-backup-plan-5min-schedule trilio-s3-target ... scheduled-backup-every-5min Available
# Maak en activeer de geplande back-up voor de kube-system namespace
Controleer de status van het geplande back-upplan voor kube-system
:
NAME BACKUPPLAN BACKUP TYPE STATUS ...
kube-system-ns-full-backup-scheduled kube-system-ns-backup-plan-5min-schedule Full Available ...
Het uitvoer ziet er vergelijkbaar uit als volgt. Let op de waarde van FULL BACKUP POLICY
ingesteld op het eerder aangemaakte beleid scheduled-backup-every-5min
, evenals de STATUS
die Beschikbaar
moet zijn.
Controleer de status van de geplande back-up voor kube-system
:
Het uitvoer ziet er vergelijkbaar uit als volgt. Let op de waarde van BACKUPPLAN
ingesteld op de eerder aangemaakte back-upplan resource, evenals de STATUS
die Beschikbaar
moet zijn.
Nu kunt u controleren of back-ups regelmatig worden uitgevoerd (elke 5 minuten), door de cluster back-up resource te bevragen en de kolom START TIME
te inspecteren (kubectl get clusterbackup -n tvk
). Het zou het tijdsverschil van 5 minuten moeten weergeven, zoals gemarkeerd in de onderstaande afbeelding:
In de volgende stap leert u hoe u een retentiebeleid voor uw back-ups instelt.
Stap 7 – Back-up Retentiebeleid
Het retentiebeleid stelt u in staat om het aantal back-ups dat moet worden behouden en het ritme om back-ups te verwijderen volgens compliance eisen te definiëren. Het retentiebeleid CRD biedt een eenvoudige YAML-specificatie om het aantal back-ups te definiëren dat moet worden behouden in termen van dagen, weken, maanden, jaren, de laatste, enz.
- Het gebruik van Retentiebeleid
- Retentiebeleid kan worden gebruikt voor zowel
BackupPlan
alsClusterBackupPlan
CRD’s. Een typische manifest van eenBeleid
voor het typeRetention
ziet er als volgt uit: - Het bovenstaande retentiebeleid vertaalt zich naar:
- Elke week, behoud één back-up op woensdag.
Elke maand, behoud één back-up op dag 15.
A typical ClusterBackupPlan
example configuration that has a retention set looks like:
Elk jaar, behoud één back-up in maart.
Over het algemeen moeten er 2 meest recente back-ups beschikbaar zijn.
De basisstappen voor het maken van een retentiebeleidbron verlopen op dezelfde manier als voor geplande back-ups. U heeft een gedefinieerde BackupPlan
of ClusterBackupPlan
CRD nodig om te verwijzen naar het retentiebeleid, en vervolgens een Backup
of ClusterBackup
object om het proces te activeren.
Merk op dat het een retentionPolicy
-veld gebruikt om te verwijzen naar het betreffende beleid. Natuurlijk kunt u een back-upplan hebben dat beide soorten beleid instelt, zodat het geplande back-ups kan uitvoeren, evenals om te gaan met retentiestrategieën.
Het gebruik van Opschoningsbeleid
Je hebt een manier nodig om al die objecten die niet langer in gebruik zijn te verwijderen. Hiervoor moet je de Cleanup Policy
CRD introduceren:
De bovenstaande opruimbeleid moet gedefinieerd worden in de TVK-installatieruimte. Vervolgens wordt automatisch een cronjob voor je aangemaakt die elke 30 minuten wordt uitgevoerd en mislukte back-ups verwijdert op basis van de opgegeven waarde voor backupdays
binnen het spec
-veld.
Conclusie
- In deze tutorial heb je geleerd hoe je eenmalige en geplande back-ups kunt uitvoeren, en alles kunt herstellen.
- Alle basis taken en handelingen die in deze tutorial zijn uitgelegd, zijn bedoeld om je een basisintroductie en begrip te geven van wat TrilioVault voor Kubernetes kan doen.
- Meer informatie