GOOGLE CLOUD → STACKIT · CHECKLISTE

Checkliste für die Migration von Google Cloud zu STACKIT

Vierundzwanzig Prüfpunkte in sechs Phasen, jeder an die Datei geknüpft, die die Antwort enthält. Sie stammen aus einem StackToIT-Lauf über eine Google-Cloud-Umgebung mit neun Einheiten (eine VM, ein Netzwerk, eine Cloud-SQL-Instanz, ein Bucket, ein Topic, ein Secret, eine DNS-Zone und ein Service Account). Ihre Umgebung hat mehr Einheiten, aber die Dateien und die Fragen sind dieselben.

Die Demo-Umgebung und die Entscheidungen des Laufs

Google-Cloud-RessourceSTACKIT-ZielKlasse
VPC-NetzwerkProjektnetzwerk oder Network AreaRekonfigurieren
Subnetzstackit_network, gleiches IPv4-PräfixRekonfigurieren
Compute-Engine-Instanzstackit_server mit NetzwerkschnittstelleRekonfigurieren
Cloud-Storage-Bucketstackit_objectstorage_bucketRekonfigurieren
Cloud SQL für PostgreSQLstackit_postgresflex_instanceReplatforming
Pub/Sub-Topic und -SubscriptionEine RabbitMQ-Instanz für alle TopicsReplatforming
Secret-Manager-SecretEine Secrets-Manager-InstanzRekonfigurieren
Cloud-DNS-Zonestackit_dns_zoneDirekt
Service Accountstackit_service_accountRekonfigurieren

Aus zehn Ressourcen wurden neun Einheiten: Die Subscription geht in ihrem Topic auf. Die Konfidenz ist bei jeder Einheit MEDIUM, weil die Quelle google 8.4.0 ohne Lock-Datei deklariert. Der Lauf entstand am 4. November 2026.

1. Bestandsaufnahme

  • Das Scan-Ergebnis ist vollständig

    Öffnen Sie assessment.json und lesen Sie summary.source_status und source_validation. COMPLETE mit bestandenen eingebauten Prüfungen heißt: Alle Dateien wurden gelesen. Ein fehlendes Modul oder eine unlesbare Datei zeigt sich hier, nicht erst später.

  • Die Provider-Version ist festgelegt

    Committen Sie .terraform.lock.hcl und starten Sie erneut. Ohne festgelegten Provider kommt keine Einheit über die Konfidenz MEDIUM hinaus; der Demo-Lauf vermerkt das für alle neun.

  • Was Terraform nicht kennt, ist aufgeführt

    In der Konsole angelegte Ressourcen, Organisationsrichtlinien und anderswo verwaltete gemeinsame Netzwerke stehen nicht im Scan. migration/technical-sequencing.md sagt ausdrücklich, dass Namen, Adressen oder Zertifikate außerhalb der gescannten Quelle nicht erfasst werden. Halten Sie fest, wer für welche Lücke zuständig ist.

  • Zustandsbehaftete Einheiten sind benannt

    migration/data-movement.md führt sie auf: zwei in der Demo, die Datenbank und den Bucket, beide mit unbekanntem Verfahren.

2. Design

  • Die Zielregion ist beantwortet

    inputs-template.yaml enthält eine Anfrage, die den Entwurf blockiert: target.region. Beantworten Sie sie zuerst, denn regionsabhängige Anfragen werden für die gewählte Region neu gestellt.

  • Jede Klasse ist geprüft

    engineering/architect-report.md enthält die Prüfwarteschlange. In der Demo: ein DIRECT, sechs RECONFIGURE, zwei REPLATFORM, kein REDESIGN oder BLOCKED. Alles mit REDESIGN braucht eine eigene Designseite, kein Ticket.

  • Kritische Einstellungen haben eine verantwortliche Rolle

    decisions.json gruppiert sie: in der Demo sechs Einheiten und fünfzehn kritische Einstellungen. Weisen Sie jede einer Rolle zu; execution/manual/actions.md schlägt bereits Verantwortliche vor.

  • Die Landing Zone steht

    migration/landing-zone-requirements.md nennt, was Organisation und Projekt vor dem ersten Anwenden bereitstellen müssen, und führt die Werte auf, die Sie liefern. Legen Sie das Projekt zuerst an.

