Hoe back-up en herstel uit te voeren met TrilioVault in DOKS

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

Om deze handleiding te voltooien, heb je het volgende nodig:

  1. A DO Spaces Bucket and access keys. Save the access and secret keys in a safe place for later use.
  2. A Git client to clone the Starter Kit repository.
  3. Helm, voor het beheren van TrilioVault Operator-releases en upgrades.
  4. Doctl voor interactie met de DigitalOcean API.
  5. 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:

kubectl get storageclass

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:

kubectl get crd | grep volumesnapshot

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:

kubectl get crd volumesnapshots.snapshot.storage.k8s.io -o yaml

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 de TrilioVault-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:

git clone https://github.com/digitalocean/Kubernetes-Starter-Kit-Developers.git
cd Kubernetes-Starter-Kit-Developers

Vervolgens voeg je het TrilioVault Helm-repository toe en vermeld je de beschikbare diagrammen:

helm repo add triliovault-operator http://charts.k8strilio.net/trilio-stable/k8s-triliovault-operator
helm repo update triliovault-operator
helm search repo triliovault-operator

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).

code 05-setup-backup-restore/assets/manifests/triliovault-values-v2.9.2.yaml

Tenslotte, installeer TrilioVault voor Kubernetes met Helm:

helm install triliovault-operator triliovault-operator/k8s-triliovault-operator \
  --namespace tvk \
  --create-namespace \
  -f 05-setup-backup-restore/assets/manifests/triliovault-values.yaml

–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.

  1. U kunt de volgende velden bijwerken in values.yaml:
  2. installTVK.applicationScope voor TVK-installatieomvang bijvoorbeeld Cluster of Namespaced
  3. installTVK.ingressConfig.host voor TVK UI-hostnaam bijvoorbeeld tvk-doks.com

installTVK.ComponentConfiguration.ingressController.service.type voor het servicetype om toegang te krijgen tot de TVK-UI bijvoorbeeld NodePort of LoadBalancer

helm ls -n tvk

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):

kubectl get deployments -n tvk

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

kubectl apply -f 05-setup-backup-restore/assets/manifests/triliovault/tvk_install_license.yaml

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.

kubectl apply -f <YOUR_LICENSE_FILE_NAME>.yaml -n tvk

Als u een gratis licentie van de website van Trilio downloadt, pas deze dan toe met deze opdracht:

kubectl get license -n tvk

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.

kubectl describe license test-license-1 -n tvk

De licentie wordt beheerd via een speciale CRD genaamd Licentie-object. U kunt dit inspecteren door de volgende opdracht uit te voeren:

Name:         test-license-1
Namespace:    tvk
Labels:       <none>
Annotations:
              generation: 1
              triliovault.trilio.io/creator: system:serviceaccount:tvk:k8s-triliovault
              triliovault.trilio.io/instance-id: b060660d-4851-482b-8e60-4addd260e1d3
              triliovault.trilio.io/updater:
                [{"username":"system:serviceaccount:tvk:k8s-triliovault","lastUpdatedTimestamp":"2022-02-24T06:38:21.418828262Z"}]
API Version:  triliovault.trilio.io/v1
Kind:         License
Metadata:
  Creation Timestamp:  2022-02-24T06:38:21Z
...
Status:
  Condition:
    Message:           License Key changed
    Timestamp:         2022-02-24T06:38:21Z
    Message:           Cluster License Activated successfully.
    Status:            Active
    Timestamp:         2022-02-24T06:38:21Z
  Current Node Count:  1
  Max Nodes:           1
  Message:             Cluster License Activated successfully.
  Properties:
    Active:                        true
    Capacity:                      100000
    Company:                       TRILIO-KUBERNETES-LICENSE-GEN-DIGITALOCEAN-BASIC
    Creation Timestamp:            2022-02-24T00:00:00Z
    Edition:                       FreeTrial
    Expiration Timestamp:          2023-02-25T00:00:00Z
    Kube UID:                      b060660d-4851-482b-8e60-4addd260e1d3
    License ID:                    TVAULT-5a4b42c6-953c-11ec-8116-0cc47a9fd48e
    Maintenance Expiry Timestamp:  2023-02-25T00:00:00Z
    Number Of Users:               -1
    Purchase Timestamp:            2022-02-24T00:00:00Z
    Scope:                         Cluster
