使用EFS时Terraform kubernetes_persistent_volume的persistent_volume_source配置

问题描述

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

我想使用kubernetes_persistent_volume资源通过Terraform自动创建PV。该资源提供了许多persistent volume sources选项,其中AWS EBS效果很好。 但是我找不到适合EFS的工具,有人知道吗?

解决方法

您可以使用terraform启用这样的EFS存储类。另请参阅EFS provider

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提供程序(具有较旧的版本),所以我需要显式地为提供程序提供足够新的版本。 (对不起,无法跟踪添加的确切版本)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...