Beleg: eine Cloud-SQL-Instanz, geprüft

Aus demselben Lauf. Links die Instanz, wie die Eingabe sie deklariert. Rechts der PostgreSQL-Flex-Block, den die Engine geschrieben hat; die Prüfkommentare darüber sind hier weggelassen. Die Prüfpunkte der Datenphase unten gehen von diesem Block aus.

Beispieleingabemain.tf
resource "google_sql_database_instance" "core" {
  name             = "core-pg"
  region           = "europe-west3"
  database_version = "POSTGRES_15"

  settings {
    tier    = "db-custom-2-7680"
    disk_size = 100
  }
}
STACKIT-Terraform von StackToITterraform/data.tf
resource "stackit_postgresflex_instance" "core" {
  project_id = var.project_id
  name       = "core-pg"
  version    = "15"
  flavor_id  = "2.16"
  storage = {
    class = var.postgresflex_storage_class
    size  = 100
  }
  backup_schedule = "0 2 * * *"
  network = {
    acl = var.core_allowed_cidrs
  }
  retention_days = 32
}
  • Flavor aus dem Katalog

    2.16 ist der kleinste Single-Node-Flavor, der die Quellstufe mit 2 vCPU und 7,5 GiB abdeckt.

  • Zugriffsliste statt Netzwerk

    Die Quelle nennt keine autorisierten Netzwerke; die STACKIT-Instanz wird über core_allowed_cidrs erreicht, das keinen Standardwert hat und das Sie mit den Präfixen der Clients füllen.

  • Aufbewahrung ist eine Untergrenze, keine Kopie

    Die Aufbewahrung der Quelle ist statisch nicht sichtbar, daher setzt der Entwurf 32 Tage an, das Minimum bei STACKIT.

3. Aufbau

  • Jede Variable ohne Standardwert hat einen Wert

    In der Demo: project_id, batch_image_id, batch_machine_type, batch_boot_volume_size_gb, core_allowed_cidrs, postgresflex_storage_class und drei RabbitMQ-Werte (Plan, Version, zugelassene CIDRs). terraform/variables.tf beschreibt jede.

  • NOT-CARRIED-Zeilen sind gelesen

    Die Demo zeigt 26 geprüfte Quelleigenschaften, 20 übernommen oder erklärt, 6 als NOT CARRIED benannt und keine ungeklärt. Suchen Sie in terraform/ danach und entscheiden Sie jede, etwa den Anzeigenamen des Service Accounts.

  • Maschinentypen werden nach Last gewählt

    Der Entwurf überlässt den Flavor der Variable batch_machine_type. Die Allzweckfamilie von STACKIT kombiniert 4 vCPU mit 16 GB (g2i.4); wählen Sie nach gemessener Nutzung.

  • Secrets werden von Hand neu angelegt

    Der Lauf entwirft eine Secrets-Manager-Instanz, nicht das Secret. Legen Sie den Schlüssel darin an, übernehmen Sie den Wert aus Ihrem bisherigen Secret-Speicher und gewähren Sie dem Service Account Zugriff.

4. Daten

  • Je zustandsbehafteter Einheit ist ein Verfahren gewählt

    Nennen Sie Größe, Änderungsrate, tolerierte Ausfallzeit und Wiederherstellungspunkt für Datenbank und Bucket. Der Lauf führt Datenklasse, Wiederherstellungspunkt und Ausfallzeit als nicht angegeben und die Größe als nicht in der Quelle; ohne sie ist kein Plan tragfähig.

  • Backup und Restore der Datenbank sind getestet

    Der Entwurf plant täglich um 02:00 ein Backup. Backups bleiben 32 bis 90 Tage, und eine Point-in-Time-Wiederherstellung erzeugt eine geklonte Instanz. Üben Sie vor dem Cutover eine Wiederherstellung.

  • Bucket-Versionen sind entschieden

    Der Bucket hat Versionierung, und der Lauf markiert das. Entscheiden Sie, ob alte Objektversionen mitziehen oder zurückbleiben, und nutzen Sie für das Kopieren ein S3-kompatibles Werkzeug wie rclone.

  • Messaging-Clients sind eingeplant

    Pub/Sub-Publisher und -Subscriber wechseln auf AMQP. Der Entwurf legt nur die RabbitMQ-Instanz an; Exchanges und Queues entstehen von Hand.

