You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform通过Helm部署EFS CSI Driver遇超时错误,求配置指导

Terraform+Helm部署EFS CSI Driver超时问题解决

问题描述

尝试通过Terraform使用Helm安装EFS CSI Driver时,遇到「context deadline exceeded」超时错误,以下是部署用的Terraform代码片段:

resource "helm_release" "test_aws_efs_controller" {
  name       = "aws-efs-csi-driver"
  repository = "https://kubernetes-sigs.github.io/aws-efs-csi-driver/"
  chart      = "aws-efs-csi-driver"
  namespace  = "${var.project_name}-${var.environment_name}-microservices"
  version    = "2.2.0"

  set {
    name  = "clusterName"
    value = var.test_ekscluster_id
  }

  # set {
  #   name  = "image.repository"
  #   value = "public.ecr.aws/efs-csi-driver/amazon/aws-efs-csi-driver:v1.6.0"
  # }

  # set {
  #   name  = "image.tag"
  #   value = "v2.4.8"
  # }

  set {
    name  = "controller.serviceAccount.create"
    value = true
  }

  set {
    name  = "controller.serviceAccount.annotations.eks\\.amazonaws\\.com/role-arn"
    value = var.aws_efs_controller_role_arn
  }

  set {
    name  = "controller.serviceAccount.name"
    value = "${var.project_name}-${var.environment_name}-efs-controller"
  }

  depends_on = [
    var.test_nodegroup,
    var.aws_efs_controller_role_attach
  ]
}

已尝试调整仓库、版本及镜像地址的多种组合,仍无法解决超时问题,需要明确部署时各字段的正确取值及必备配置。


一、先排查超时根源

  • 确认Terraform执行环境(本地机器/CI/CD runner)能正常访问Helm仓库https://kubernetes-sigs.github.io/aws-efs-csi-driver/和AWS Public ECR
  • 检查EKS集群节点的安全组/网络ACL是否允许出站访问AWS EFS服务及Public ECR
  • 验证depends_on中的依赖资源是否完全就绪(节点组所有节点处于Ready状态、IAM角色正确关联)

二、正确的字段取值及配置

1. Helm仓库与版本匹配

仓库地址是正确的,版本需和Chart适配,推荐使用稳定版(比如2.13.0),注意对应规则:

  • Chart版本2.x.x对应镜像版本v1.x.x(例:Chart v2.13.0 → 镜像v1.13.0)

2. 镜像配置(可选,默认自动匹配Chart版本)

若需手动指定镜像,使用AWS Public ECR官方地址:

set {
  name  = "image.repository"
  value = "public.ecr.aws/efs-csi-driver/amazon/aws-efs-csi-driver"
}

set {
  name  = "image.tag"
  value = "v1.13.0" # 需与Chart版本对应
}

3. 必备Helm配置项

除已有配置,需确保:

  • controller.serviceAccount.create设为true,并通过eks.amazonaws.com/role-arn注解绑定具备EFS权限的IAM角色
  • 节点端驱动默认开启(node.enabled=true,无需额外配置)
  • EKS 1.23+版本按需开启快照功能(默认关闭)

三、修正后的完整代码示例

resource "helm_release" "test_aws_efs_controller" {
  name       = "aws-efs-csi-driver"
  repository = "https://kubernetes-sigs.github.io/aws-efs-csi-driver/"
  chart      = "aws-efs-csi-driver"
  namespace  = "${var.project_name}-${var.environment_name}-microservices"
  version    = "2.13.0" # 稳定版Chart

  set {
    name  = "clusterName"
    value = var.test_ekscluster_id
  }

  # 可选:手动指定镜像,无需可注释
  set {
    name  = "image.repository"
    value = "public.ecr.aws/efs-csi-driver/amazon/aws-efs-csi-driver"
  }

  set {
    name  = "image.tag"
    value = "v1.13.0"
  }

  set {
    name  = "controller.serviceAccount.create"
    value = true
  }

  set {
    name  = "controller.serviceAccount.annotations.eks\\.amazonaws\\.com/role-arn"
    value = var.aws_efs_controller_role_arn
  }

  set {
    name  = "controller.serviceAccount.name"
    value = "${var.project_name}-${var.environment_name}-efs-controller"
  }

  depends_on = [
    var.test_nodegroup,
    var.aws_efs_controller_role_attach
  ]
}

四、额外注意事项

  • 确保IAM角色关联AmazonEFSCSIDriverPolicy权限策略,或自定义包含EFS相关操作的权限
  • 私有子网环境下,需让节点通过NAT网关访问公网,或配置VPC端点访问ECR和EFS
  • 执行Terraform前,可手动运行helm repo add aws-efs-csi-driver https://kubernetes-sigs.github.io/aws-efs-csi-driver/和helm repo update验证仓库连通性

内容的提问来源于stack exchange,提问作者Kunal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 18:05:01