2022-05-18

Dynamic creation of kubernetes manifest in Terraform

I'm trying to create multiple K8s manifests based on VPC subnets as the following code suggests:

resource "aws_subnet" "pod_subnets" {
  for_each = module.pods_subnet_addrs.network_cidr_blocks
  depends_on = [
    aws_vpc_ipv4_cidr_block_association.pod_cidr
  ]

  vpc_id            = data.terraform_remote_state.vpc.outputs.vpc_id
  availability_zone = each.key
  cidr_block        = each.value

  tags = merge(
    local.common_tags,
    {
      "Name" = format(
        "${var.environment_name}-pods-network-%s",
        each.key)
    } )  
}
resource "kubernetes_manifest" "ENIconfig" {
  for_each = module.pods_subnet_addrs.network_cidr_blocks
  manifest = {
    "apiVersion" = "crd.k8s.amazonaws.com/v1alpha1"
    "kind" = "ENIConfig"
    "metadata" = {
      "name" = each.key
    }
    "spec" = {
      "securityGroups" = [
        aws_security_group.worker_node.id,
      ]
      "subnet" = aws_subnet.pod_subnets[each.key].id
    }        
  }
}

However, when I'm running Terraform I'm getting the following error: Provider "registry.terraform.io/hashicorp/kubernetes" planned an invalid value for kubernetes_manifest.ENIconfig["eu-west-3a"].manifest: planned value cty.ObjectVal(map[string]cty.Value{"apiVersion":cty.StringVal("crd.k8s.amazonaws.com/v1alpha1"), "kind":cty.StringVal("ENIConfig"),"metadata":cty.ObjectVal(map[string]cty.Value{"name":cty.StringVal("eu-west-3a")}), "spec":cty.ObjectVal(map[string]cty.Value{"securityGroups":cty.TupleVal([]cty.Value{cty.StringVal("sg-07e264400925e9a4a")}),"subnet":cty.NullVal(cty.String)})}) does not match config value cty.ObjectVal(map[string]cty.Value{"apiVersion":cty.StringVal("crd.k8s.amazonaws.com/v1alpha1"),"kind":cty.StringVal("ENIConfig"),"metadata":cty.ObjectVal(map[string]cty.Value{"name":cty.StringVal("eu-west-3a")}), "spec":cty.ObjectVal(map[string]cty.Value{"securityGroups":cty.TupleVal([]cty.Value{cty.StringVal("sg-07e264400925e9a4a")}),"subnet":cty.UnknownVal(cty.String)})}).

Any idea what I'm doing wrong here?



No comments:

Post a Comment