HUAWEI CLOUD FUNCTIONGRAPH → STACKIT · ARCHITECTURE
Moving Huawei FunctionGraph functions to STACKIT
STACKIT has no function service, so a FunctionGraph function is not moved, it is rehoused. StackToIT classifies every function as CONTAINERIZE and names two landing places: a workload on STACKIT Kubernetes Engine (SKE) or a Cloud Foundry app. This page sets out the options, what the run decides for you, and the questions that choose between them, using a demo estate of three functions, a bucket and a RabbitMQ instance assessed on 4 November 2026.
A function, assessed
Left: the Java reporting function from the demo input, which loads its code from an OBS bucket. Right: an excerpt of assessment.json for it, values exactly as the run wrote them.
resource "huaweicloud_fgs_function" "report" {
name = "imaging-report"
app = "default"
handler = "Handler::handle"
memory_size = 1024
timeout = 300
runtime = "Java11"
code_type = "obs"
code_url = "https://imaging-uploads.obs.eu-west-101.myhuaweicloud.eu/report.zip"
}{
"id": "huaweicloud_fgs_function.report",
"result": {
"class": "CONTAINERIZE",
"confidence": "MEDIUM",
"target": {
"service": "SKE workload (or Cloud Foundry Docker app)"
},
"reason": "STACKIT has no function service. Package the function as a container for SKE or Cloud Foundry, and replace its triggers."
}
}The same class for all three
The Python resize function, the Node.js notify function and the Java report function are all CONTAINERIZE with MEDIUM confidence. The runtime does not change the class.
Eight settings per function
app, code_type, func_code or code_url, handler, memory_size, name, runtime and timeout are listed for your team as settings left to you. They are inputs for the container, not values that carry over.
No dependencies in the demo
All five units of the estate sit in wave 1, because the demo declares no reference between them. A real estate adds trigger and permission links that decide the order.
The options for where a function lands
| Option | What it is on STACKIT | Trade-off |
|---|---|---|
| Container on SKE | A managed Kubernetes cluster. Deployable artifacts are OCI images and Helm charts, and you define the pipeline for image builds and deployments. | Most control, including over infrastructure. You own the pipeline and the workload definition; the cluster control plane, version updates and repair are managed. |
| App on Cloud Foundry | A platform as a service with the cf push experience: the platform packages source code into containers, and OCI images can be deployed too. | Least to run. It suits developers who want to focus on code; the platform manages most operations. You accept the platform's way of working. |
| Merge into an existing service | The function body becomes a module or endpoint of a service you already run on SKE or Cloud Foundry. This is general practice, not something the run proposes. | One deployable instead of many. It fits small, closely related functions, and costs a rewrite of the entry point. |
SKE and Cloud Foundry rows follow the STACKIT comparison page and overviews listed under sources. The run names the first two as the target, in the words SKE workload or Cloud Foundry Docker app.
The three demo functions and what to decide for each
| Function | Settings in the source | What your architects decide |
|---|---|---|
| imaging-resize (Python 3.9, inline code) | 512 MB, 60 s timeout | Base image and dependencies, and how an upload reaches it once the Huawei trigger is gone. |
| imaging-notify (Node.js 14.18, inline code) | 128 MB, 10 s timeout | Whether it stays a separate service or becomes a consumer of the RabbitMQ queue the estate already has. |
| imaging-report (Java 11, ZIP from OBS) | 1024 MB, 300 s timeout | Huawei advises asynchronous invocation for requests over 90 seconds. Check how callers invoke it and design the container's request handling to match. |
Runtimes, memory and timeouts come from the demo input; the 90-second guidance comes from the Huawei Cloud FunctionGraph constraints page under sources. The demo declares no trigger resources, and triggers are not among the Huawei services the public StackToIT documentation lists as mapped, so a declared trigger would be left for manual review rather than mapped. Inventory them from your account or state.
How to decide between SKE and Cloud Foundry
Five questions, in the order that tends to settle the choice. The answers are yours; the run supplies the facts that feed them.
Does a cluster already exist?
If the estate has a CCE cluster, it lands as an SKE cluster and the functions can join it. The run marks a CCE cluster REPLATFORM.
Who builds and ships?
On SKE you define the image build and deployment pipeline. On Cloud Foundry a source push is enough. Pick the model your team already operates.
What starts the function?
Huawei triggers include OBS, API Gateway, a timer, DMS for RabbitMQ and DMS for Kafka. Each one needs a replacement: an HTTP route, a scheduled job, or a consumer. The run only states that triggers are replaced.
How long does a request run?
Check the longest invocation against the platform you choose. The demo report function allows 300 seconds.
How many functions are there?
Three functions can share one service. Hundreds usually justify a platform of their own. This is a rule of thumb, not a run result.
The Kubernetes version the functions would land on
The run's target for all three functions is SKE, so its report adds the SKE lifecycle: it reads the SKE version lifecycle and states each version as of the day it read the pages, 3 November 2026. Verbatim from the run's report.
| Version | State | Released | Deprecated | Expires | Production suitability | Upgrade action | Migration timing risk |
|---|---|---|---|---|---|---|---|
| 1.36 | SUPPORTED | 2026-08-27 | not stated | 2027-06-09 | SUITABLE | PLAN | LOW |
| 1.35 | UNKNOWN | not stated | not stated | 2027-02-10 | UNKNOWN | UNKNOWN | UNKNOWN |
| 1.34 | EXPIRED | 2025-12-16 | 2026-08-28 | 2026-10-14 | NOT_SUITABLE | MANDATORY_UPDATE_APPLIES | HIGH |
| 1.33 | EXPIRED | 2025-07-29 | 2026-06-09 | 2026-06-10 (sources disagree: 2026-07-08) | NOT_SUITABLE | MANDATORY_UPDATE_APPLIES | HIGH |
| 1.32 | EXPIRED | not stated | 2026-02-20 | 2026-04-15 | NOT_SUITABLE | MANDATORY_UPDATE_APPLIES | HIGH |Land on 1.36
Version 1.36 is marked SUPPORTED and suitable as a landing. Versions 1.32, 1.33 and 1.34 are expired, so a cluster built from an old template needs a current version.
Read the dates again
The run says it does not vouch for these states after 1 February 2027; re-read the sources then. Version 1.35 has an expiry date but no state, which the run reports as UNKNOWN.
Questions about FunctionGraph on STACKIT
Does STACKIT have a FunctionGraph or Lambda equivalent?
No. The run states that STACKIT has no function service. A function becomes a container: a workload on STACKIT Kubernetes Engine or an app on Cloud Foundry.
Can we reuse the function code?
The code is the input, the packaging is new. Handler signature, event object and platform libraries of FunctionGraph do not exist in a plain container, so the entry point needs an adapter or a rewrite.
What happens to the triggers?
They are replaced. The run's reason text says so for every function. Trigger resources have no mapping of their own in this build, so inventory them in your Huawei account or Terraform state first and plan one replacement per trigger.
What happens to the queue and the bucket?
The RabbitMQ instance is REPLATFORM: exchanges, queues and credentials are recreated and messages in flight are drained before cutover. The OBS bucket is RECONFIGURE and is listed as a stateful unit with no data movement mechanism chosen.
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.