Skip to content

Provider Crash: SKE resource crashes when gatewayApi is not defined #1671

Description

@codello

Description

When applying our Terraform configuration, I receive the following error:

│ Error: Plugin did not respond
│
│ The plugin encountered an error, and failed to respond to the plugin6.(*GRPCProvider).ReadResource call. The plugin logs may contain more details.

I have traced this error to the stackit_ske_cluster resource.

Steps to reproduce

resource "stackit_network" "repro" {
  project_id       = "<PROJECT-ID>"
  name             = "repro-crash-net"
  routed           = true
  ipv4_prefix      = "10.0.2.0/24"
  ipv4_nameservers = ["9.9.9.9", "8.8.8.8"]
}

resource "stackit_ske_cluster" "repro" {
  project_id = "<PROJECT-ID>"
  name       = "ais-crash"

  kubernetes_version_min = "1.35.6"

  network = {
    id = stackit_network.repro.network_id
  }

  node_pools = [
    {
      name               = "default"
      machine_type       = "g1a.4d"
      minimum            = 1
      maximum            = 1
      availability_zones = ["eu01-1"]
    }
  ]

  extensions = {
    dns = {
      enabled = true
      zones   = []
    }
  }
}
  1. Run terraform init
  2. Run terraform apply
  3. Run terraform plan

However: Applying this cluster doesn't seem to reproduce the issue. The API response includes extensions.dns.gatewayApi: false in this case, which is not the case for my pre-existing cluster.

Actual behavior

Error message (repeated multiple times):

│ Error: Plugin did not respond
│
│ The plugin encountered an error, and failed to respond to the plugin6.(*GRPCProvider).ReadResource call. The plugin logs may contain more details.

With debug logs I get a stack trace:

