AZURE AKS → STACKIT SKE

Azure Kubernetes Service zu STACKIT Kubernetes Engine

AKS zieht auf die STACKIT Kubernetes Engine (SKE) um, und Ihre Workloads ziehen mit ihren Manifesten und Helm-Charts mit. StackToIT schreibt den SKE-Cluster mit allen Node Pools der Quelle, prüft die Version gegen den SKE-Katalog und benennt jede Azure-Integration, die SKE ersetzt.

Ein AKS-Cluster mit zwei Node Pools, umgesetzt

Eine kleine Umgebung, für diese Seite geschrieben und am 4. November 2026 von StackToIT bewertet. Links die Eingabe, rechts die Ressourcenblöcke des STACKIT-Terraforms, das die Engine geschrieben hat; die Prüfkommentare über jedem Block in der Datei sind hier ausgelassen.

Beispieleingabemain.tf
resource "azurerm_kubernetes_cluster" "platform" {
  name                = "aks-platform"
  location            = azurerm_resource_group.platform.location
  resource_group_name = azurerm_resource_group.platform.name
  dns_prefix          = "platform"
  kubernetes_version  = "1.31"

  default_node_pool {
    name                 = "system"
    vm_size              = "Standard_D4s_v5"
    vnet_subnet_id       = azurerm_subnet.nodes.id
    auto_scaling_enabled = true
    min_count            = 2
    max_count            = 4
  }

  identity {
    type = "SystemAssigned"
  }

  network_profile {
    network_plugin = "azure"
  }
}

resource "azurerm_kubernetes_cluster_node_pool" "workloads" {
  name                  = "workloads"
  kubernetes_cluster_id = azurerm_kubernetes_cluster.platform.id
  vm_size               = "Standard_E8s_v5"
  vnet_subnet_id        = azurerm_subnet.nodes.id
  auto_scaling_enabled  = true
  min_count             = 3
  max_count             = 9
}
STACKIT-Terraform von StackToITterraform/kubernetes.tf
resource "stackit_ske_cluster" "platform" {
  project_id = var.project_id
  name       = "aks-2a0320"
  node_pools = [{
    name               = "system"
    machine_type       = var.azurerm_kubernetes_cluster_platform_default_node_pool_machine_type
    minimum            = 2
    maximum            = 4
    availability_zones = var.availability_zones
    }, {
    name               = "workloads"
    machine_type       = var.workloads_machine_type
    minimum            = 3
    maximum            = 9
    availability_zones = var.availability_zones
  }]
  kubernetes_version_min = "1.36"
}
  • Alle Node Pools in einem SKE-Cluster

    Der Default Node Pool und der separate azurerm_kubernetes_cluster_node_pool werden zwei Node Pools desselben SKE-Clusters. min_count und max_count werden als Minimum und Maximum übernommen: 2 bis 4 und 3 bis 9.

  • Maschinentypen mit der Quellgröße daneben

    Jeder Pool erhält eine eigene Variable für den Maschinentyp. Ihre Beschreibung hält die Azure-Größe fest, rund 4 vCPU und 16 GiB für Standard_D4s_v5 und rund 8 vCPU und 64 GiB für Standard_E8s_v5, und verweist auf die STACKIT-Maschinentypen.

  • Version gegen SKE geprüft

    Die Quelle läuft auf Kubernetes 1.31. SKE unterstützt in eu01 1.35 und neuer; der Code fordert daher 1.36 an, die niedrigste unterstützte Version auf oder über der Quelle, und weist auf die fünf übersprungenen Minor-Versionen hin, damit Sie entfernte APIs vorher prüfen.

  • Clustername passend für SKE

    Ein SKE-Clustername hat 1 bis 11 Zeichen. aks-platform hat 12; der Code nennt den Cluster daher aks-2a0320 und bittet Sie, den gewünschten Namen zu setzen.

Aus dem Node-Subnetz wird ein STACKIT-Netzwerk

Aus demselben Lauf. Links die Eingabe, rechts die Ressourcenblöcke, die StackToIT geschrieben hat; die Prüfkommentare über jedem Block in der Datei sind hier ausgelassen.

