IBM Cloud Docs
Häufig gestellte Fragen zur Migration von Cloud Foundry-Anwendungen auf Code Engine

Häufig gestellte Fragen zur Migration von Cloud Foundry-Anwendungen auf Code Engine

Antworten auf häufig gestellte Fragen zur Migration Ihrer Cloud Foundry-Anwendungen auf Code Engine.

Kann ich in Code Engine benutzerdefinierte URLs verwenden?

Ja! Sie können Ihre eigene benutzerdefinierte URL einer Code Engine Anwendung zuordnen, indem Sie eine benutzerdefinierte Domänenzuordnung über die Konsole Code Engine erstellen. Sie können auch eine benutzerdefinierte URL über einen Internetdienstanbieter zuweisen, z. B IBM Cloud Internet Services. Weitere Informationen zur Bereitstellung einer Anwendung mit einer benutzerdefinierten Domäne über IBM Cloud Internet Services finden Sie unter Konfigurieren einer hochverfügbaren Anwendung. Weitere Informationen über die Bereitstellung einer App mit einer benutzerdefinierten Domäne über Cloud Internet Services (CIS) finden Sie unter Abrufen einer benutzerdefinierten Domäne und ihres TLS-Zertifikats und privaten Schlüssels.

Meine App enthält eine bestimmte Route. Kann ich dieselbe Route verwenden?

Sie können dieselbe angepasste Route oder Domäne verwenden, solange Sie sie steuern. Wenn die Route von einer anderen Quelle stammt, beispielsweise von einer von IBMbereitgestellten Route wie mybluemix.net, müssen Sie die von Code Engine bereitgestellte Domäne verwenden oder Ihrer App eine neue angepasste Domäne zuordnen.

Kann ich meine App stoppen?

Sie können Ihre App nicht direkt stoppen, aber Sie können verhindern, dass Ihre App Datenverkehr empfängt, indem Sie die Sichtbarkeit auf project setzen und eine Skalierung auf 0 zulassen. Weitere Informationen finden Sie unter Wie kann ich verhindern, dass meine App Datenverkehr empfängt?

Warum habe ich so viele App-Instanzen?

Wenn Sie Ihre App aktualisieren, erstellt Code Engine automatisch eine neue Revision. Wenn die Überarbeitung verfügbar ist, wird der Datenverkehr an die neuen Instanzen weitergeleitet. Während die Revision skaliert und der Datenverkehr an sie übertragen wird, verarbeitet die ursprüngliche App-Instanz weiterhin den Datenverkehr. Wenn die Revision vertikal skaliert wird und der gesamte Datenverkehr an sie weitergeleitet wird, wird die ursprüngliche App horizontal skaliert. Ihre App wird auch automatisch nach Bedarf nach oben und unten skaliert. Überprüfen Sie später, ob Ihre App die richtige Anzahl von Instanzen ausführt. Weitere Informationen finden Sie im Abschnitt Anwendungsskalierung konfigurieren.

Warum reagieren meine Apps langsam?

Ihre Anwendung wird standardmäßig auf Null skaliert und kann daher langsamer reagieren, während sie wieder hochskaliert wird. Sie können dieses Verhalten ändern, indem Sie Ihre Anwendung aktualisieren und die Mindestskalierung auf 1 in der Konsole oder über die Befehlszeilenschnittstelle festlegen.

Um beispielsweise die Mindestskala für eine Anwendung mit dem Namen myapp über die Befehlszeilenschnittstelle auf 1 zu setzen:

ibmcloud ce app update --name myapp --min-scale 1

Nach der Anwendungsaktualisierung ist stets eine einzelne Instanz aktiv. Beachten Sie, dass möglicherweise Gebühren anfallen. Weitere Informationen finden Sie unter Preise für Code Engine.

Kann ich Anforderungen an eine bestimmte Anwendungsinstanz weiterleiten?

Nein, diese Funktionalität wird derzeit nicht unterstützt. Sie können diese Funktionalität näherungsweise berechnen, indem Sie Knative-Aufteilung des Datenverkehrsverwenden. Weitere Informationen zur Verwendung von Knative mit Code Engine finden Sie unter Verwendung von Knative mit Code Engine.

