Servicebindung migrieren
Lassen Sie uns eine allgemeine cloudnative App betrachten, die den 12-Faktor-App-Prinzipien folgt, den Code vereinfachen und aktualisieren und sowohl eine Cloud Foundry- als auch eine Code Engine-Version erstellen. Diese Versionen dienen als Beispiel für die Beschreibung von Migrationsschritten und Implementierungsfragen.
Die Beispielanwendung ist eine typische Webanwendung, die in Node.jsJavaScript) geschrieben ist und das Express-Webframework verwendet. Eine IBM Cloudant NoSQL-Datenbank dient als Unterstützungsservice zum Speichern der von der App angezeigten Daten. Wie es für cloudnative 12-Faktor-Apps typisch ist, basiert die Beispiel-App auf diskreten, wiederverwendbaren Komponenten, die als Mikroservices fungieren, um die gesamte App zu bilden. Sowohl das implementierte Node.js-Programm als auch die Datenbank können unabhängig voneinander skaliert, verbessert oder ausgetauscht werden. Die Komponenten arbeiten zusammen, da sie entsprechend konfiguriert wurden und klar strukturierte APIs nutzen.
Die IBM Cloudant kann so konfiguriert werden, dass sie als angehängte Ressource mit den App-Versionen arbeitet, die auf Cloud Foundry und Code Engine bereitgestellt werden. Der Einfachheit halber wird die Lösung für diese beiden Komponenten beibehalten.
Servicebindung erstellen
Diese Beispielanwendung erfordert eine Cloudant-Datenbank, um Inhalte zu speichern. Sie können den Zugriff auf Cloudant konfigurieren, indem Sie Umgebungsvariablen manuell einfügen. Der typische Prozess basiert jedoch auf Servicebindungen.
Die Beziehung zwischen der App und ihren Unterstützungsservices wird explizit angegeben, sodass Berechtigungsnachweise erstellt und automatisch in die Laufzeitumgebung eingefügt werden. Cloud Foundry stellt die Berechtigungsnachweise als Teil
des VCAP_SERVICES-Objekts bereit. Code Engine imitiert dieses Objekt über seine Umgebungsvariable CE_SERVICES.
Sowohl die Cloud Foundry als auch die Code Engine verbinden sich mit dem Datenbankdienst. Der in Code Engine bereitgestellte Code kann als eine andere, neuere Version der Cloud Foundry-App betrachtet werden. Sie wird weiterhin an denselben Datenbankservice gebunden, aber auf andere Weise.
So binden Sie die Code Engine der Anwendung an einen Dienst,
- Greifen Sie auf Ihre Cloudant-Datenbankinstanzzu. Wenn Sie über keine Instanz verfügen, erstellen Sie eine Instanz.
- Erstellen Sie Serviceberechtigungsnachweise (IAM-Serviceschlüssel) für Ihre Cloudant-Instanz mit einem beschreibenden Namen. Geben Sie die IAM-Rolle
Manager,Writer, oderReader) für Ihre Anwendung an. Wählen Sie eine Rolle mit der niedrigsten Berechtigungsstufe aus, die für Ihre Anwendung erforderlich ist. - Binden Sie den Service mithilfe des vorhandenen Berechtigungsnachweises an die App. Code Engine kann Berechtigungsnachweise für Sie erstellen, wenn Sie einen Service binden. Wenn Sie jedoch einen eigenen Berechtigungsnachweis erstellen, können Sie das Zugriffsrecht unabhängig von Code Engineverfolgen und sogar ändern.
Führen Sie für diese Beispielapp mit Cloudant als Datenbankservice die folgenden Befehle aus, um den Serviceschlüssel Cloudant-CF2CE-Manager mit der Rolle Manager zu erstellen und dann zum Binden des Service zu verwenden.
ibmcloud resource service-key-create Cloudant-CF2CE-Manager Manager --instance-name Cloudant-CF2CE
ibmcloud ce app bind --name cf2ce-app --service-instance Cloudant-CF2CE --service-credential Cloudant-CF2CE-Manager
Wenn Ihre Cloud Foundry-App über einen vom Benutzer bereitgestellten Serviceeine Verbindung zu einem Service herstellt, erstellen Sie eine App, die geheime Schlüssel oder Konfigurationszuordnungen für Code Engineverwendet. Durch die Verwendung von Secrets und Configmaps können Sie die Dienstanmeldeinformationen in die Laufzeitumgebung injizieren und sie als benanntes Objekt innerhalb des Code Engine verwalten.
Code migrieren
Normalerweise ist die Codemigration einfach. Anstatt beispielsweise aus einer Umgebungsvariablen zu lesen, die VCAP_SERVICES für Cloud Foundry heißt, muss Ihr Code aus CE_SERVICES für Code Engine lesen. Beachten Sie
außerdem die feinen Unterschiede bei der Benennung von Diensten aufgrund der Methode, mit der Dienste über Broker für Cloud Foundry und über IAM-basiertes Ressourcenmanagement für Code Engine verfügbar gemacht werden.
Je nach Programmiersprache verwendet Ihr Code möglicherweise eine Codebibliothek oder ein Modul für den Zugriff auf die Cloud Foundry-Laufzeitumgebung, die lokal injizierte Konfiguration ("dotenv") usw. Diese Abschnitte
müssen angepasst werden.
Vergleichen Sie den Code in der Datei server.js in diesen beiden Anwendungsbeispielen.
Anwendungsmigration mit Zwischenschritt durchführen
Wenn Ihre Anwendung nicht inaktiv sein kann, während Sie sie von Cloud Foundry zu Code Engine migrieren, können Sie die Codemigration möglicherweise mit einem Zwischenschritt durchzuführen.
- 1cloudfoundry_base: Die Cloud Foundry als ursprüngliche Quelle. Diese App wird nur in Cloud Foundry ausgeführt.
- 2cf_ce_intermediate_hybrid: Fügen Sie Code hinzu, um auch eine Code Engine-Bereitstellung zu unterstützen. Diese Anwendung wird sowohl in Cloud Foundry als auch in Code Engine ausgeführt.
- 3codeengine_target: Verschieben Sie schließlich nach Abschluss der eigentlichen Projektmigration in eine reine Code Engine-Codebasis. Diese Anwendung wird nur in Code Engineausgeführt.
Dieser Ansatz ist vorteilhaft, da Sie die Codebasis während des Migrationsprozesses unabhängig von der Implementierungsumgebung beibehalten oder erweitern können.
Code erstellen und App ausführen
Wenn Sie die Einrichtung Ihrer Servicebindung, die Migration Ihres Codes und die Vorbereitung auf die Bereitstellung Ihrer Migration abgeschlossen haben, ist es an der Zeit, Ihren Code zu erstellen. Führen Sie die Schritte im ersten Migrationslernprogramm aus, um Ihren Code aus einer lokalen Quelle zu erstellen. Wenn Sie die Konsole zum Erstellen Ihres Codes verwenden möchten, muss Ihr Code in Git gespeichert sein. Weitere Informationen finden Sie unter App aus Quellcode bereitstellen.
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.
- Servicebindung migrieren (aktuelle Seite)
- Erfahren Sie mehr über Skalierung und Datenverkehrsmanagement.
- Suchen Sie Code Engine-Äquivalente zu Cloud Foundry-Befehlen.
- Sie haben noch Fragen? Lesen Sie Häufig gestellte Fragen zur Migration von Cloud Foundry-Anwendungen zu Code Engine.
Weitere Informationen
- Informieren Sie sich über die Code Engine-Preisstruktur.
- Probieren Sie weitere Code Engine-Lernprogrammeaus.
- Erkunden Sie weitere Themen zu Code Engine.