Beispieleingabemain.tf
resource "azurerm_subnet" "nodes" {
  name                 = "snet-aks-nodes"
  resource_group_name  = azurerm_resource_group.platform.name
  virtual_network_name = azurerm_virtual_network.platform.name
  address_prefixes     = ["10.10.0.0/20"]
}
STACKIT-Terraform von StackToITterraform/network.tf
resource "stackit_network" "nodes" {
  project_id       = var.project_id
  name             = "snet-aks-nodes"
  ipv4_prefix      = "10.10.0.0/20"
  ipv4_nameservers = var.default_ipv4_nameservers
}
  • Dasselbe IPv4-Präfix

    snet-aks-nodes behält 10.10.0.0/20 als Präfix seines STACKIT-Netzwerks; der Adressplan bleibt also, wie er ist.

  • Kein VNet-Objekt nötig

    STACKIT kennt keinen VNet-Container. Jedes Subnetz wird ein Netzwerk in einem Projekt, und Netzwerke, die sich privat erreichen müssen, kommen in eine Network Area.

  • DNS benannt

    Die Quelle nutzt den von Azure bereitgestellten Resolver, der auch private DNS-Zonen beantwortet. Das Netzwerk liest seine Nameserver aus einer Variablen, und der Code vermerkt, dass private Namen einen eigenen DNS-Server brauchen.

So wird die AKS-Umgebung zugeordnet

Azure-RessourceSTACKIT-ZielMigrationsklasse
AKS-Cluster mit Default Node PoolSKE-Cluster mit Node PoolReplatforming
Zusätzlicher AKS Node PoolZweiter Node Pool desselben SKE-ClustersREPLATFORM, als Teil des Clusters
Virtuelles NetzwerkSTACKIT-Projektnetzwerk oder Network AreaRekonfigurieren
SubnetzSTACKIT-Netzwerk mit demselben IPv4-PräfixRekonfigurieren

Klassen so, wie der Lauf sie entschieden hat. Die Ressourcengruppe ist keine eigene Einheit: STACKIT kennt keine Ressourcengruppen; aus der Aufteilung in Ressourcengruppen und Subscriptions wird daher Ihre Ordner- und Projektstruktur.

Was der Code für Ihre Architekten benennt

  • Cluster-Identität

    Die systemzugewiesene Identität des Clusters hat an einem SKE-Cluster kein Gegenstück. Der Lauf hält sie als Entscheidung für den Identity-Architekten fest.

  • Adresse des API-Servers

    dns_prefix hat in SKE kein Gegenstück; die Adresse des API-Servers ändert sich also. Der Code weist darauf hin, Kubeconfigs und Clients anzupassen.

  • Cluster-Netzwerk

    Azure CNI weicht dem Netzwerk, das SKE selbst betreibt. Netzwerk-Plugin sowie Pod- und Service-Bereiche werden nicht übernommen, und der Code sagt das.

  • Speicher und Ingress

    Storage Classes für Azure Disk und Azure Files werden SKE-Storage-Classes; Persistent Volumes ziehen dabei mit einem Backup-Werkzeug wie Velero um. Ingress über Application Gateway wird mit einem Ingress Controller auf SKE neu aufgebaut.

Bewiesen an einer echten AWS-Umgebung

Die AWS Retail Store Sample App, ein öffentliches Terraform-Projekt von AWS, von StackToIT bewertet und vollständig veröffentlicht, genau so, wie der Lauf es geschrieben hat.

Fallstudie ansehen (Englisch)
282
Terraform-Ressourcendefinitionen analysiert
44
Migrationseinheiten identifiziert
38
Zieleinheiten erzeugt, von 52 betrachteten
331
Planschritte erstellt

Fragen aus Plattformteams

Können mehrere AKS Node Pools in einen SKE-Cluster ziehen?

Ja. StackToIT liest den Default Node Pool und jeden zusätzlichen Node Pool des Clusters und schreibt sie als Node Pools eines SKE-Clusters, jeden mit eigenem Minimum, Maximum und Maschinentyp.

Welche Kubernetes-Version läuft auf dem SKE-Cluster?

Die niedrigste Version, die SKE in der Region auf oder über der Quellversion unterstützt. Für einen AKS-Cluster auf 1.31 ist das in eu01 die 1.36, und der Code weist auf das Upgrade hin, damit Sie entfernte APIs vor dem Umzug prüfen.

Was passiert mit Managed Identities und Azure CNI?

Beides wird nicht als solches übernommen. Die Cluster-Identität wird eine Entscheidung für Ihren Identity-Architekten, und SKE betreibt sein eigenes Cluster-Netzwerk; Pod- und Service-Bereiche werden auf STACKIT also neu gesetzt.

Quellen

Ihr nächster Schritt: STACKIT.

Erzählen Sie uns von Ihrer Umgebung. Wir zeigen Ihnen, was StackToIT dafür liefert: Zielarchitektur, Terraform-Artefakte und einen strukturierten Migrationsplan.