Terraform fails for kubernetes storage class when changing type from gp2 to gp3

1.2k Views Asked by At

I have 2 storage class deployed using terraform(storage and expandable-storage). Below is the code for both.

Before

resource "kubernetes_storage_class" "expandable-storage" {
  metadata {
    name = "expandable-storage"
  }
  storage_provisioner = "kubernetes.io/aws-ebs"
  reclaim_policy      = "Retain"
  parameters = {
    type = "gp2"
    fsType: "ext4"
    encrypted: "true"
  }
  allow_volume_expansion = true
  volume_binding_mode = "Immediate"
}

resource "kubernetes_storage_class" "storage" {
  metadata {
    name = "storage"
  }
  storage_provisioner = "ebs.csi.aws.com"
  reclaim_policy      = "Retain"
  parameters = {
    type = "gp2"
    fsType: "ext4"
    encrypted: "true"
  }
  allow_volume_expansion = true
  volume_binding_mode = "Immediate"
}

resource "null_resource" "k8s_storage_class_patch" {
  depends_on = [kubernetes_storage_class.expandable-storage]
  provisioner "local-exec" {
    command = "/bin/bash scripts/storage_class_patch.sh"
  }
}

After this I tried to update parameter for both storage class from type gp2 to type gp3.

After

resource "kubernetes_storage_class" "expandable-storage" {
  metadata {
    name = "expandable-storage"
  }
  storage_provisioner = "kubernetes.io/aws-ebs"
  reclaim_policy      = "Retain"
  parameters = {
    type = "gp3"
    fsType: "ext4"
    encrypted: "true"
  }
  allow_volume_expansion = true
  volume_binding_mode = "Immediate"
}

resource "kubernetes_storage_class" "storage" {
  metadata {
    name = "storage"
  }
  storage_provisioner = "ebs.csi.aws.com"
  reclaim_policy      = "Retain"
  parameters = {
    type = "gp3"
    fsType: "ext4"
    encrypted: "true"
  }
  allow_volume_expansion = true
  volume_binding_mode = "Immediate"
}

resource "null_resource" "k8s_storage_class_patch" {
  depends_on = [kubernetes_storage_class.expandable-storage]
  provisioner "local-exec" {
    command = "/bin/bash scripts/storage_class_patch.sh"
  }
}

After applying the resource module "storage" updated to gp3 but for "expandable-storage" module I am getting error

Error: storageclasses.storage.k8s.io "expandable-storage" already exists

I am not sure what is causing this as same changes worked for other storage class.

0

There are 0 best solutions below