Ich verwende eine globale Lastausgleichsfunktion mit meiner App Cloud Foundry. Kann ich sie auf Code Enginemigrieren?

Ja, Sie können Ihre globale Lastausgleichsfunktion so aktualisieren, dass sie auf Ihre App Code Engine verweist, wenn Sie auf die Zertifikatskette und den entsprechenden privaten Schlüssel zugreifen können. In den folgenden Schritten wird davon ausgegangen, dass Sie Cloud Internet Services (CIS)verwenden; Sie können diese Schritte jedoch für Ihre eigene globale Lastausgleichsfunktion anpassen.

In diesen Schritten wird die Konsole verwendet.

  1. Erstellen Sie eine Domänenzuordnung für Ihre App. Wenn Sie Ihre Domänenzuordnung erstellen, geben Sie Ihren privaten Schlüssel und die vollständige Zertifikatskette der Domäne (n) an. Weitere Informationen finden Sie unter Angepasste Domänenzuordnungen für Ihre App konfigurieren. Warten Sie, bis die Domänenzuordnungen in allen Projekten den Status Ready aufweisen.

  2. Öffnen Sie die Details jeder Domänenzuordnung und notieren Sie den Wert für CNAME, z. B. custom.<your-random-id>.us-south.codeengine.appdomain.cloud oder custom.<your-other-random-id>.us-east.codeengine.appdomain.cloud.

  3. Navigieren Sie zur Detailseite für jede Anwendung und wählen Sie die Registerkarte Domänenzuordnungen aus. Wählen Sie dann No external system domain mapping im Abschnitt "Systemdomänenzuordnungen" aus. Dieser Schritt stellt sicher, dass Ihre Anwendungen nur über die angepassten Domänen zugänglich sind, wenn sie von außerhalb dieses Projekts aufgerufen werden.

  4. Navigieren Sie in Ihrer Instanz von Cloud Internet Services (CIS) zu Reliability. > Globale Lastausgleichsfunktionen > Ursprungspools und bearbeiten Sie die vorhandenen Ursprungspools, indem Sie die Ursprungsadresse in die CNAME ändern, die Sie zuvor aufgezeichnet haben.

Ihre globale Lastausgleichsfunktion verweist jetzt auf Ihre App Code Engine.

Muss meine App Spezifikationen befolgen?

Ihre App muss der 12-Faktor-App-Methodikfolgen.

Welche Typen von Workloads sind mit Code Engine verfügbar?

Code Engine unterstützt zwei Workloadtypen: Anwendungen und Batch-Jobs.

Eine Anwendung oder App führt den Code für die Verarbeitung von HTTP-Anforderungen aus. Zusätzlich zu den traditionellen HTTP-Anforderungen unterstützt IBM Cloud® Code Engine auch Anwendungen, die WebSockets als Kommunikationsprotokoll verwenden. Die Anzahl der laufenden Instanzen einer Anwendung wird auf der Grundlage der eingehenden Anfragen und Ihrer Konfigurationseinstellungen automatisch nach oben oder unten (auf Null) skaliert. Eine App enthält eine oder mehrere Revisionen. Eine Revision stellt eine unveränderliche Version der Konfigurationseigenschaften der App dar. Bei jeder Aktualisierung einer Konfigurationseigenschaft der App wird eine neue Revision der App erstellt.

Ein Auftrag führt eine oder mehrere Instanzen Ihres ausführbaren Codes parallel aus. Im Gegensatz zu Anwendungen, die HTTP-Anforderungen verarbeiten, sind Jobs so konzipiert, dass sie einmal ausgeführt werden und den Vorgang beenden. Wenn Sie einen Job erstellen, können Sie Informationen für die Workloadkonfiguration angeben, die bei jeder Ausführung des Jobs verwendet werden.

Bestimmen des gewünschten Workloadtyps

Die meisten Cloud Foundry-Anwendungen können zu Code Engine migriert werden. Wenn Ihre Cloud Foundry-Anwendung jedoch nicht auf eine eingehende HTTP-Anforderung wartet, sind Jobs wahrscheinlich die bessere Wahl. Weitere Erläuterungen und Beispiele finden Sie unter Planung für Code Engine.

Ich verwende Manifestdateien. Gibt es ähnliche Optionen für Code Engine?

