HUAWEI CLOUD → STACKIT · FALLSTUDIE
Ein Huawei-Cloud-Webshop auf STACKIT: Fallstudie einer vollständigen Bewertung
Eine realistische Umgebung, durchgängig bewertet: ein Webshop mit Server, Load Balancer, öffentlicher Adresse, PostgreSQL-Datenbank, Session-Cache, Objektspeicher, Schlüssel, Secret, DNS und einem kleinen Kubernetes-Cluster für Hintergrundjobs. 15 Terraform-Ressourcen wurden zu 14 Einheiten in drei Wellen: 12 RECONFIGURE und 2 REPLATFORM. Diese Fallstudie zeigt jede Kennzahl, die wichtigen Auszüge und die Entscheidungen, die bei Ihren Architekten bleiben.
Die Umgebung und ihr Ergebnis
Am 4. November 2026 von StackToIT bewertet, aus einer Terraform-Datei und einer Variablendatei mit Platzhalterwerten. Jede Zeile ist eine Einheit; die Welle ist die Reihenfolge, in der ihre Abhängigkeiten den Umzug erlauben.
| Huawei-Cloud-Ressource (Welle) | STACKIT-Ziel | Klasse und Konfidenz |
|---|---|---|
| VPC (1) | STACKIT-Netzwerk | RECONFIGURE, MEDIUM |
| Subnetze app und data (2) | STACKIT-Netzwerke mit eigenen Bereichen | RECONFIGURE, MEDIUM |
| Security Group (1) | STACKIT Security Group | RECONFIGURE, LOW |
| ECS-Webserver (3) | STACKIT-Server, Volume und Netzwerkschnittstelle | RECONFIGURE, MEDIUM |
| EIP (1) | STACKIT Public IP | RECONFIGURE, MEDIUM |
| Shared Load Balancer (3) | STACKIT Network Load Balancer | RECONFIGURE, MEDIUM |
| RDS for PostgreSQL (3) | STACKIT PostgreSQL Flex | REPLATFORM, MEDIUM |
| DCS-Redis-Sessions (3) | STACKIT Key Value Store (Valkey) | RECONFIGURE, MEDIUM |
| OBS-Bucket (1) | STACKIT Object Storage | RECONFIGURE, MEDIUM |
| KMS-Schlüssel (1) und CSMS-Secret (2) | STACKIT KMS und Secrets Manager | RECONFIGURE, MEDIUM |
| DNS-Record-Set (1) | Eintrag in einer STACKIT-DNS-Zone | RECONFIGURE, MEDIUM |
| CCE-Cluster (3) | STACKIT Kubernetes Engine (SKE) | REPLATFORM, MEDIUM |
Die Regel der Security Group gehört zur Einheit der Gruppe; deshalb ergeben 15 Ressourcen 14 Einheiten. Nichts ist als REDESIGN, BLOCKED oder MANUAL_REVIEW eingestuft.
Die Kennzahlen des Laufs
15 Ressourcen, 14 Einheiten
Eine Datei gelesen, kein Modul übersehen, 13 Abhängigkeiten zwischen Einheiten. Der Quellstatus ist COMPLETE, weil die Variablendatei die zwei sensiblen Werte lieferte.
12 und 2
12 Einheiten sind RECONFIGURE: Der Dienst existiert bei STACKIT, seine Einstellungen ändern sich. 2 sind REPLATFORM: Datenbank und Kubernetes-Cluster wechseln das Plattformmodell.
13 MEDIUM, 1 LOW
Keine Einheit ist HIGH. Der Provider ist nicht per Lock-Datei festgeschrieben, was der Lauf festhält; die LOW-Einheit ist die Security Group, die unten erklärt wird.
3 Wellen: 6, 3 und 5 Einheiten
Welle 1 enthält, was von nichts abhängt; Welle 2 die Subnetze und das Secret, das den Schlüssel nennt; Welle 3 alles, was im Netzwerk sitzt.
10 Arbeitspakete, 14 manuelle Schritte
Für eine Huawei-Cloud-Quelle schreibt dieser Build keine STACKIT-Ressourcenblöcke. Alle 14 Einheiten sind manuelle Schritte, die eine Person sofort beginnen kann, gruppiert nach Phase und Verantwortlichen.
1 blockierende Frage
Die Zielregion, eu01 oder eu02. Vier weitere Anfragen (STACKIT-Projekt, Observability, öffentlicher Zugang und ausgehender Verkehr) hält dieser Build fest, ohne den Entwurf zu ändern; Sie setzen sie in der Zielumgebung.
Die Web-Ebene: Adresse und Load Balancer
Adresse und Load Balancer sind die zwei Einheiten, deren Ergebnis ändert, was die Außenwelt sieht. Die beiden Eingabe-Fenster zeigen zwei getrennte Ressourcenblöcke aus main.tf, jeweils vollständig.
resource "huaweicloud_vpc_eip" "web" {
publicip {
type = "5_bgp"
}
bandwidth {
share_type = "PER"
name = "shop-web"
size = 20
charge_mode = "traffic"
}
}resource "huaweicloud_lb_loadbalancer" "web" {
name = "shop-lb"
vip_subnet_id = huaweicloud_vpc_subnet.app.ipv4_subnet_id
}{
"id": "huaweicloud_vpc_eip.web",
"result": {
"class": "RECONFIGURE",
"confidence": "MEDIUM",
"target": {
"service": "STACKIT public IP"
},
"reason": "An EIP becomes a STACKIT public IP. The address itself changes, so DNS records and allow lists that name it change too."
}
}
{
"id": "huaweicloud_lb_loadbalancer.web",
"result": {
"class": "RECONFIGURE",
"confidence": "MEDIUM",
"target": {
"service": "STACKIT Network Load Balancer"
},
"reason": "A shared load balancer becomes a STACKIT Network Load Balancer. Listeners and backends are rewritten, and the public address changes."
}
}Die Adresse ändert sich
Eine EIP wird zu einer STACKIT Public IP, und der Lauf hält fest, dass sich die Adresse selbst ändert. DNS-Einträge und Freigabelisten, die die alte nennen, ändern sich mit.
Listener werden neu geschrieben
Ein Shared Load Balancer wird zu einem Network Load Balancer; Listener und Backends werden neu geschrieben, und die öffentliche Adresse wechselt. Planen Sie Zertifikat und Health Check mit ein.
Die Datenebene: Datenbank und Cache
Zwei zustandsbehaftete Einheiten, zwei verschiedene Umzüge. Die Datenbank behält ihre Engine, der Cache wechselt das Produkt.
resource "huaweicloud_rds_instance" "db" {
name = "shop-db"
flavor = "rds.pg.n1.xlarge.2"
vpc_id = huaweicloud_vpc.shop.id
subnet_id = huaweicloud_vpc_subnet.data.id
security_group_id = huaweicloud_networking_secgroup.web.id
availability_zone = ["eu-west-101a"]
db {
type = "PostgreSQL"
version = "15"
}
volume {
type = "CLOUDSSD"
size = 200
}
}
resource "huaweicloud_dcs_instance" "sessions" {
name = "shop-sessions"
engine = "Redis"
engine_version = "6.0"
capacity = 4
flavor = "redis.ha.xu1.large.r2.4"
availability_zones = ["eu-west-101a", "eu-west-101b"]
password = var.redis_password
vpc_id = huaweicloud_vpc.shop.id
subnet_id = huaweicloud_vpc_subnet.data.id
}{
"id": "huaweicloud_rds_instance.db",
"result": {
"class": "REPLATFORM",
"confidence": "MEDIUM",
"target": {
"service": "STACKIT PostgreSQL Flex"
},
"reason": "Managed PostgreSQL to managed PostgreSQL: data moves with pg_dump/pg_restore or logical replication, and the flavor becomes a Flex flavor."
}
}
{
"id": "huaweicloud_dcs_instance.sessions",
"result": {
"class": "RECONFIGURE",
"confidence": "MEDIUM",
"target": {
"service": "STACKIT Key Value Store (Valkey)"
},
"reason": "A DCS instance becomes a Valkey instance. The application changes its endpoint and credentials; check the engine and version in use, since a Memcached instance needs a client change."
}
}PostgreSQL zu PostgreSQL
Der Lauf nennt pg_dump mit pg_restore oder logische Replikation, und der Flavor wird zu einem Flex-Flavor. Die Quelle läuft mit Version 15; laut den Release Notes von STACKIT endet der Support für Version 14 am 12. November 2026; 15 oder höher ist also ein sicherer Ausgangspunkt, den Sie bestätigen.
Der Cache braucht eine eigene Methode
Huawei führt MIGRATE für DCS Redis 6.0 als gesperrt; die von STACKIT für das eigene Redis-Angebot dokumentierte Kopiermethode greift also nicht wie beschrieben. Das Tutorial zu DCS und Valkey auf dieser Website behandelt es.
Daten sind eine Entscheidung, kein Ergebnis
migration/data-movement.md führt drei zustandsbehaftete Einheiten, Cache, Bucket und Datenbank, jeweils mit Mechanismus UNKNOWN und DECISION_REQUIRED.
Die eine LOW-Einheit: eine Security Group
Die Gruppe selbst lässt sich sauber zuordnen. Die Konfidenz sinkt, weil eine verknüpfte Ressource nicht bewertet wird.
resource "huaweicloud_networking_secgroup" "web" {
name = "shop-web"
description = "Web tier"
}
resource "huaweicloud_networking_secgroup_rule" "https" {
security_group_id = huaweicloud_networking_secgroup.web.id
direction = "ingress"
ethertype = "IPv4"
protocol = "tcp"
ports = "443"
remote_ip_prefix = "0.0.0.0/0"
}{
"id": "huaweicloud_networking_secgroup.web",
"result": {
"class": "RECONFIGURE",
"confidence": "LOW",
"reason": "A security group becomes a STACKIT security group. STACKIT rules only allow traffic, so a deny rule or a priority order of the source needs a decision.",
"findings": [
{
"check_id": "uncatalogued-related",
"severity": "warning",
"message": "huaweicloud_networking_secgroup_rule.https (huaweicloud_networking_secgroup_rule) is linked to this unit; the knowledge base catalogues it but has no mapping rule, semantic contract or criticality row for it (catalogued but unmapped), so what it does to this unit is not assessed."
}
]
}
}Katalogisiert, aber nicht zugeordnet
Der Lauf kennt den Regeltyp und hat dafür keine Zuordnung; er sagt deshalb, was die Regel mit der Gruppe macht, werde nicht bewertet. Lesen Sie die Regel selbst: Das Beispiel erlaubt HTTPS von überall.
Deny-Regeln brauchen eine Entscheidung
STACKIT-Regeln erlauben Verkehr nur. Eine Deny-Regel oder Prioritätsreihenfolge in einer echten Quelle braucht eine bewusste Designentscheidung.
Reihenfolge und Verantwortung
Die Wellen aus migration/technical-sequencing.md und die zehn Arbeitspakete aus execution/README.md.
## Wave 1 — 6 unit(s)
| Unit | Class | Target |
|---|---|---|
| `huaweicloud_dns_recordset.www` | RECONFIGURE / MEDIUM | STACKIT DNS |
| `huaweicloud_kms_key.shop` | RECONFIGURE / MEDIUM | STACKIT KMS |
| `huaweicloud_networking_secgroup.web` | RECONFIGURE / LOW | STACKIT security groups |
| `huaweicloud_obs_bucket.media` | RECONFIGURE / MEDIUM | STACKIT Object Storage |
| `huaweicloud_vpc.shop` | RECONFIGURE / MEDIUM | STACKIT network |
| `huaweicloud_vpc_eip.web` | RECONFIGURE / MEDIUM | STACKIT public IP |
## Wave 2 — 3 unit(s)
| Unit | Class | Target |
|---|---|---|
| `huaweicloud_csms_secret.db` | RECONFIGURE / MEDIUM | STACKIT Secrets Manager |
| `huaweicloud_vpc_subnet.app` | RECONFIGURE / MEDIUM | STACKIT network |
| `huaweicloud_vpc_subnet.data` | RECONFIGURE / MEDIUM | STACKIT network |
## Wave 3 — 5 unit(s)
| Unit | Class | Target |
|---|---|---|
| `huaweicloud_cce_cluster.jobs` | REPLATFORM / MEDIUM | STACKIT Kubernetes Engine (SKE) |
| `huaweicloud_compute_instance.web` | RECONFIGURE / MEDIUM | STACKIT Compute Engine |
| `huaweicloud_dcs_instance.sessions` | RECONFIGURE / MEDIUM | STACKIT Key Value Store (Valkey) |
| `huaweicloud_lb_loadbalancer.web` | RECONFIGURE / MEDIUM | STACKIT Network Load Balancer |
| `huaweicloud_rds_instance.db` | REPLATFORM / MEDIUM | STACKIT PostgreSQL Flex || Package | Owner | Phase | Steps | Resources | Decisions to answer | State |
|---|---|---|---|---|---|---|
| [`WP-01`](manual/actions.md) Set up by hand the resources the draft writes nothing for (foundation) | Network Architect | foundation | 3 | 3 | — | a person can start it now |
| [`WP-02`](manual/actions.md) Set up by hand the resources the draft writes nothing for (security) | Network Architect | security | 1 | 1 | — | a person can start it now |
| [`WP-03`](manual/actions.md) Set up by hand the resources the draft writes nothing for (security) | Owner assignment required | security | 2 | 2 | — | a person can start it now |
| [`WP-04`](manual/actions.md) Set up by hand the resources the draft writes nothing for (data services) | Data Architect | data services | 2 | 2 | — | a person can start it now |
| [`WP-05`](manual/actions.md) Set up by hand the resources the draft writes nothing for (data services) | Storage Architect | data services | 1 | 1 | — | a person can start it now |
| [`WP-06`](manual/actions.md) Set up by hand the resources the draft writes nothing for (platform services) | Network Architect | platform services | 1 | 1 | — | a person can start it now |
| [`WP-07`](manual/actions.md) Set up by hand the resources the draft writes nothing for (platform services) | Platform Architect | platform services | 1 | 1 | — | a person can start it now |
| [`WP-08`](manual/actions.md) Set up by hand the resources the draft writes nothing for (workloads) | Network Architect | workloads | 1 | 1 | — | a person can start it now |
| [`WP-09`](manual/actions.md) Set up by hand the resources the draft writes nothing for (workloads) | Platform Architect | workloads | 1 | 1 | — | a person can start it now |
| [`WP-10`](manual/actions.md) Carry out the cutover steps | Network Architect | cutover | 1 | 1 | — | a person can start it now |Ein Paket hat keine Verantwortlichen
WP-03 enthält Schlüssel und Secret und zeigt „Owner assignment required“, weil dieser Build keine verantwortliche Rolle für die Kategorie security kennt. Der Lauf führt das Ausführungspaket als unvollständig, bis jemand benannt ist.
Abhängigkeiten erklären die Wellen
Das Datenbank-Secret wartet auf den Schlüssel, weil es ihn nennt. Alles in Welle 3 wartet auf die Subnetze, die längste Kette der Umgebung.
Die Entscheidungen, die Ihre Architekten treffen
Region und Netzwerkdesign
Beantworten Sie target.region, wählen Sie Adressbereiche für die zwei STACKIT-Netzwerke und entscheiden Sie, ob das Routing eine Network Area braucht.
Datenbankversion und -methode
Wählen Sie die PostgreSQL-Hauptversion bei STACKIT, dann den Umzug: Dump und Restore oder logische Replikation, je nach der Ausfallzeit, die Sie akzeptieren.
Kopiermethode für den Cache
Entscheiden Sie, wie Schlüssel ohne MIGRATE nach Valkey gelangen, und ordnen Sie Zugangsdaten und erlaubte Bereiche zu. Mehrere Datenbanknummern brauchen einen eigenen Plan.
Umgang mit Schlüssel und Secret
Neu verschlüsseln statt exportieren, den Algorithmus gegen STACKITs Liste prüfen und das Secret selbst in Abhängigkeitsreihenfolge schreiben. Das Tutorial zu KMS und CSMS auf dieser Website zeigt den Ablauf im Detail.
Kubernetes-Version
Der CCE-Cluster läuft auf v1.31. Die CCE-Seite dieser Website behandelt die SKE-Versionen, die als Ziel in Frage kommen.
Cutover
Senken Sie die DNS-TTL, liefern Sie die neuen Adressen für den Eintrag, schreiben Sie für jeden manuellen Schritt einen Rollback und vereinbaren Sie das Fenster.
Was dieser Lauf Ihnen nicht sagt
Kein STACKIT-Terraform
Der Entwurfsordner enthält für diese Quelle Provider, Variablen und eine README. Die Zielressourcen sind in der Bewertung benannt, nicht geschrieben.
Keine Datenvolumen
Größen, Änderungsraten und tolerierte Ausfallzeiten stehen nicht im Terraform. Dort steht NOT_PROVIDED, bis Sie sie liefern.
Keine Prüfung bei STACKIT
Gegen ein STACKIT-Projekt wird nichts geplant oder angewendet. Das Paket sagt es selbst.
Kein Blick auf das, was der Code nicht zeigt
Per Konsole angelegte Ressourcen, Anwendungskonfiguration und Daten auf Server-Platten liegen außerhalb des Laufs.
Fragen zu dieser Fallstudie
Ist das eine typische Huawei-Cloud-Umgebung?
Es ist ein bewusst gewöhnlicher Shop: Web, Datenbank, Cache, Speicher, Secrets, DNS und ein Job-Cluster. Die Kennzahlen gehören nur zu dieser Umgebung. Ihr eigener Lauf zählt anders.
Warum ist der Entwurf leer, wenn der Lauf erfolgreich war?
Der Lauf hat alle 14 Einheiten bewertet und sein Paket veröffentlicht. Für eine Huawei-Cloud-Quelle schreibt dieser Build keine STACKIT-Ressourcenblöcke; die Migrationsschritte sind also manuell, und der Terraform-Ordner enthält nur ein Gerüst.
Mit welchen Einheiten würden Sie beginnen?
Mit denen aus Welle 1 und 2, von denen alle anderen abhängen: Netzwerk, Schlüssel und Security Group. Die Sequenzdatei ist ein Ausgangspunkt für Ihren eigenen Zeitplan, kein Plan mit Terminen.
Kann ich das nachvollziehen?
Ja, mit Ihrem eigenen Terraform: Bewertung auf dem Ordner ausführen, dann index.html öffnen und in dieser Reihenfolge assessment.json, migration/technical-sequencing.md und execution/manual/actions.md lesen.
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.