Как прикрепить политику планировщика к утверждению о постоянном томе в Gcloud с помощью terraform

#terraform #google-kubernetes-engine #snapshot #policy

#terraform #google-kubernetes-engine #снимок #политика

Вопрос:

Я создал инфраструктуру веб-сервера с terraform (версия 0.12.21) в Gcloud для развертывания большого количества веб-сайтов.

Я создал постоянное утверждение объема для каждого развертывания (по 1 ГБ каждое): постоянные тома

Я использовал этот код для их создания:

 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
  

Все мои попытки привели к ошибкам. Не могли бы вы мне здесь помочь?

Комментарии:

1. Политики ресурсов, похоже, напрямую не поддерживаются утверждением о объеме terraform или следующим уровнем kubernetes. Я предполагаю, что вам нужно будет получить базовые ресурсы gcloud (возможно, через метаданные имени?) и прикрепить политики непосредственно к ним.