HUAWEI CLOUD FUNCTIONGRAPH → STACKIT · ARCHITEKTUR

Huawei-FunctionGraph-Funktionen zu STACKIT umziehen

STACKIT hat keinen Functions-Dienst, deshalb wird eine FunctionGraph-Funktion nicht einfach verschoben, sondern neu aufgesetzt. StackToIT stuft jede Funktion als CONTAINERIZE ein und nennt zwei Ziele: einen Workload auf STACKIT Kubernetes Engine (SKE) oder eine Cloud-Foundry-App. Diese Seite zeigt die Optionen, was der Lauf für Sie entscheidet und mit welchen Fragen Sie zwischen ihnen wählen, anhand einer Demo-Umgebung aus drei Funktionen, einem Bucket und einer RabbitMQ-Instanz, bewertet am 4. November 2026.

Eine Funktion, bewertet

Links die Java-Reporting-Funktion aus der Demo-Eingabe, die ihren Code aus einem OBS-Bucket lädt. Rechts ein Auszug aus assessment.json für diese Funktion, die Werte genau so, wie der Lauf sie geschrieben hat.

Beispieleingabemain.tf
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"
}
StackToIT-Bewertungassessment.json
{
  "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."
  }
}
  • Dieselbe Klasse für alle drei

    Die Python-Funktion resize, die Node.js-Funktion notify und die Java-Funktion report sind alle CONTAINERIZE mit Konfidenz MEDIUM. Die Laufzeit ändert die Klasse nicht.

  • Acht Einstellungen je Funktion

    app, code_type, func_code oder code_url, handler, memory_size, name, runtime und timeout werden als offene Einstellungen für Ihr Team aufgelistet. Sie sind Eingaben für den Container, keine Werte, die übernommen werden.

  • Keine Abhängigkeiten in der Demo

    Alle fünf Einheiten der Umgebung liegen in Welle 1, weil die Demo keinen Verweis zwischen ihnen enthält. Eine echte Umgebung bringt Trigger- und Berechtigungsverknüpfungen mit, die die Reihenfolge bestimmen.

Die Optionen, wo eine Funktion landet

OptionWas es auf STACKIT istAbwägung
Container auf SKEEin verwalteter Kubernetes-Cluster. Auslieferbar sind OCI-Images und Helm-Charts; die Pipeline für Image-Builds und Deployments definieren Sie selbst.Die meiste Kontrolle, auch über die Infrastruktur. Pipeline und Workload-Definition liegen bei Ihnen; Control Plane, Versions-Updates und Reparatur sind verwaltet.
App auf Cloud FoundryEine Platform as a Service mit dem cf-push-Erlebnis: Die Plattform verpackt Quellcode in Container; auch OCI-Images lassen sich deployen.Am wenigsten zu betreiben. Passt zu Entwicklern, die sich auf Code konzentrieren wollen; die Plattform übernimmt den Großteil des Betriebs. Dafür akzeptieren Sie die Arbeitsweise der Plattform.
In einen bestehenden Service überführenDer Funktionskörper wird Modul oder Endpunkt eines Services, den Sie bereits auf SKE oder Cloud Foundry betreiben. Das ist allgemeine Praxis, kein Vorschlag des Laufs.Ein Deployable statt vieler. Passt zu kleinen, eng verwandten Funktionen und kostet eine Neufassung des Einstiegspunkts.

Die Zeilen zu SKE und Cloud Foundry folgen der STACKIT-Vergleichsseite und den Übersichten unter den Quellen. Der Lauf nennt die ersten beiden als Ziel, mit den Worten „SKE workload or Cloud Foundry Docker app“.

Die drei Demo-Funktionen und was je Funktion zu entscheiden ist

FunktionEinstellungen in der QuelleWas Ihre Architekten entscheiden
imaging-resize (Python 3.9, Inline-Code)512 MB, 60 s TimeoutBasis-Image und Abhängigkeiten, und wie ein Upload sie erreicht, wenn der Huawei-Trigger entfällt.
imaging-notify (Node.js 14.18, Inline-Code)128 MB, 10 s TimeoutOb sie ein eigener Service bleibt oder Consumer der RabbitMQ-Queue wird, die die Umgebung ohnehin hat.
imaging-report (Java 11, ZIP aus OBS)1024 MB, 300 s TimeoutHuawei rät bei Anfragen über 90 Sekunden zum asynchronen Aufruf. Prüfen Sie, wie Aufrufer sie nutzen, und gestalten Sie die Anfrageverarbeitung des Containers entsprechend.

