Backup For GKE – Part 2 – Backup & Restore Plan

Google Kubernetes Engine (GKE) is a powerful tool for running containerized applications. But what happens if your GKE cluster crashes? Or if your application data is corrupted? Backup for GKE is a new feature that can help you protect your GKE clusters and applications.

In part two of this series, we will demonstrate how to create a backup plan for your GKE stateful workloads.

Why are Backups for GKE plans useful?

Backup plans are a useful tool for managing & maintaining GKE environments. They can be used for disaster recovery, compliance and audit, CI/CD pipelines, cloning workloads, and upgrade scenarios.

  • Disaster recovery: Backup plans can be used to restore GKE clusters in the event of a disaster. This can be done by restoring the cluster from a backup or by creating a new cluster from a backup.
  • Compliance and audit: Backup plans can be used to meet compliance and audit requirements. This can be done by storing backups in a secure location or by providing access to backups to authorized users.
  • CI/CD pipelines: Backup plans can be used in CI/CD pipelines to create and restore GKE clusters. This can be done by using the backup plan to create a new cluster or by using the backup plan to restore a cluster to a specific point in time.
  • Cloning workloads: Backup plans can be used to clone workloads. This can be done by using the backup plan to create a new cluster or by using the backup plan to restore a cluster to a specific point in time.
  • Upgrade scenarios: Backup plans can be used in upgrade scenarios. This can be done by using the backup plan to create a new cluster or by using the backup plan to restore a cluster to a specific point in time.

With the above in mind, let’s walk through how to set up a backup plan. The steps below take you through setting up a GKE Autopilot cluster, enabling backups, deploying an example StatefulSet and creating a backup plan.

Setting up Backup for GKE[1]

Prerequisites – In my case, I made a VPC named gke-vpc, subnet gke-vpc and an automatic subnet

  • Project Created – name gke-backup[2]
  • VPC(gke-vpc), subnet(gke-vpc) and firewall rules[3]

GKE-Autopilot Creation[4]

gcloud container --project "gke-backup" clusters create-auto "gke-autopilot" --region "us-central1" --release-channel "regular" --network "projects/gke-backup/global/networks/gke-vpc" --subnetwork "projects/gke-backup/regions/us-central1/subnetworks/gke-vpc" --cluster-ipv4-cidr "/17" --services-ipv4-cidr "/22"

Enable Backups[5]

gcloud services enable gkebackup.googleapis.com
gcloud container clusters update gke-autopilot \
   --project=gke-backup  \
   --region=us-central1 \
   --update-addons=BackupRestore=ENABLED

Stateful set[6]

Deploy the below statefulset yaml to your cluster.

apiVersion: v1
kind: Service
metadata:
 name: nginx
 labels:
   app: nginx
spec:
 ports:
 - port: 80
   name: web
 clusterIP: None
 selector:
   app: nginx
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
 name: web
spec:
 serviceName: "nginx"
 replicas: 2
 selector:
   matchLabels:
     app: nginx
 template:
   metadata:
     labels:
       app: nginx
   spec:
     containers:
     - name: nginx
       image: registry.k8s.io/nginx-slim:0.8
       ports:
       - containerPort: 80
         name: web
       volumeMounts:
       - name: www
         mountPath: /usr/share/nginx/html
 volumeClaimTemplates:
 - metadata:
     name: www
   spec:
     accessModes: [ "ReadWriteOnce" ]
     resources:
       requests:
         storage: 1Gi

If in terminal, run below commands:

  • touch statefulset.yaml
  • vi statefulset.yaml
  • copy/paste
  • enter :wq
  • kubectl create -f statefulset.yaml

Backup Plan[7]

gcloud beta container backup-restore backup-plans create stateful-plan \
    --project=gke-backup \
    --location=us-central1 \
    --cluster=projects/gke-backup/locations/us-        
    central1/clusters/gke-autopilot \
    --all-namespaces \
    --backup-retain-days=5 \
    --cron-schedule="0 * * * *" \
    --include-volume-data
gcloud beta container backup-restore backups create example-backup \
    --project=gke-backup \
    --location=us-central1 \
    --backup-plan=stateful-plan \
    --wait-for-completion

Setting up Backup for GKE

Restore plans can be used to restore a cluster to a specific point in time, or to a specific version of GKE. This can be helpful if you need to recover from a data loss or if you need to roll back to a previous version of GKE.

Restore plans can also be used to restore a cluster to a different environment such as a different region. This can be helpful if you need to move your cluster to a new environment or if you need to follow new regulations.

Overall, GKE restore plans are a useful tool for managing clusters. They can help you to automate the process of restoring a cluster, restoring a cluster to a specific point in time or version, or restoring a cluster to a different environment.

The below takes you through setting up creating a restore plan and running it.

Creating your Restore Plan[8]

gcloud beta container backup-restore restore-plans create example-restore \
    --project=gke-backup \
    --location=us-central1 \
    --backup-plan=projects/gke-backup/locations/us-
    central1/backupPlans/stateful-plan \
    --cluster=projects/gke-backup/locations/us-
    central1/clusters/gke-autopilot \
    --namespaced-resource-restore-mode=delete-and-
    restore \
    --all-namespaces

Restoring your GKE backup[9]

gcloud beta container backup-restore restores create example-restore \
    --project=gke-backup \
    --location=us-central1 \
    --restore-plan=example-restore \      
--backup=projects/gke-backup/locations/us-central1/backupPlans/stateful-plan/backups/example-backup

There you have it! You now have a backup-plan for your stateful cluster in the default namespace. Next, get started with GKE Network Policies this quick tutorial.

Reference:

[1] GKE-Backup-Concepts (https://cloud.google.com/kubernetes-engine/docs/add-on/backup-for-gke/concepts/backup-for-gke#architecture)
[2] Project Creation (https://cloud.google.com/resource-manager/docs/creating-managing-projects#creating_a_project)
[3] VPC, Subnets and Firewall rules (https://cloud.google.com/vpc/docs/create-modify-vpc-networks)
[2] GKE-AutoPilot (https://cloud.google.com/kubernetes-engine/docs/how-to/creating-an-autopilot-cluster)
[3] GKE-Backup-Enable (https://cloud.google.com/kubernetes-engine/docs/add-on/backup-for-gke/how-to/install)
[4] GKE-Statefulset-example (https://kubernetes.io/docs/tutorials/stateful-application/basic-stateful-set/)
[5] GKE-Backup-Planning-Backup (https://cloud.google.com/kubernetes-engine/docs/how-to/creating-an-autopilot-cluster)
[6] GKE Restore Plan (https://cloud.google.com/kubernetes-engine/docs/add-on/backup-for-gke/how-to/restore-plan)
[7] GKE Restore Backup (https://cloud.google.com/kubernetes-engine/docs/add-on/backup-for-gke/how-to/restore)

By: Spencer Patrick Bischof (Customer Engineer) and Hakim Graia (Customer Engineer)
Originally published at: Google Cloud Blog

Source: cyberpogo.com



For enquiries, product placements, sponsorships, and collaborations, connect with us at hello@globalcloudplatforms.com. We'd love to hear from you!


Our humans need coffee too! Your support is highly appreciated, thank you!

Total
0
Shares
Previous Article

TCS Announces Generative AI Partnership With Google Cloud And New Offering For Enterprise Customers

Next Article

Wipro Expands Google Cloud Partnership To Advance Enterprise Adoption Of Generative AI

Related Posts