2026-08-07T14:48:38.666+0200 [ERROR] provider.terraform-provider-stackit_v0.110.0: panic: runtime error: invalid memory address or nil pointer dereference
2026-08-07T14:48:38.666+0200 [ERROR] provider.terraform-provider-stackit_v0.110.0: [signal SIGSEGV: segmentation violation code=0x2 addr=0x0 pc=0x105de1dc0]
2026-08-07T14:48:38.666+0200 [ERROR] provider.terraform-provider-stackit_v0.110.0
2026-08-07T14:48:38.666+0200 [ERROR] provider.terraform-provider-stackit_v0.110.0: goroutine 261 [running]:
2026-08-07T14:48:38.666+0200 [ERROR] provider.terraform-provider-stackit_v0.110.0: github.com/stackitcloud/terraform-provider-stackit/stackit/internal/services/ske/cluster.mapExtensions({0x107856f78, 0x3f485b5d7290}, 0x3f485b908780, 0x3f485b4d23c0)
2026-08-07T14:48:38.666+0200 [ERROR] provider.terraform-provider-stackit_v0.110.0: 	github.com/stackitcloud/terraform-provider-stackit/stackit/internal/services/ske/cluster/resource.go:2164 +0xec0
2026-08-07T14:48:38.666+0200 [ERROR] provider.terraform-provider-stackit_v0.110.0: github.com/stackitcloud/terraform-provider-stackit/stackit/internal/services/ske/cluster.mapFields({0x107856f78, 0x3f485b5d7290}, 0x3f485b908780, 0x3f485b4d23c0, {0x3f485b916490, 0x4})
2026-08-07T14:48:38.666+0200 [ERROR] provider.terraform-provider-stackit_v0.110.0: 	github.com/stackitcloud/terraform-provider-stackit/stackit/internal/services/ske/cluster/resource.go:1683 +0x814
2026-08-07T14:48:38.666+0200 [ERROR] provider.terraform-provider-stackit_v0.110.0: github.com/stackitcloud/terraform-provider-stackit/stackit/internal/services/ske/cluster.(*clusterResource).Read(0x3f485b034608, {0x107856f78, 0x3f485b5fec30}, {{{{0x10785ffd0, 0x3f485bb601e0}, {0x10752a820, 0x3f485b9201e0}}, {0x10786cf58, 0x3f485b785590}}, 0x0, ...}, ...)
2026-08-07T14:48:38.666+0200 [ERROR] provider.terraform-provider-stackit_v0.110.0: 	github.com/stackitcloud/terraform-provider-stackit/stackit/internal/services/ske/cluster/resource.go:2444 +0x3f0
2026-08-07T14:48:38.666+0200 [ERROR] provider.terraform-provider-stackit_v0.110.0: github.com/hashicorp/terraform-plugin-framework/internal/fwserver.(*Server).ReadResource(0x3f485af6c388, {0x107856f78, 0x3f485b5fec30}, 0x3f485b478e60, 0x3f485b4df5f0)
2026-08-07T14:48:38.666+0200 [ERROR] provider.terraform-provider-stackit_v0.110.0: 	github.com/hashicorp/terraform-plugin-framework@v1.19.0/internal/fwserver/server_readresource.go:156 +0x888
2026-08-07T14:48:38.666+0200 [ERROR] provider.terraform-provider-stackit_v0.110.0: github.com/hashicorp/terraform-plugin-framework/internal/proto6server.(*Server).ReadResource(0x3f485af6c388, {0x107856f78?, 0x3f485b5feb40?}, 0x3f485b478dc0)
2026-08-07T14:48:38.666+0200 [ERROR] provider.terraform-provider-stackit_v0.110.0: 	github.com/hashicorp/terraform-plugin-framework@v1.19.0/internal/proto6server/server_readresource.go:71 +0x3fc
2026-08-07T14:48:38.666+0200 [ERROR] provider.terraform-provider-stackit_v0.110.0: github.com/hashicorp/terraform-plugin-go/tfprotov6/tf6server.(*server).ReadResource(0x3f485b0305a0, {0x107856f78?, 0x3f485b92db90?}, 0x3f485afec0e0)
2026-08-07T14:48:38.666+0200 [ERROR] provider.terraform-provider-stackit_v0.110.0: 	github.com/hashicorp/terraform-plugin-go@v0.31.0/tfprotov6/tf6server/server.go:864 +0x1f8
2026-08-07T14:48:38.666+0200 [ERROR] provider.terraform-provider-stackit_v0.110.0: github.com/hashicorp/terraform-plugin-go/tfprotov6/internal/tfplugin6._Provider_ReadResource_Handler({0x10780c220, 0x3f485b0305a0}, {0x107856f78, 0x3f485b92db90}, 0x3f485b1be180, 0x0)
2026-08-07T14:48:38.666+0200 [ERROR] provider.terraform-provider-stackit_v0.110.0: 	github.com/hashicorp/terraform-plugin-go@v0.31.0/tfprotov6/internal/tfplugin6/tfplugin6_grpc.pb.go:925 +0x1b8
2026-08-07T14:48:38.666+0200 [ERROR] provider.terraform-provider-stackit_v0.110.0: google.golang.org/grpc.(*Server).processUnaryRPC(0x3f485b0fa248, {0x107856f78, 0x3f485b92db00}, 0x3f485af544e0, 0x3f485b0fd4a0, 0x107950ad8, 0x0)
2026-08-07T14:48:38.666+0200 [ERROR] provider.terraform-provider-stackit_v0.110.0: 	google.golang.org/grpc@v1.82.1/server.go:1443 +0xc90
2026-08-07T14:48:38.666+0200 [ERROR] provider.terraform-provider-stackit_v0.110.0: google.golang.org/grpc.(*Server).handleStream(0x3f485b0fa248, {0x1078578f8, 0x3f485ae22000}, 0x3f485af544e0)
2026-08-07T14:48:38.666+0200 [ERROR] provider.terraform-provider-stackit_v0.110.0: 	google.golang.org/grpc@v1.82.1/server.go:1858 +0x7a4
2026-08-07T14:48:38.666+0200 [ERROR] provider.terraform-provider-stackit_v0.110.0: google.golang.org/grpc.(*Server).serveStreams.func2.1()
2026-08-07T14:48:38.666+0200 [ERROR] provider.terraform-provider-stackit_v0.110.0: 	google.golang.org/grpc@v1.82.1/server.go:1078 +0x70
2026-08-07T14:48:38.666+0200 [ERROR] provider.terraform-provider-stackit_v0.110.0: created by google.golang.org/grpc.(*Server).serveStreams.func2 in goroutine 51
2026-08-07T14:48:38.666+0200 [ERROR] provider.terraform-provider-stackit_v0.110.0: 	google.golang.org/grpc@v1.82.1/server.go:1089 +0x120

Expected behavior

I expect the plan to succeed without errors.

Environment

  • OS: macOS 26.5.2
  • Terraform version (see terraform --version): OpenTofu v1.12.5
  • Version of the STACKIT Terraform provider: v1.110.0

Additional information

The error specifically points to the following line:

gatewayApi := types.BoolValue(*cl.Extensions.Dns.GatewayApi)

The provider seems to assume that extensions.dns.gatewayApi exists in the API response for the SKE cluster. This is not the case for me:

stackit ske cluster describe -o yaml ais-dev
# ...
extensions:
  # ...
  dns:
    enabled: true
    zones:
    - ais-dev.stackit.run

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions