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.
-
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. -
Ö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
odercustom.<your-other-random-id>.us-east.codeengine.appdomain.cloud
. -
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. -
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.
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
- Haben Sie gerade erst mit der Migration begonnen? Lesen Sie den Abschnitt Erste Schritte.
- Vergleichen Sie Cloud Foundry-Terminologie mit Code Engine.
- Testen Sie das Lernprogramm zu Code Engine mit einem lokalem Build.
- Verwendet Ihre Anwendung Servicebindungen? Dann informieren Sie sich über die Migration Ihrer Servicebindungen.
- Erfahren Sie mehr über Skalierung und Datenverkehrsmanagement.
- Suchen Sie Code Engine-Äquivalente zu Cloud Foundry-Befehlen.
- Häufig gestellte Fragen zur Migration von Cloud Foundry-Anwendungen zu Code Engine (aktuelle Seite)
Weitere Informationen
- Informieren Sie sich über die Code Engine-Preisstruktur.
- Probieren Sie weitere Code Engine-Lernprogrammeaus.
- Erkunden Sie weitere Themen zu Code Engine.