...

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

kubectl apply -f <YOUR_LICENSE_FILE_NAME>.yaml -n tvk

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):

Vervolgens kunt u de status van de nieuwe licentie controleren zoals u al heeft geleerd via:
kubectl get license -n tvk

# Lijst beschikbare TVK-licenties eerst uit de `tvk` namespace
kubectl describe license <YOUR_LICENSE_NAME_HERE> -n tvk

# 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:

apiVersion: triliovault.trilio.io/v1
kind: Target
metadata:
  name: trilio-s3-target
  namespace: tvk
spec:
  type: ObjectStore
  vendor: Other
  enableBrowsing: true
  objectStoreCredentials:
    bucketName: <YOUR_DO_SPACES_BUCKET_NAME_HERE>
    region: <YOUR_DO_SPACES_BUCKET_REGION_HERE>
    url: 'https://<YOUR_DO_SPACES_BUCKET_ENDPOINT_HERE>'
    credentialSecret:
      name: trilio-s3-target
      namespace: tvk
  thresholdCapacity: 10Gi

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 u Anders gebruiken in plaats van AWS).
  • spec.enableBrowsing: Bladeren voor het doel inschakelen.
  • spec.objectStoreCredentials: Definieert vereiste referenties (via credentialSecret) om toegang te krijgen tot de S3-opslag, evenals andere parameters zoals bucketregio en -naam.

spec.thresholdCapacity: Maximale drempelcapaciteit om back-upgegevens op te slaan.

apiVersion: v1
kind: Secret
metadata:
  name: trilio-s3-target
  namespace: tvk
type: Opaque
stringData:
  accessKey: <YOUR_DO_SPACES_ACCESS_KEY_ID_HERE> Om toegang te krijgen tot S3-opslag, moet elke doelwit de bucketreferenties kennen. Er moet ook een Kubernetes Secret worden aangemaakt:
  secretKey: <YOUR_DO_SPACES_SECRET_KEY_HERE>    # waarde moet base64 gecodeerd zijn

# 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:

cd Kubernetes-Starter-Kit-Developers

Eerst, wijzig de directory waar de Starter Kit Git-repository op uw lokale machine is gekloond:

kubectl create secret generic trilio-s3-target \
  --namespace=tvk \
  --from-literal=accessKey="<YOUR_DO_SPACES_ACCESS_KEY_HERE>" \
  --from-literal=secretKey="<YOUR_DO_SPACES_SECRET_KEY_HERE>"

Vervolgens, maak het Kubernetes-geheim aan met uw S3-bucketreferenties (vervang alstublieft de <> plaatshouders dienovereenkomstig):

code 05-setup-backup-restore/assets/manifests/triliovault/triliovault-s3-target.yaml

–from-literal=accessKey=“<UW_DO_SPACES_ACCESS_KEY_HIER>” \

–from-literal=secretKey=“<UW_DO_SPACES_SECRET_KEY_HIER>”

kubectl apply -f 05-setup-backup-restore/assets/manifests/triliovault/triliovault-s3-target.yaml

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.

kubectl get target trilio-s3-target  -n tvk

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:

De uitvoer ziet er ongeveer als volgt uit. Let op de waarde in de kolom STATUS - deze moet Available zijn, wat betekent dat het zich in een gezonde toestand bevindt.
kubectl get pods -n tvk | grep trilio-s3-target-validator

Als de uitvoer er zo uitziet, heeft u het S3-doelobject met succes geconfigureerd.
Als het doelobject niet gezond wordt, kunt u de logs van de Pod trilio-s3-target-validator controleren om het probleem te vinden:

# Eerst moet je de doelvalidator vinden
kubectl logs pod/trilio-s3-target-validator-tio99a-6lz4q -n tvk

# 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.

kubectl get svc -n tvk

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.

Ten eerste moet je de ingress-nginx-controller-service identificeren in de tvk-namespace:
installTVK:
  ingressConfig:
    host: "tvk-doks.com"

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:

kubectl port-forward svc/k8s-triliovault-ingress-nginx-controller 8080:80 -n tvk

# De hostnaam om te gebruiken bij het openen van de webconsole via de TVK-ingress nginx-controller

