如何使用Terraform修改EKS集群默认StorageClass?
使用Terraform修改EKS默认StorageClass配置
操作步骤说明
1. 定义/修改StorageClass资源
根据原gp2存储类是否由Terraform管理,分两种情况处理:
情况一:原gp2存储类由Terraform管理
直接修改现有kubernetes_storage_class资源配置,同时创建新的gp3存储类并设为默认:
# 更新原gp2存储类,取消其默认标记 resource "kubernetes_storage_class" "gp2" { metadata { name = "gp2" annotations = { "storageclass.kubernetes.io/is-default-class" = "false" } } provisioner "kubernetes.io/aws-ebs" { allow_volume_expansion = false parameters = { encrypted = "false" fsType = "ext4" type = "gp2" } } } # 创建gp3存储类,设置为默认并配置所需参数 resource "kubernetes_storage_class" "gp3" { metadata { name = "gp3" annotations = { "storageclass.kubernetes.io/is-default-class" = "true" } } provisioner "kubernetes.io/aws-ebs" { allow_volume_expansion = true parameters = { encrypted = "true" fsType = "ext4" type = "gp3" } } }
情况二:原gp2存储类是EKS默认生成(未通过Terraform管理)
使用kubernetes_metadata资源修改原gp2的默认标记,同时创建gp3默认存储类:
# 修改EKS默认gp2存储类,取消其默认状态 resource "kubernetes_metadata" "gp2_sc" { kind = "StorageClass" name = "gp2" annotations = { "storageclass.kubernetes.io/is-default-class" = "false" } } # 创建gp3默认存储类 resource "kubernetes_storage_class" "gp3" { metadata { name = "gp3" annotations = { "storageclass.kubernetes.io/is-default-class" = "true" } } provisioner "kubernetes.io/aws-ebs" { allow_volume_expansion = true parameters = { encrypted = "true" fsType = "ext4" type = "gp3" } } }
2. 应用Terraform变更
执行以下命令完成配置更新:
terraform init terraform plan terraform apply
关键配置说明
allow_volume_expansion = true:开启PVC动态扩容功能parameters.type = "gp3":切换到GP3类型的EBS卷parameters.encrypted = "true":启用EBS卷加密storageclass.kubernetes.io/is-default-class注解:标记存储类是否为集群默认,true表示默认,false取消默认
内容的提问来源于stack exchange,提问作者ofirule
相关产品推荐
相关产品推荐

