terraform - 如何使用 terraform 将调度程序策略附加到 Gcloud 中的持久卷声明
问题描述
我在 Gcloud 中使用 terraform (v0.12.21) 创建了一个网络服务器基础架构来部署很多网站。
我用这段代码来创建它们:
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
我所有的尝试都导致了错误。你能帮帮我吗?
解决方案
推荐阅读
- python - slack rtm_connect 没有返回输出
- spring - Springboot 所需的请求部分“文件”不存在
- recursion - 在 Rust 中返回递归闭包
- python - 在 Python 请求中使用二进制数据
- ruby-on-rails - 自循环中的 Active Record 模型查询在 Rails 中的执行方式不同
- c - 在 C 中实现具有邻接表的图
- python - 打印行的次数与其值加一的次数在其他行中出现
- c# - 为什么 MVC Core View 模板不为集合生成代码?
- amazon-cognito - Aws Cognito:如何获取 API 命令行测试的令牌?
- node.js - 节点版本与 npm 过时