GOOGLE GKE → STACKIT SKE

Google Kubernetes Engine to STACKIT Kubernetes Engine

GKE moves to STACKIT Kubernetes Engine (SKE), and your workloads are redeployed from their manifests or Helm charts. StackToIT writes the SKE cluster with its node pools, checks the version against SKE, keeps the destroy protection and turns every GKE-specific setting into a named decision.

A regional GKE cluster and node pool, converted

A small estate written for this page and assessed by StackToIT on 4 November 2026. Left: the input. Right: the resource blocks of the STACKIT Terraform the engine wrote; the review comments that sit above each block in the file are left out here.

Example inputmain.tf
resource "google_container_cluster" "platform" {
  name                     = "platform"
  location                 = "europe-west3"
  network                  = google_compute_network.platform.id
  subnetwork               = google_compute_subnetwork.gke.id
  min_master_version       = "1.32"
  remove_default_node_pool = true
  initial_node_count       = 1
  deletion_protection      = true

  release_channel {
    channel = "REGULAR"
  }

  workload_identity_config {
    workload_pool = "shop-platform-prod.svc.id.goog"
  }
}

resource "google_container_node_pool" "general" {
  name     = "general"
  cluster  = google_container_cluster.platform.id
  location = "europe-west3"

  autoscaling {
    min_node_count = 1
    max_node_count = 5
  }

  node_config {
    machine_type    = "e2-standard-8"
    disk_size_gb    = 100
    service_account = google_service_account.nodes.email
    oauth_scopes    = ["https://www.googleapis.com/auth/cloud-platform"]
  }
}
STACKIT Terraform by StackToITterraform/kubernetes.tf
resource "stackit_ske_cluster" "platform" {
  project_id = var.project_id
  name       = "platform"
  node_pools = [{
    name               = "general"
    machine_type       = var.general_machine_type
    minimum            = var.platform_general_minimum
    maximum            = var.platform_general_maximum
    availability_zones = var.availability_zones
  }]
  kubernetes_version_min = "1.36"
  lifecycle {
    prevent_destroy = true
  }
}
  • Per-zone autoscaling made explicit

    GKE counts min_node_count and max_node_count per zone; SKE counts the whole pool. The code copies neither number as if it were the same and asks you for the pool totals in two variables.

  • Version checked against SKE

    The source asks for Kubernetes 1.32. SKE in eu01 supports 1.35 and newer, so the code asks for 1.36 and flags the four minor versions it crosses, so you check removed APIs first.

  • Destroy protection kept

    deletion_protection becomes lifecycle prevent_destroy on the SKE cluster: Terraform refuses to destroy it, as the Google provider refused to delete the protected cluster.

  • Release channel

    SKE has no release channels. Automatic Kubernetes updates are a maintenance setting of the cluster, switched on by default.

The node service account, converted

From the same run. Left: the input. Right: the resource blocks StackToIT wrote; the review comments above each block in the file are left out here.

Example inputmain.tf
resource "google_service_account" "nodes" {
  account_id   = "gke-nodes"
  display_name = "GKE node service account"
}
STACKIT Terraform by StackToITterraform/identity.tf
resource "stackit_service_account" "nodes" {
  project_id = var.project_id
  name       = "gke-nodes"
}
  • A STACKIT service account

    gke-nodes becomes a STACKIT service account of the same name. Its role bindings become STACKIT role assignments on the project or on resources.

  • Node settings named

    An SKE node pool takes no service account or OAuth scopes. The code lists the disk size, the service account and the scopes of the pool as not carried.

  • Machine type from the source size

    The machine type variable records e2-standard-8 at about 8 vCPU and 32 GiB, next to the link to the STACKIT machine types.

What changes around the workloads

  • Workload Identity

    GKE Workload Identity gives way to Workload Identity on SKE: a STACKIT service account with a federated identity provider that trusts the service account issuer of the SKE cluster, created for each Kubernetes service account.

  • Network placement

    An SKE cluster joins a STACKIT Network Area network, or SKE creates a network for the cluster itself. The run asks which one, because it depends on how your STACKIT projects are laid out.

  • Storage and ingress

    Persistent-disk storage classes and GCE ingress are replaced by their SKE counterparts.

How the GKE estate maps

Google Cloud resourceSTACKIT targetMigration class
GKE cluster with its node poolSKE cluster with a node poolReplatform
VPC networkSTACKIT project networking or Network AreaReconfigure
SubnetworkSTACKIT network with the same IPv4 rangeReconfigure
Service account of the nodesSTACKIT service accountReconfigure

Classes as the run decided them. The subnetwork keeps 10.40.0.0/20 as the prefix of its STACKIT network.

Proven on a real AWS estate

The AWS Retail Store Sample App, a public Terraform project from AWS, assessed by StackToIT and published in full, exactly as the run wrote it.

View Case Study
282
Terraform resource declarations analyzed
44
migration units identified
38
target units generated, from 52 considered
331
plan steps written

Questions platform teams ask

Do GKE per-zone node counts carry over to SKE?

Not as the same numbers. GKE autoscaling limits count per zone, SKE minimum and maximum count the whole pool, so StackToIT asks you for the pool totals instead of copying a value that would mean something else.

What replaces GKE Workload Identity?

Workload Identity on SKE: a STACKIT service account with a federated identity provider that trusts the cluster’s service account issuer, one for each Kubernetes service account that calls cloud APIs.

Which Kubernetes version will the SKE cluster run?

The lowest version SKE supports in the region at or above the source version. For a GKE cluster on 1.32 that is 1.36 in eu01, and the code flags the upgrade.

Sources

Your next move: STACKIT.

Tell us about your estate. We show you what StackToIT delivers for it: target architecture, Terraform artifacts and a structured migration plan.