#terraform #amazon-eks #amazon-efs #kubernetes-pvc #terraform-provider-kubernetes
#terraform #amazon-eks #amazon-efs #kubernetes-pvc #terraform-provider-kubernetes
Вопрос:
Я использую EFS в качестве драйвера CSI в кластере k8s.
Я хотел бы использовать Terraform для создания PV, который будет использовать класс хранения efs. Я подтвердил, что могу создать PV «вручную».
Я хотел бы автоматизировать создание PV с помощью Terraform, используя ресурс kubernetes_persistent_volume. Ресурс предлагает множество вариантов источников постоянных томов, среди которых AWS EBS, которая хорошо работает. Однако я не смог найти подходящую для EFS, у кого-нибудь есть идея?
Ответ №1:
Вы можете сделать это, используя более новую версию поставщика kubernetes в сочетании с установкой драйвера csi (как в ответе Шашанка)
пример
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 (с более старой версией) из модуля, который я использую, и поэтому мне нужно было явно указать поставщика с достаточно новой версией. (К сожалению, не удалось отследить точную версию, которую она была добавлена)
Ответ №2:
Вы можете включить подобный класс хранилища EFS с помощью terraform. Также обратитесь к поставщику 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
}
}