Met de bovenstaande informatie bij de hand, ga je gang en bewerk het /etc/hosts-bestand en voeg deze vermelding toe:
doctl k8s cluster list

Vervolgens maak je de poortdoorsturing voor de TVK-ingresscontroller-service:
doctl kubernetes cluster kubeconfig show <YOUR_CLUSTER_NAME_HERE> > config_<YOUR_CLUSTER_NAME_HERE>.yaml

Ten slotte exporteer je het kubeconfig-bestand voor je DOKS-cluster. Deze stap is vereist zodat de webconsole je kan authenticeren.

DOKS_CLUSTER_NAME="$(doctl k8s cluster list --no-header --format Name)"
doctl kubernetes cluster kubeconfig show $DOKS_CLUSTER_NAME > config_${DOKS_CLUSTER_NAME}.yaml

# 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

apiVersion: triliovault.trilio.io/v1
kind: BackupPlan
metadata:
  name: ambassador-helm-release-backup-plan
  namespace: ambassador
spec:
  backupConfig:
    target:
      name: trilio-s3-target
      namespace: tvk
  backupPlanComponents:
    helmReleases:
      - ambassador

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:

apiVersion: triliovault.trilio.io/v1
kind: Backup
metadata:
  name: ambassador-helm-release-full-backup
  namespace: ambassador
spec:
  type: Full
  backupPlan:
    name: ambassador-helm-release-backup-plan
    namespace: ambassador

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.

cd Kubernetes-Starter-Kit-Developers

Stappen om de Ambassador Helm-release eenmalig te initiëren:

code 05-setup-backup-restore/assets/manifests/triliovault/ambassador-helm-release-backup-plan.yaml
code 05-setup-backup-restore/assets/manifests/triliovault/ambassador-helm-release-backup.yaml

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.

kubectl apply -f 05-setup-backup-restore/assets/manifests/triliovault/ambassador-helm-release-backup-plan.yaml
kubectl apply -f 05-setup-backup-restore/assets/manifests/triliovault/ambassador-helm-release-backup.yaml

Vervolgens, verander de directory naar waar het Starter Kit Git-repository is gekloond op uw lokale machine:

kubectl get backupplan ambassador-helm-release-backup-plan -n ambassador

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.

kubectl get backup ambassador-helm-release-full-backup -n ambassador

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.