5. Cutover

  • Die Wellen passen zu Ihren Abhängigkeiten

    migration/technical-sequencing.md ordnet die Demo in drei Wellen: sieben Einheiten, dann das Subnetz, dann die Instanz. Das ist ein Ausgangspunkt, kein Zeitplan.

  • Namen und Adressen außerhalb des Scans sind aufgeführt

    Der Lauf nennt keine Cutover-Fakten für DNS oder Zertifikate und ergänzt, dass das nicht heißt, es gäbe keine. Führen Sie jeden Namen auf, der auf die Umgebung zeigt.

  • Der Rollback ist dokumentiert

    Jeder manuelle Schritt in execution/manual/actions.md sagt, dass der Plan nicht weiß, wie er rückgängig zu machen ist. Wer den Schritt ausführt, dokumentiert, wie er zurückgenommen wird.

  • Egress und DNS-Auflösung sind belegt

    network.tf markiert den privaten Egress des Subnetzes als unbewiesen und vermerkt, dass Googles Resolver interne Namen beantwortet, die die Standard-Nameserver von STACKIT nicht auflösen.

6. Nachbereitung

  • Die Prüfungen sind abgehakt

    execution/verify/checks.md führt vor und nach jedem Schritt eine Prüfung auf, etwa ob eine Variable einen Wert hat und ob eine Ressource im State existiert.

  • Die Bewertung läuft erneut

    Nachdem Sie Variablen geändert oder Anfragen beantwortet haben, starten Sie die Bewertung erneut mit demselben Ausgabeordner: Der Entwurf wird neu erzeugt, der frühere Lauf wandert in einen Unterordner previous-<run id> (oder wird mit --replace entfernt), sodass Sie beide vergleichen können.

  • Zugriffe sind überprüft

    Rollen weist ein Mensch dem neuen Service Account zu. Google rät in Produktion von Basisrollen ab; geben Sie dem Konto nur das Nötigste.

  • Die Quelle wird nach einer ruhigen Phase stillgelegt

    Löschen Sie Ressourcen, Schlüssel und Service Accounts in Google Cloud erst, wenn sie über einen vereinbarten Zeitraum niemand aufgerufen hat, und bewahren Sie einen Export auf.

Fragen von Teams zur Checkliste

Kann ich die Checkliste ohne StackToIT nutzen?

Die Phasen und Fragen gelten für jeden Umzug von Google Cloud zu STACKIT. Die Dateiverweise beziehen sich auf einen StackToIT-Lauf; ohne einen lesen Sie sie als Liste der Antworten, die Sie aufgeschrieben haben müssen.

Wie viele Einheiten hat meine Umgebung?

Die Demo hat zehn Ressourcen und neun Einheiten. Echte Umgebungen sind größer, und Module, Schleifen und count erzeugen weitere Instanzen. Die Bewertung zählt Ressourcen, Einheiten und Instanzen in ihrer Zusammenfassung getrennt.

Welche Punkte blockieren alles andere?

Die Zielregion, die Variablen ohne Standardwert und die offenen kritischen Einstellungen. Der Demo-Lauf meldet keinen seiner automatisierten Schritte als lauffähig, bevor diese geklärt sind.

Wo passen GKE, Cloud Run und BigQuery hinein?

Sie sind nicht Teil dieser Demo. Kubernetes und Cloud Run haben eigene Seiten in diesem Leitfaden, und BigQuery ist ein Redesign, das vor jeder Checkliste eine Architekturentscheidung braucht.

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.