Wenn Sie Manifestdateien für Ihre Cloud Foundry-Anwendungen verwenden, ordnen Sie Ihre Manifestattribute den entsprechenden Code Engine-Features oder der CLI-Option zu.

Markdown für Tabellen
Manifestattribut Code Engine-Äquivalent in den Befehlen ibmcloud ce app create oder app update
command --command-Option
disk_quota Implizit von Code Engine festgelegt.
docker Nicht erforderlich in Code Engine.
health-check-http-endpoint Nicht erforderlich in Code Engine. Standardmäßig wird ein TCP-Testmonitor verwendet, um zu ermitteln, ob die Anwendung in einwandfreiem Zustand und bereit ist.
health-check-invocation-timeout Nicht erforderlich in Code Engine.
instances --min-scale- und --max-scale-Optionen
memory --memory-Option
metadata Derzeit nicht unterstützt.
no-route Mit der Option --cluster-local ist die Anwendung immer noch von anderen Workloads innerhalb des Projekts aus zugänglich, enthält aber keinen Internet-Zugang zu URL, der mit der Anwendung verbunden ist.
path Derzeit nicht zutreffend
processes Nicht erforderlich in Code Engine. Die Anwendung kann während der Laufzeit zusätzliche Prozesse erstellen.
random-route Nicht erforderlich in Code Engine. Jedes Projekt hat eine eindeutige Unterdomäne und da der Anwendungsname Teil der URL ist, ist die URL garantiert eindeutig.
routes Angepasste Routen werden derzeit nicht unterstützt. Sie haben jedoch die Möglichkeit, IBM Cloud Internet Service(CIS)oder Cloudflare als Front-End für Ihre Anwendung mit einer angepassten Domäne zu verwenden.
sidecars Derzeit nicht unterstützt.
stack Implizit verwaltet von Code Engine.
timeout Nicht erforderlich in Code Engine.
Umgebungsvariablen -env-Option
Services Siehe Befehl ibmcloud ce app bind.

Code Engine unterstützt viele Optionen, die in Cloud Foundry nicht verfügbar sind, wie beispielsweise die Verwaltung der automatischen Skalierung. Siehe Mit Apps in Code Engine arbeiten und Anwendungsskalierung konfigurieren.

Ich weiß, wie eine App mit Cloud Foundry bereitgestellt wird. Was muss ich wissen, um eine App in Code Engine bereitzustellen?

Wenn Sie wissen, wie man eine Anwendung mit Cloud Foundry bereitstellt, finden Sie alles, was Sie zum Bereitstellen einer Anwendung wissen müssen, unter Code Engine.

Push-Code

Mit Code Engine können Sie Ihren Code erstellen, der aus einem Git-Repository oder aus einem lokalen System stammt (nur CLI). Darüber hinaus können Sie wie bei Cloud Foundry (cf push) Ihre App in einem einzigen Schritt sowohl über die Befehlszeilenschnittstelle als auch über die Code Engine-Konsole erstellen und bereitstellen. Weitere Informationen finden Sie unter Wie lasse ich meinen Code als Code Engine-Anwendungskomponente ausführen?.

Implementierungskontext

Cloud Foundry erfordert eine Org und eine Space, um Ihren Code mit Push-Operation in eine Anwendung zu übertragen. Alle Cloud Foundry-Benutzer erhalten standardmäßig eine Org und Space, die für sie erstellt werden. Wenn Sie jedoch neue hinzufügen möchten, müssen Sie ein Org- und Space-Ziel ähnlich wie im folgenden Beispiel einrichten.

ibmcloud cf create-org MyOrg
ibmcloud target -o <ORGNAME>
ibmcloud target -s dev

Wenn Sie dann eine App mit Cloud Foundry-Instanzen bereitstellen, sind Org und Space für die Bereitstellung bestimmt.

Code Engine verwendet das Konzept einer IBM Cloud-Ressourcengruppe und eines Code Engine-Projekts.

ibmcloud target -g <RESOURCE-GROUP>
ibmcloud ce project create --name <PROJECTNAME>

