首页 > 解决方案 > 如何使用 terraform 将调度程序策略附加到 Gcloud 中的持久卷声明

问题描述

我在 Gcloud 中使用 terraform (v0.12.21) 创建了一个网络服务器基础架构来部署很多网站。

我为每个部署创建了一个持久卷声明(每个 1GB): 持久卷

我用这段代码来创建它们:

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
      }
    }
  }
}
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}"
          }
        }
[...]

但是现在我需要备份所有这些磁盘,我最好的想法是使用 Gcloud 快照功能,它必须是动态的,因为这些磁盘的创建是动态的。

首先,我创建了一个快照策略:

resource "google_compute_resource_policy" "policy" {
  name = "my-resource-policy"
  region = "zone-region-here"
  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"
    }
  }
}

现在我想将它添加到我的持久性体积声明中。但我不知道怎么做,因为这条线根本不起作用:

resource_policies = google_compute_resource_policy.policy.name

我所有的尝试都导致了错误。你能帮帮我吗?

标签: terraformgoogle-kubernetes-enginesnapshotpolicy

解决方案


推荐阅读