使用Terraform创建kubernetes PV / PVC时指定名称空间

时间:2020-01-17 10:12:06

标签: kubernetes terraform

我正在尝试使用kubernetesTerraform GKE集群上创建PV / PVC

然而,documentation并没有mention指定如何在其中创建这些资源的namespace

我尝试在specmetadata部分中都添加了它,但收到错误消息:

resource "kubernetes_persistent_volume" "jenkins-persistent-volume" {
  metadata {
    name = "${var.kubernetes_persistent_volume_metadata_name}"
    # tried placing it here -->> namespace = "${var.kubernetes_jenkins_namespace}"

  }
  spec {
    # tried placing it here -->> namespace = "${var.kubernetes_jenkins_namespace}"
    capacity = {
      storage = "${var.kubernetes_persistent_volume_spec_capacity_storage}"
    }
    storage_class_name = "standard"
    access_modes = ["ReadWriteMany"]
    persistent_volume_source {
      gce_persistent_disk {
        fs_type = "ext4"
        pd_name = "${google_compute_disk.jenkins-disk.name}"
      }
    }
  }
}

错误:module.jenkins.kubernetes_persistent_volume.jenkins-persistent-volume:spec.0:无效或未知密钥:命名空间

在哪里放置这样的配置?

1 个答案:

答案 0 :(得分:2)

Persistent volumes是群集全局对象,并且不存在于特定的名称空间中。 (“就像节点是集群资源一样,它是集群中的一种资源。”)相应地,您不能在kubernetes_persistent_volume资源的任何地方包括名称空间名称。

如果您在云环境中运行(并且您的PV正在此处创建Google存储卷),通常仅创建一个持久卷声明,并让集群为您分配基础卷。 PVC 是命名空间范围的,并且Terraform kubernetes_persistent_volume_claim resource明确地documents,可以在namespace块中包含metadata