HUAWEI CLOUD → STACKIT · SERVICE MAPPING

Huawei Cloud services mapped to STACKIT, from an assessed estate

Most Huawei Cloud services have a STACKIT counterpart, and the useful question is how much work each one is. This page maps 12 Huawei Cloud services to their STACKIT targets from one run: a 13-resource demo shop estate that StackToIT assessed on 4 November 2026. Nine resources are RECONFIGURE, three REPLATFORM, one CONTAINERIZE, and every class comes with the reason the run wrote down.

The service map, as the run classified it

Huawei Cloud resourceSTACKIT targetClass
ECS instance (huaweicloud_compute_instance)STACKIT Compute Engine: server, volumes, network interfacesReconfigure
EVS volumeSTACKIT Block Storage volumeReconfigure
VPC and subnetSTACKIT network, with a Network Area where routing is neededReconfigure
Security groupSTACKIT security group and rulesReconfigure
OBS bucketSTACKIT Object Storage bucket with an S3 APIReconfigure
DCS instance (Redis)STACKIT Key Value Store (Valkey)Reconfigure
KMS keySTACKIT KMS key ring and keyReconfigure
DNS record setRecord in a STACKIT DNS zoneReconfigure
CCE clusterSTACKIT Kubernetes Engine (SKE)Replatform
RDS for PostgreSQLSTACKIT PostgreSQL FlexReplatform
DMS for RabbitMQSTACKIT RabbitMQReplatform
FunctionGraph functionSKE workload or Cloud Foundry Docker appContainerize

Every unit is MEDIUM confidence. The estate has 13 resources and 13 units: the VPC and the subnet share one row here but are two units. Targets and classes are those the run wrote to assessment.json.

One row in detail: RDS for PostgreSQL

Left: the database as declared in the demo input. Right: the run's result for it, an excerpt of assessment.json with the values exactly as written.

Example inputmain.tf
resource "huaweicloud_rds_instance" "orders" {
  name                = "shop-orders"
  flavor              = "rds.pg.n1.large.2"
  vpc_id              = huaweicloud_vpc.core.id
  subnet_id           = huaweicloud_vpc_subnet.apps.id
  security_group_id   = huaweicloud_networking_secgroup.apps.id
  availability_zone   = ["eu-west-101a"]

  db {
    type     = "PostgreSQL"
    version  = "15"
    password = var.db_password
  }

  volume {
    type = "CLOUDSSD"
    size = 100
  }
}
StackToIT assessmentassessment.json
{
  "id": "huaweicloud_rds_instance.orders",
  "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."
  }
}
  • Managed to managed

    The run reads a Huawei PostgreSQL service and proposes PostgreSQL Flex. Data moves with pg_dump and pg_restore or logical replication, and the flavor becomes a Flex flavor.

  • The password is a gap, on purpose

    The demo passes the password through a variable without a default. The run reports the variable as a request that blocks the draft instead of inventing a value.

  • Class is not effort

    REPLATFORM says the component moves to a different platform model. How long the data copy takes depends on size and tolerated downtime, which the source does not state.

Where the same name hides a different behaviour

Each point below is a reason text from the run, with the STACKIT side checked against the public STACKIT documentation.

  • Disks: the type does not carry over

    An EVS disk type such as SSD has no STACKIT twin. You choose a STACKIT performance class and move the data at host level or with the server image.

  • Security groups: allow only

    STACKIT rules only allow traffic and are evaluated together. A deny rule or a priority order in the Huawei group needs a decision. Ingress is denied by default, except traffic from instances in the same security group; egress is allowed.

  • Keys: material does not move

    A KMS key becomes a STACKIT KMS key, but the key material of the source does not move, so data encrypted with it is re-encrypted.

  • Cache: check the engine

    A DCS instance becomes a Valkey instance. The application changes endpoint and credentials, and a Memcached instance would need a client change.

  • Queues: drain before cutover

    Exchanges, queues and credentials of DMS for RabbitMQ are recreated on STACKIT RabbitMQ, and messages in flight are drained before cutover.

  • Functions: no function service

    STACKIT has no function service. Each function is packaged as a container for SKE or Cloud Foundry and its triggers are replaced. The two platforms differ in who runs the pipeline: SKE leaves image builds to you, Cloud Foundry packages source code.

