1

我在 k8s 集群中使用 EFS 作为 CSI 驱动程序。
我想使用 Terraform 创建一个将使用 efs 存储类的 PV。我确认我可以“手动”创建 PV。

我想使用kubernetes_persistent_volume资源使用 Terraform 自动创建 PV。该资源提供了许多持久卷源选项,其中运行良好的AWS EBS。但是我找不到适合 EFS 的,有人知道吗?

4

2 回答 2

0

您可以使用 terraform 启用这样的 EFS 存储类。另请参阅EFS 提供程序

variable cluster_interpreter {
  type    = list(string)
  default = ["/bin/sh", "-c"]
}

variable class {
  type    = string
  default = "kubectl apply -k 'github.com/kubernetes-sigs/aws-efs-csi-driver/deploy/kubernetes/overlays/stable/?ref=master'"
}

resource "null_resource" "storage" {

  provisioner "local-exec" {
    command     = var.class
    interpreter = var.cluster_interpreter
  }
}
于 2020-11-04T10:28:35.950 回答
0

您可以使用较新版本的 kubernetes 提供程序,并结合安装 csi 驱动程序来执行此操作(如 Shashank 的回答)

例子

resource "kubernetes_persistent_volume" "pv_example" {
  provider = "kubernetes.localkubernetes"
  metadata {
    name = local.efs_name
  }
  spec {
    access_modes = ["ReadWriteMany"]
    capacity = {
      storage = "50Gi"
    }
    persistent_volume_source {
        csi {
          driver = "efs.csi.aws.com"
          volume_handle = EXISTING_EFS_VOLUME
        }
    }
  }
}

我在这里定义了

provider "kubernetes" {
  alias = "localkubernetes"
  ...
  version                = "= 1.13.3"
}

因为 terraform 也有一个来自我正在使用的模块的 kubernetes 提供程序(旧版本),所以我需要明确地为提供程序提供一个足够新的版本。(抱歉无法找到添加的确切版本)

于 2020-11-14T09:10:50.133 回答