How to configure a Snapshot Scheduler to copy 1200 PV's

Hello:
I configured my Terraform v0.12.21 to deploy +100 webs with wordpress in Google Cloud Kubernetes Engine (GKE). I used Terraform to create one Persistent Volume Claim for each webpage.

Now I have a problem: I need to configure a snapshot schedule for all of that Persistent Volumes, but after reading a lot of the Google and Terraform documentation about the snapshot scheduler, I cannot find any example of how to do that:

Docs:



Here is an example of my code:

#VOLUME CLAIM
resource "kubernetes_persistent_volume_claim" "wordpress_volumeclaim" {
  for_each = var.wordpress_site

  metadata {
    name      = "wordpress-volumeclaim-${terraform.workspace}-${each.value.name}"
    namespace = "default"
  }
  spec {
    access_modes = ["ReadWriteOnce"]
    resources {
      requests = { storage = each.value.disk }
    }
  }
}

resource "kubernetes_deployment" "wordpress" {
  for_each = var.wordpress_site

  metadata {
    name   = each.value.name
    labels = { app = each.value.name }
  }
  spec {
    replicas = 1
    selector {
      match_labels = { app = each.value.name }
    }
    template {
      metadata {
        labels = { app = each.value.name }
      }
      spec {

        volume {
          name = "wordpress-persistent-storage-${terraform.workspace}-${each.value.name}"
          persistent_volume_claim {
            claim_name = "wordpress-volumeclaim-${terraform.workspace}-${each.value.name}"
          }
        }

Could you help me to add my snapshot scheduler (created manually in GCE, and named “snapshot-pvc”). Maybe this cannot be possibly done.

Thanks in advance,

aconde

1 Like

Today I added the Snapshot Scheduler to my code correctly:

resource "google_compute_resource_policy" "policy" {
  name = "my-resource-policy"
  region = "europe-west1"
  project = var.project
  snapshot_schedule_policy {
    schedule {
      daily_schedule {
        days_in_cycle = 1
        start_time = "04:00"
      }
    }
    retention_policy {
      max_retention_days    = 7
      on_source_disk_delete = "KEEP_AUTO_SNAPSHOTS"
    }
  }
}

But now I dont know how to attach my schedule to my volume claims, because when I add the resource policies to the claim, terraform give me an error:

resource "kubernetes_persistent_volume_claim" "wordpress_volumeclaim" {
  for_each = var.wordpress_site

  metadata {
    name      = "wordpress-volumeclaim-${terraform.workspace}-${each.value.name}"
    namespace = "default"
  }
  spec {
    access_modes = ["ReadWriteOnce"]
    resources {
      requests = {
        storage = each.value.disk
        resource_policies = google_compute_resource_policy.policy.name
      }
    }
  }
}

The error after the terraform apply is:

Error: quantities must match the regular expression ‘^([±]?[0-9.]+)([eEinumkKMGTP][-+]?[0-9])$’

on wordpress/wordpress-site/main.tf line 21, in resource “kubernetes_persistent_volume_claim” “wordpress_volumeclaim”:
21: resource “kubernetes_persistent_volume_claim” “wordpress_volumeclaim” {

Any Idea?