What the run asks of you before it can draft

The estate produced 8 open requests, 4 of which block the draft.

  • Target region

    Which STACKIT region the estate is built in. The run offers eu01 and eu02.

  • Three password variables

    db_password, cache_password and mq_password have no value in the source. The run marks them as sensitive and does not take them in its answer file: you supply them through tfvars or TF_VAR when the draft is applied.

  • Project and traffic preferences

    The target project, observability, public ingress and egress are recorded as preferences this build cannot apply. You set them in the target environment.

  • Four stateful units

    The Valkey instance, the disk, the bucket and the database each need a data movement mechanism. The run lists all four as DECISION_REQUIRED: the mechanism depends on data size, tolerated downtime and the consistency the application needs, and the source states none of them.

The waves the run computed

Seven units have no dependency, the subnet follows the VPC, and the five workload and data services come last. Verbatim from the run's migration plan.

StackToIT migration planmigration/technical-sequencing.md
## Wave 1 — 7 unit(s)

| Unit | Class | Target |
|---|---|---|
| `huaweicloud_dns_recordset.www` | RECONFIGURE / MEDIUM | STACKIT DNS |
| `huaweicloud_evs_volume.uploads` | RECONFIGURE / MEDIUM | STACKIT Block Storage |
| `huaweicloud_fgs_function.thumbnail` | CONTAINERIZE / MEDIUM | SKE workload (or Cloud Foundry Docker app) |
| `huaweicloud_kms_key.data` | RECONFIGURE / MEDIUM | STACKIT KMS |
| `huaweicloud_networking_secgroup.apps` | RECONFIGURE / MEDIUM | STACKIT security groups |
| `huaweicloud_obs_bucket.media` | RECONFIGURE / MEDIUM | STACKIT Object Storage |
| `huaweicloud_vpc.core` | RECONFIGURE / MEDIUM | STACKIT network |

## Wave 2 — 1 unit(s)

| Unit | Class | Target |
|---|---|---|
| `huaweicloud_vpc_subnet.apps` | RECONFIGURE / MEDIUM | STACKIT network |

## Wave 3 — 5 unit(s)

| Unit | Class | Target |
|---|---|---|
| `huaweicloud_cce_cluster.platform` | 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_dms_rabbitmq_instance.events` | REPLATFORM / MEDIUM | STACKIT RabbitMQ |
| `huaweicloud_rds_instance.orders` | REPLATFORM / MEDIUM | STACKIT PostgreSQL Flex |
  • Eight work packages

    The run groups the manual work into eight packages by phase: foundation (VPC and subnet), two security packages (security group, KMS key), two data packages (cache and database, disk and bucket), platform services (CCE, RabbitMQ, function), the ECS workload and the DNS cutover. Seven of them name an owner role, from Network Architect to Platform Architect.

  • One owner is missing

    The KMS key package has no owner: the run writes NOT_STATED. Assign one when you plan the packages.

Questions about the mapping

Which Huawei Cloud services does StackToIT map to STACKIT?

ECS, EVS, VPC, subnets, security groups, EIP, load balancers, CCE, RDS, GaussDB, DCS, DDS, OBS, SFS Turbo, DMS, KMS, CSMS, FunctionGraph, DNS, CDN and more. IAM, NAT gateway and Auto Scaling are left to an architect, and any other resource type is classified MANUAL_REVIEW.

Does the run write STACKIT Terraform for these services?

Not for Huawei Cloud sources in this build. The run writes the classification, target, reason, sequencing and manual steps; its Terraform folder holds the provider setup and variables only.

What does REPLATFORM mean compared with RECONFIGURE?

In the public StackToIT documentation, RECONFIGURE means a corresponding target capability needs configuration changes, REPLATFORM means the component moves to a different platform model, and CONTAINERIZE means the treatment includes moving the workload to containers. In this run: servers, buckets and keys are RECONFIGURE, RDS and CCE are REPLATFORM, functions are CONTAINERIZE.

Does the assessment connect to our Huawei Cloud account?

No. It reads the Terraform or OpenTofu root modules that use the huaweicloud provider and never connects to an account.

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.