Diese Befehle erstellen nicht nur ein Projekt, sondern legen es auch als Ziel fest. Alle nachfolgenden Code Engine-Befehle werden im Kontext dieses Projekts ausgeführt, bis mit dem Befehl project select ein anderes Projekt als Ziel ausgewählt wird. Weitere Informationen finden Sie unter Projekte verwalten.

Protokolle

Code Engine stellt Protokolle für Apps, Jobs und Builds zur Verfügung, damit Sie bestimmen können, was passiert ist, wenn Bereitstellungen nicht ordnungsgemäß ausgeführt werden. Sie können Protokolle suchen, indem Sie Befehle ähnlich den folgenden Beispielen ausführen.

ibmcloud ce app logs -n <APPNAME>
ibmcloud ce jobrun logs -n <JOBRUN-NAME>
ibmcloud ce buildrun logs -n <BUILDRUN_NAME>

Sie können auch den Dienst IBM Cloud Logs verwenden, der für eine längerfristige Aufbewahrung von Protokollmeldungen zur Verfügung steht. Weitere Informationen finden Sie unter Protokolle anzeigen.

Service erstellen

Das Erstellen einer Instanz eines verwalteten Dienstes ist in Cloud Foundry und Code Engine ähnlich.

Verwenden Sie den folgenden Befehl, um einen neuen Service zur Verwendung mit Ihrer Cloud Foundry-Anwendung zu erstellen.

ibmcloud cf create-service cloudantNoSQLDB lite myNameCloudant

Gehen Sie wie folgt vor, um einen neuen Service für die Verwendung mit Code Engine-Anwendungen zu erstellen:

ibmcloud resource service-instance-create myNameCOS cloud-object-storage lite global

Servicebindung

Nachdem Sie Ihre Anwendung erstellt haben, können Sie Ihre Anwendung an den Service "binden".

Führen Sie den folgenden Befehl mit Cloud Foundry aus:

ibmcloud cf bind-service appName instanceName

Mit Code Engine:

ibmcloud ce app bind --name appName --service-instance instanceName

Die Berechtigungsnachweise (Koordinaten) der Serviceinstanz werden mithilfe von Umgebungsvariablen in die Anwendung (oder den Job) eingefügt. Das Cloud Foundry-Äquivalent von VCAP_SERVICES in Code Engine ist CE_SERVICES. Weitere Informationen finden Sie unter IBM Cloud-Service mit Servicebindung integrieren.

App oder Job aktualisieren

Nachdem Sie Ihre Anwendung oder Ihren Job erstellt haben, können Sie die Eigenschaften Ihrer Workload mit dem Aktualisierungsbefehl aktualisieren. Um beispielsweise eine Anwendung in Code Engine zu aktualisieren,

ibmcloud ce app update --name <APPNAME> ...

Sie können alle verfügbaren Eigenschaften aktualisieren, wenn Sie eine Anwendung oder einen Job erstellen. Vollständige Informationen finden Sie in den folgenden Abschnitten:

Laufzeitunterstützung

Code Engine unterstützt viele der Laufzeiten, die Cloud Foundry unterstützt. Eine Liste der Laufzeiten, die von Code Engineunterstützt werden, finden Sie unter Cloud Native-Buildpacks. Wenn Sie eine Laufzeitumgebung verwenden möchten, die nicht unterstützt wird, z. B. Swift oder Liberty, können Sie Ihre Anwendung selbst als Container-Image verpacken und dieses Image in Code Engine bereitstellen, ohne das Image direkt von Code Engine zu erstellen.

Nächste Schritte

  1. Haben Sie gerade erst mit der Migration begonnen? Lesen Sie den Abschnitt Erste Schritte.
  2. Vergleichen Sie Cloud Foundry-Terminologie mit Code Engine.
  3. Testen Sie das Lernprogramm zu Code Engine mit einem lokalem Build.
  4. Verwendet Ihre Anwendung Servicebindungen? Dann informieren Sie sich über die Migration Ihrer Servicebindungen.
  5. Erfahren Sie mehr über Skalierung und Datenverkehrsmanagement.
  6. Suchen Sie Code Engine-Äquivalente zu Cloud Foundry-Befehlen.
  7. Häufig gestellte Fragen zur Migration von Cloud Foundry-Anwendungen zu Code Engine (aktuelle Seite)

Weitere Informationen