我在 k8s 集群中使用 EFS 作为 CSI 驱动程序。
我想使用 Terraform 创建一个将使用 efs 存储类的 PV。我确认我可以“手动”创建 PV。
我想使用kubernetes_persistent_volume资源使用 Terraform 自动创建 PV。该资源提供了许多持久卷源选项,其中运行良好的AWS EBS。但是我找不到适合 EFS 的,有人知道吗?
我在 k8s 集群中使用 EFS 作为 CSI 驱动程序。
我想使用 Terraform 创建一个将使用 efs 存储类的 PV。我确认我可以“手动”创建 PV。
我想使用kubernetes_persistent_volume资源使用 Terraform 自动创建 PV。该资源提供了许多持久卷源选项,其中运行良好的AWS EBS。但是我找不到适合 EFS 的,有人知道吗?
您可以使用 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
}
}
您可以使用较新版本的 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 提供程序(旧版本),所以我需要明确地为提供程序提供一个足够新的版本。(抱歉无法找到添加的确切版本)