s3cmd ls s3://trilio-starter-kit --recursive

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`)

kubectl get pods -n ambassador | grep metamover

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.

kubectl logs pod/ambassador-helm-release-full-backup-metamover-mg9gl0--1-2d6wx -n ambassador -f

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.

helm delete ambassador -n ambassador

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.

kubectl get all -n ambassador

Het verwijderen van de ambassadeur Helm-release en bronnen

curl -Li http://quote.starter-kit.online/quote/
curl -Li http://echo.starter-kit.online/echo/

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):

Als u dezelfde namespace herstelt, zorg er dan voor dat de oorspronkelijke toepassingscomponenten zijn verwijderd. Vooral de PVC van de toepassing moet zijn verwijderd.

apiVersion: triliovault.trilio.io/v1
kind: Restore
metadata:
  name: ambassador-helm-release-restore
  namespace: ambassador
spec:
  source:
    type: Backup
    backup:
      name: ambassador-helm-release-full-backup
      namespace: ambassador
  skipIfAlreadyExists: true

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 de ambassador 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 de A-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.

code 05-setup-backup-restore/assets/manifests/triliovault/ambassador-helm-release-restore.yaml

spec.skipIfAlreadyExists: Specificeert of het herstellen van een resource moet worden overgeslagen als deze al bestaat in de herstelde namespace.

kubectl apply -f 05-setup-backup-restore/assets/manifests/triliovault/ambassador-helm-release-restore.yaml

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.

kubectl get restore ambassador-helm-release-restore -n ambassador

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.

kubectl get all -n ambassador

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

kubectl get hosts -n ambassador

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:

kubectl get mappings -n ambassador

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:

curl -Li http://quote.starter-kit.online/quote/
curl -Li http://echo.starter-kit.online/echo/

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:

apiVersion: triliovault.trilio.io/v1
kind: ClusterBackupPlan
metadata:
  name: starter-kit-cluster-backup-plan
  namespace: tvk
spec:
  backupConfig:
    target:
      name: trilio-s3-target
      namespace: tvk
  backupComponents:
    - namespace: ambassador
    - namespace: backend
    - namespace: monitoring

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

cd Kubernetes-Starter-Kit-Developers

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.

code 05-setup-backup-restore/assets/manifests/triliovault/starter-kit-cluster-backup-plan.yaml
code 05-setup-backup-restore/assets/manifests/triliovault/starter-kit-cluster-backup.yaml

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.

kubectl apply -f 05-setup-backup-restore/assets/manifests/triliovault/starter-kit-cluster-backup-plan.yaml
kubectl apply -f 05-setup-backup-restore/assets/manifests/triliovault/starter-kit-cluster-backup.yaml

Verander eerst de directory waar de Starter Kit Git-repository is gekloond op uw lokale machine:

kubectl get clusterbackupplan starter-kit-cluster-backup-plan -n tvk

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:

kubectl get clusterbackup starter-kit-cluster-backup -n tvk

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):

doctl kubernetes cluster delete <DOKS_CLUSTER_NAME>

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:

kubectl get all --all-namespaces

Om het herstelproces te starten, klik op de Herstellen knop.

Controleren van de Status van DOKS Clusterapplicaties

curl -Li http://quote.starter-kit.online/quote/
curl -Li http://echo.starter-kit.online/echo/

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.

kind: Policy
apiVersion: triliovault.trilio.io/v1
metadata:
  name: scheduled-backup-every-5min
  namespace: tvk
spec:
  type: Schedule
  scheduleConfig:
    schedule:
      - "*/5 * * * *" Stap 6 - Geplande Back-ups

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).

apiVersion: triliovault.trilio.io/v1
kind: ClusterBackupPlan
metadata:
  name: kube-system-ns-backup-plan-5min-schedule
  namespace: tvk
spec:
  backupConfig:
    target:
      name: trilio-s3-target
      namespace: tvk
    schedulePolicy:
      fullBackupPolicy:
        name: scheduled-backup-every-5min
        namespace: tvk
  backupComponents:
    - namespace: kube-system
    - namespace: backend

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:

kubectl apply -f 05-setup-backup-restore/assets/manifests/triliovault/scheduled-backup-every-5min.yaml

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.

kubectl get policies -n tvk

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.

Controleer of de beleidsresource is aangemaakt:
kubectl apply -f 05-setup-backup-restore/assets/manifests/triliovault/kube-system-ns-backup-plan-scheduled.yaml

De output ziet er ongeveer als volgt uit. Let op het type POLICY ingesteld op Schedule.
kubectl apply -f 05-setup-backup-restore/assets/manifests/triliovault/kube-system-ns-backup-scheduled.yaml

Maak ten slotte de resources aan voor de geplande back-ups van de kube-system namespace:

kubectl get clusterbackupplan kube-system-ns-backup-plan-5min-schedule -n tvk

# 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

kubectl get clusterbackup kube-system-ns-full-backup-scheduled -n tvk

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

apiVersion: triliovault.trilio.io/v1
kind: Policy
metadata:
  name: sample-policy
spec:
  type: Retention
  retentionConfig:
    latest: 2
    weekly: 1
    dayOfWeek: Wednesday
    monthly: 1
    dateOfMonth: 15
    monthOfYear: March
    yearly: 1

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 als ClusterBackupPlan CRD’s. Een typische manifest van een Beleid voor het type Retention 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:

apiVersion: triliovault.trilio.io/v1
kind: ClusterBackupPlan
metadata:
  name: kube-system-ns-backup-plan-5min-schedule
  namespace: tvk
spec:
  backupConfig:
    target:
      name: trilio-s3-target
      namespace: tvk
    retentionPolicy:
      fullBackupPolicy:
        name: ambassador-backups-retention-policy
        namespace: tvk
  backupComponents:
    - namespace: kube-system
    - namespace: backend

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.

apiVersion: triliovault.trilio.io/v1
kind: Policy
metadata:
  name: garbage-collect-policy
spec:
  type: Cleanup
  cleanupConfig:
    backupDays: 5

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

Backup en Restore DOKS-gegevens met behulp van Velero

Source:
https://www.digitalocean.com/community/developer-center/how-to-perform-backup-and-restore-using-triliovault-in-doks