Laufzeiten, Speicher und Timeouts stammen aus der Demo-Eingabe, die 90-Sekunden-Empfehlung aus der Huawei-Seite zu den FunctionGraph-Grenzen unter den Quellen. Die Demo deklariert keine Trigger-Ressourcen, und Trigger gehören nicht zu den Huawei-Services, die die öffentliche StackToIT-Dokumentation als abgebildet führt; ein deklarierter Trigger bliebe also der manuellen Prüfung überlassen, statt abgebildet zu werden. Erfassen Sie die Trigger aus Ihrem Konto oder Ihrem State.

So entscheiden Sie zwischen SKE und Cloud Foundry

Fünf Fragen in der Reihenfolge, die die Wahl meist klärt. Die Antworten geben Sie; der Lauf liefert die Fakten dazu.

  1. Gibt es schon einen Cluster?

    Hat die Umgebung einen CCE-Cluster, landet er als SKE-Cluster, und die Funktionen können sich anschließen. Der Lauf stuft einen CCE-Cluster als REPLATFORM ein.

  2. Wer baut und liefert aus?

    Auf SKE definieren Sie die Pipeline für Image-Build und Deployment. Auf Cloud Foundry genügt ein Push des Quellcodes. Wählen Sie das Modell, das Ihr Team schon betreibt.

  3. Was startet die Funktion?

    Huawei-Trigger sind unter anderem OBS, API Gateway, ein Timer, DMS for RabbitMQ und DMS for Kafka. Jeder braucht einen Ersatz: eine HTTP-Route, einen geplanten Job oder einen Consumer. Der Lauf hält nur fest, dass Trigger ersetzt werden.

  4. Wie lange läuft eine Anfrage?

    Prüfen Sie den längsten Aufruf gegen die gewählte Plattform. Die Demo-Funktion report erlaubt 300 Sekunden.

  5. Wie viele Funktionen gibt es?

    Drei Funktionen können sich einen Service teilen. Hunderte rechtfertigen meist eine eigene Plattform. Das ist eine Faustregel, kein Ergebnis des Laufs.

Die Kubernetes-Version, auf der die Funktionen landen würden

Das Ziel des Laufs für alle drei Funktionen ist SKE, deshalb ergänzt sein Bericht den SKE-Lebenszyklus: Er liest den Versions-Lebenszyklus von SKE und nennt jede Version mit Stand des Tages, an dem er die Seiten gelesen hat, 3. November 2026. Wörtlich aus dem Bericht des Laufs.

StackToIT-Architektenberichtengineering/architect-report.md
| 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 |
  • Auf 1.36 landen

    Version 1.36 ist als SUPPORTED und als Landeversion geeignet markiert. Die Versionen 1.32, 1.33 und 1.34 sind abgelaufen; ein Cluster aus einer alten Vorlage braucht daher eine aktuelle Version.

  • Datumsangaben erneut prüfen

    Der Lauf verbürgt diese Stände nur bis zum 1. Februar 2027; danach sind die Quellen neu zu lesen. Version 1.35 hat ein Ablaufdatum, aber keinen Status; der Lauf führt sie als UNKNOWN.

Fragen zu FunctionGraph auf STACKIT

Hat STACKIT ein Pendant zu FunctionGraph oder Lambda?

Nein. Der Lauf hält fest, dass STACKIT keinen Functions-Dienst hat. Eine Funktion wird ein Container: ein Workload auf STACKIT Kubernetes Engine oder eine App auf Cloud Foundry.

Können wir den Funktionscode weiterverwenden?

Der Code ist die Eingabe, die Verpackung ist neu. Handler-Signatur, Event-Objekt und Plattform-Bibliotheken von FunctionGraph gibt es in einem normalen Container nicht; der Einstiegspunkt braucht daher einen Adapter oder eine Neufassung.

Was passiert mit den Triggern?

Sie werden ersetzt; das sagt der Begründungstext des Laufs für jede Funktion. Trigger-Ressourcen haben in diesem Build keine eigene Abbildung. Erfassen Sie sie deshalb zuerst in Ihrem Huawei-Konto oder im Terraform-State und planen Sie für jeden Trigger einen Ersatz.

Was geschieht mit Queue und Bucket?

Die RabbitMQ-Instanz ist REPLATFORM: Exchanges, Queues und Zugangsdaten werden neu angelegt, noch nicht zugestellte Nachrichten werden vor dem Cutover abgearbeitet. Der OBS-Bucket ist RECONFIGURE und wird als zustandsbehaftete Einheit geführt, für die noch kein Verfahren für den Datenumzug gewählt ist.

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.