Erste Schritte bei der Migration von Heroku zu Code Engine

Willkommen Heroku-Benutzer auf IBM Cloud® Code Engine.

Code Engine ist eine vollständig verwaltete, serverunabhängige Plattform, die Ihre containerisierten Workloads ausführt. Code Engine erstellt sogar Container-Images für Sie aus Ihrem Quellcode. Die Funktionen von Code Engine sind so konzipiert, dass Sie sich auf das Schreiben von Code konzentrieren können und nicht auf die Infrastruktur, die zum Hosten erforderlich ist.

Code Engine wurde unter Berücksichtigung der folgenden wichtigen Ziele entwickelt:

  • Konzentrieren Sie sich auf Ihren Code. Code Engine bietet eine vereinfachte Entwicklererfahrung. Sie benötigen keine Kenntnisse über die zugrunde liegende Infrastruktur und müssen diese nicht verwalten können.
  • Unterstützung für moderne Laufzeitmerkmale, wie z. B. automatische Skalierung, Skalierung auf null im Leerlauf und nahtlose Integration mit verwalteten Services und Sicherheit.
  • Unterstützung für alle Ihre Cloud-nativen Anwendungen, unabhängig davon, ob es sich um 12-Faktor-Apps, ereignisgesteuerte Funktionen oder bis zur Fertigstellung ausgeführte Batch-Jobs handelt. Wenn es containerisiert werden kann, kann Code Engine es ausführen.
  • Bezahlen Sie nur für die Ressourcen, die Sie tatsächlich nutzen.

Wenn Sie aus dem Heroku-Umfeld kommen, kommen Ihnen viele dieser Funktionen bekannt vor. Code Engine bietet jedoch auch einige neue Funktionen, die über das hinausgehen, was Heroku bietet, einschließlich Anwendungen, die bis auf Null skaliert werden können und keine Kosten verursachen. Darüber hinaus erfordert Code Engine ein nutzungsabhängiges Konto, das eine kostenlose Stufeenthält. Nachdem Sie den syntaktischen Unterschied der Benutzererfahrung hinter sich haben, werden Sie und Ihre Anwendungen sich in Code Engine wie zu Hause fühlen.

Ziele

  • Lernen Sie die Gemeinsamkeiten zwischen Code Engine und Heroku kennen.
  • Hier erfahren Sie mehr über den allgemeinen Prozess der Bereitstellung von Apps in Code Engine.
  • Stellen Sie eine Anwendung aus dem Code auf Ihrem lokalen System mit Code Engine bereit.

Sehen Sie sich das Tutorial auf YouTube an. Heroku-App in IBM Cloud Code Engine bereitstellen.

Voraussetzungen

Bevor Sie mit Code Engine beginnen können, müssen Sie Ihr Konto einrichten und die CLI installieren.

  • Alle Code Engine-Benutzer müssen über ein nutzungsabhängiges Konto verfügen.

  • Während Sie Code Engine über die Konsole verwenden können, konzentrieren sich die Beispiele in dieser Dokumentation auf die Befehlszeile. Daher müssen Sie die Code Engine-CLI installieren.

    ibmcloud plugin install code-engine
    

    Weitere Informationen finden Sie unter Code Engine-Benutzerschnittstelle einrichten. Weitere Informationen zur CLI finden Sie unter Code Engine-CLI-Referenz.

Vergleich der Terminologie von Heroku und Code Engine

Bevor Sie mit der Bereitstellung von Anwendungen in Code Engine beginnen, lernen Sie die Grundlagen über Code Engine. In der folgenden Tabelle werden einige grundlegende terminologische Unterschiede zwischen Cloud Foundry und Code Engine beschrieben.

Terminologie
Heroku Code Engine Beschreibung
Nicht zutreffend Ressourcengruppe und Projekte Eine Gruppierung von Workloads. Die spezifische Auswahl, welche Workload in jede Gruppierung aufgenommen wird, wird vom Benutzer definiert. "Ressourcengruppen" sind ein IBM Cloud-Konzept, während "Projekte" spezifisch für Code Engine sind. Projekte bieten eine Isolationsstufe zwischen Workloads. Siehe Projekte verwalten.
Dynos Container Ein dyno ist ein leichter Container, der Ihren Heroku-Code ausführt und für Sie verwaltet wird. In Code Enginebasieren die zugrunde liegenden Container auf Kubernetes und werden automatisch für Sie verwaltet.
Anwendung Anwendung (App) Eine Arbeitslast, die auf HTTP Anfragen, z. B. von einer REST-API, einer Webseitenanfrage oder einem Ereignis, reagiert. Code Engine erfordert, dass Anwendungen den HTTP Server als Teil des Codes einbeziehen. Code Engine Anwendungen skalieren automatisch (nach oben und unten) auf der Grundlage der eingehenden Last. Sie können bei Bedarf die minimale und die maximale Skalierung konfigurieren. Standardmäßig lauscht die Anwendung auf Port 8080. Sie können dieses Verhalten überschreiben, indem Sie die Konsole oder das --port-CLI-Flag verwenden. Siehe Mit Apps in Code Engine arbeiten.
Nicht zutreffend Job oder Batch-Job 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. Siehe Mit Jobs und Jobausführungen arbeiten.
heroku create und git push heroku main oder heroku container:push web app create Der Prozess zum Erstellen einer Anwendung. Mit Heroku erstellen Sie eine App und übertragen dann Ihren Code darauf. Ihr Code wird in diesem einzigen Schritt erstellt und bereitgestellt. Mit Code Engine können Sie mit einem einzigen Befehl ein Container-Image aus einem Image-Repository beziehen, Ihren Quellcode aus einem Repository wie GitHub, erstellen oder Ihren Code aus einer lokalen Datei auf Ihrem System beziehen. Sie können Code auf der Grundlage einer Dockerdatei oder eines Paketo-Buildpacks erstellen. Sie können einen Build in einem einzelnen Schritt in der Befehlszeilenschnittstelle oder aus der Code Engine-Konsole erstellen. Siehe Build planen.
Angepasste Domänen Angepasste Domänenzuordnung Mit beiden Services können Sie externe URLs für Ihre Workloads definieren und verwalten. Code Engine unterstützt angepasste Domänenzuordnungen über die Konsole. Sie können angepasste Domänen auch über IBM Cloud Internet Services oder einen anderen Domänenprovider Ihrer Wahl hinzufügen.

Weitere Bedingungen und Funktionen für Code Enginefinden Sie unter Informationen zu Code Engine.

Melden Sie sich bei IBM Cloud an.

Führen Sie die folgenden Schritte aus, um sich bei Ihrem IBM Cloud-Konto anzumelden und eine Ressourcengruppe als Ziel auszuwählen.

  1. Melden Sie sich bei der IBM Cloud-CLI an.

    ibmcloud login
    
  2. Führen Sie den folgenden Befehl aus, um eine Ressourcengruppe als Ziel festzulegen. Führen Sie ibmcloud resource groups aus, um eine Liste Ihrer Ressourcengruppen abzurufen.

    ibmcloud target -g <resource_group>
    

    Beispielausgabe

    Targeted resource group default
    

Projekt erstellen

Ein Code Engine "Projekt" gruppiert zusammengehörige Workloads in einer logischen Objektgruppe. Sie können Workloads nach beliebigen Kriterien in verschiedene Projekte gruppieren, z. B. nach der Organisationsstruktur des Unternehmens, nach Abhängigkeiten zwischen den Workloads oder nach Entwicklungs-, Test- und Produktionsumgebungen. Anschließend können Sie den Zugriff auf diese Projekte konfigurieren. Beachten Sie, dass Workloads in einem einzelnen Projekt ein privates Netz gemeinsam nutzen und innerhalb der Sicherheitsgrenze des Projekts isoliert sind. Alle Workloads innerhalb eines Projekts können frei miteinander kommunizieren, ohne dass sie von Workloads außerhalb des Clusters gesehen werden müssen. Wenn Workloads in verschiedenen Projekten miteinander kommunizieren möchten, muss die Datenübertragung entweder das Internet oder ein internes privates IBM-Netz verwenden. Weitere Informationen finden Sie unter Optionen für die Sichtbarkeit einer Code Engine-Anwendung.

Erstellen Sie in Code Engine ein Projekt namens sample-proj.

ibmcloud ce project create --name sample-proj

Beispielausgabe

Creating project 'sample-proj'...
ID for project 'sample-proj' is 'abcdabcd-abcd-abcd-abcd-abcd12e3456f7'.
Waiting for project 'sample-proj' to be active...
Now selecting project 'sample-proj'.
OK

Beachten Sie, dass Ihr Projekt auch für den Kontext ausgewählt ist, sodass alle nachfolgenden anwendungsbezogenen Befehle im Geltungsbereich dieses neuen sample-proj-Projekts liegen.

Anwendung implementieren

Diese Beispielanwendung extrahiert Code aus dem Beispielrepository GitHub. Dieser Code ist eine einfache Push-Operation für Ihren Code an Code Engine mit dem Befehl application create. Sie müssen einen Namen für Ihre Anwendung und die Position des Quellcodes angeben. Im folgenden Beispiel wird eine Anwendung mit dem Namen myapp erstellt, die die Strategie buildpack verwendet und den Speicherort für den Quellcode im aktuellen Verzeichnis (.) angibt.

ibmcloud ce app create --name myapp --build-source https://github.com/IBM/heroku-to-code-engine

Beispielausgabe

Creating application 'myapp'...
Packaging files to upload from source path '.'...
Submitting build run 'myapp-run-220999-210706331'...
Creating image 'private.us.icr.io/ce--6ef04-khxrbwa0lci/app-myapp:220418-0207-askql'...
Waiting for build run to complete...
Build run status: 'Running'
Build run completed successfully.
Run 'ibmcloud ce buildrun get -n myapp-run-220000-210706331' to check the build run status.
Waiting for application 'myapp' to become ready.
Configuration 'myapp' is waiting for a Revision to become ready.
Ingress has not yet been reconciled.
Waiting for load balancer to be ready.
Run 'ibmcloud ce application get -n myapp' to check the application status.
OK

https://myapp.abcdbwa0lci.us-south.codeengine.appdomain.cloud

Das ist alles. Sie haben jetzt eine mit dem Internet verbundene Anwendung. Der Code in der Anwendung selbst ist derselbe wie bei einer Heroku-Anwendung, nur die Code Engine Befehle sind etwas anders.

Sehen wir uns den vorherigen Befehl app create genauer an. Beachten Sie, dass die Ausgabe des app create befehls Informationen über den Verlauf des Build-Laufs liefert, bevor die Anwendung erstellt und bereitgestellt wird.

  1. Code Engine empfängt eine Anfrage zur Erstellung einer Anwendung aus Quellcode (anstatt sie direkt aus einem Image zu extrahieren).
  2. Code Engine sucht nach einer IAM-Service-ID und einem API-Schlüssel, die mit dem ausgewählten Projekt verknüpft sind. Diese Service-ID muss zum Lesen und Schreiben auf IBM Cloud Container Registry berechtigt sein. Wenn keine Service-ID vorhanden ist, erstellt Code Engine eine ID für Sie. Beachten Sie, dass diese Service-ID für nachfolgende Code Engine-Build-Anforderungen verwendet wird, die von demselben Projekt ausgeführt werden.
  3. In diesem Beispiel wird Code aus einem öffentlichen Repository GitHub (--build-source https://github.com/IBM/heroku-to-code-engine) erstellt. Der Quellcode wird in eine Archivdatei gepackt und in einen verwalteten Namespace innerhalb der Instanz IBM Cloud Container Registry in Ihrem Konto hochgeladen. Beachten Sie, dass Sie nur IBM Cloud Container Registry für Ihre lokalen Builds verwenden können. Weitere Informationen zu IBM Container Registry, einschließlich Informationen zu Kontingenten und Zugriffsbeschränkungen, finden Sie unter Erste Schritte mit IBM Cloud Container Registry.
  4. Code Engine erstellt Ihren Quellcode in einem Image. Das Quellen-Image wird in demselben Namensbereich wie Ihre Quellenarchivdatei erstellt.
  5. Nachdem der Build abgeschlossen ist, wird Ihre Anwendung implementiert. Sie können über die bereitgestellte URL auf Ihre Anwendung zugreifen.

Mit Code Engine erhalten Sie automatisch viele der gleichen Funktionen wie Heroku, wie z. B. automatische Skalierung und Blue-Green-Rollout von Updates, aber Sie genießen auch die Vorteile neuerer Funktionen, wie z. B. die Skalierung auf Null, die sicherstellt, dass Sie nicht belastet werden, wenn Ihre Anwendung nicht aktiv ist.

Möchten Sie mehr über Ihre Optionen zur Erstellung Ihres Quellcodes erfahren? Weitere Informationen finden Sie in den Beschreibungen der Befehle application create und job create.

Möchten Sie mehr über Anwendungen und Jobs erfahren? Siehe Mit Apps in Code Engine arbeiten und Mit Jobs und Jobausführungen arbeiten.

Bereinigen

Nach Beendigung dieses Lernprogramms können Sie die Ressourcen, die Sie erstellt haben, mit den folgenden Befehlen löschen.

Anwendung löschen

ibmcloud ce app delete --name myapp

Wenn Sie Ihre App löschen, werden auch die zugehörigen Build-Dateien gelöscht.

Löschen Sie zuletzt die Images, die der Build aus IBM Cloud Container Registry erstellt hat.

  1. Navigieren Sie in der IBM Cloud-Konsole zu Registry.
  2. Suchen Sie das Archiv und das Image, die Ihrer Anwendung zugeordnet sind, indem Sie nach Ihrem Anwendungsnamen suchen.
  3. Wählen Sie das Archiv und das Image aus und löschen Sie sie.

Videomitschrift

Hallo, mein Name ist JJ Asghar und ich bin Entwickleranwalt für IBM Cloud. Vor kurzem haben Sie vielleicht gehört, über Heroku Änderung ihrer Politik auf kostenlos-die kostenlose Stufe. Es stellt eine Herausforderung für viele Entwickler dar. Ich möchte Ihnen hier einige Momente zeigen, wie Sie in wenigen Schritten von Heroku auf Code Engine von IBM Cloud migrieren können. Lassen Sie uns also beginnen, damit umzugehen und zu sehen, wie schnell Sie Ihr System tatsächlich funktionieren lassen können.

Also zuerst, wenn Sie es nicht gesehen haben, ist dies die tatsächliche Zeile innerhalb des offiziellen Blog von Heroku, ab dem 28. November 2022, wir planen, kostenlos zu stoppen-Angebot der kostenlosen Produktpläne und Plan zum Herunterfahren der kostenlosen Dynos und Datendienste. Wir senden eine Reihe von E-Mail-Mitteilungen an die betroffenen Benutzer. Dies ist eine Herausforderung für viele Anfänger Anfänger Web-Anwendungen. Ich weiß, für eine Tatsache persönlich habe ich Heroku verwendet, als ich zum ersten Mal wieder in den Tag begann, so dass dies ein ziemlich großer Hit für viele Menschen ist und ich möchte Ihnen zeigen, wie einfach es ist, von Heroku zu konvertieren Code Engine.

Lassen Sie uns zuerst eine nette kleine Anwendung sehen, die ich erstellt habe. Wenn ich meine Anwendung hier starte, haben wir eine nette kleine Flask-Anwendung. Wenn Sie nicht wissen, was Python ist oder Flask ist, ist es ein Format für Python, eine Anwendung an einem Standardport ausführen zu können. Nehmen wir an, wir haben diese Anwendung, sie sagt "Hello World!". Ich habe es bereits bereitgestellt und wir können uns hier informieren. Wir haben unsere erstaunliche Produktions-App unter heroku.com. Es heißt "hallo Welt" und wir wollen weiter gehen und es ändern. Wir wollten es aktualisieren, also werde ich es schnell auf "Hello Moving from Heroku to Code Engine" aktualisieren.

Gehen wir weiter und kommen aus ihm heraus. git add . git commit -m “update hello line” Dann werde ich weiter gehen und drücken und genau wie Sie normalerweise tun würden, um Code nach Heroku zu schieben. Ich möchte Ihnen zeigen, dass dies genau derselbe Prozess innerhalb von Code Engineist. Wir erstellen ein neues Projekt. Wir melden uns zuerst bei IBM Cloud an. Von dort aus erstellen wir ein neues Projekt und stellen es dann bereit, damit es funktioniert.

Wir haben sie zuerst in Heroku bereitgestellt, nur um sicherzustellen, dass wir alle unseren Arbeitscode haben. Ich lade sie erneut und wir wechseln von Heroku zu Code Engine, damit wir wissen, dass unser Code funktioniert. Das ist großartig.

Lassen Sie uns jetzt Code Engine als Teil davon abrufen. Zuerst müssen wir uns also IBM Cloud anmelden. Ich melde mich jetzt bei IBM Cloudan. Wenn Sie kein IBM Cloud-Video eingerichtet haben oder wenn Sie Ihr IBM Cloud-Konto nicht eingerichtet haben, sollten Sie einen Link dazu sehen, den ich in das Video einfügen werde.

Ich kopiere meinen Namen hier und dann nehme ich mein Passwort, logge mich ganz gut ein, was toll zu sehen ist, perfekt. Und jetzt werde ich ibmcloud ce project create —name amazing product production app tun. Das schafft also unser nettes, kleines ... Ziel zuerst. Ich erhalte meine Standardressourcengruppe und erstelle dann das Projekt. Dort gehen wir hin. Sollte nur einen Moment dauern-perfekt. Jetzt können Sie Ihren Namen in das ändern, was Sie möchten. Dies ist nur ein Catch-all für Ihr Projekt, was nützlich ist. Dann nehme ich den nächsten Befehl: ibmcloud ce app create —name pythonbackend — build-source . —strategy build packs

Da ich jetzt bereits eine requirements.txt-Datei habe, ist diese Anwendung intelligent genug, um herauszufinden, " hey, es ist eine Python-Anwendung! Also machen wir weiter und bauen es! ", was schön ist. Wie Sie sehen können, geht es hier um Schritt eins. Der Build läuft, was gut ist. Es schafft auch für uns ein schönes, privates Image, das nützlich ist. Es dauert ein paar Augenblicke. Dort gehen wir hin und jetzt sehen wir, dass wir, wenn wir dies ohne Wartezeit tun wollten, was das -nw ist, dies in den Hintergrund stellen und warten können, bis es kommt, und dann können wir es über diesen build run get den tatsächlichen Namen überprüfen. Da wir uns das live ansehen werden, werden wir das hier tun.

Perfekt! Jetzt öffne ich also diese URL hier, und wie Sie sehen können, kam sie hierher

"hallo Umzug von Heroku nach Code Engine"

Das ist alles. Ich nahm genau den gleichen Code, den ich von Heroku tat. Ich habe ein neues Projekt erstellt und dann habe ich eine Anwendung erstellt. Ich habe sie gerade verschoben und sie hat funktioniert. Stellen Sie sich vor, was Sie damit für sich selbst tun können. Dies zeigt die Leistung, die Code Engine ist, und auf einer kostenlosen Stufe ist sie wirklich frei-genau wie Heroku in der Zukunft war oder sein wird oder werden wird. Code Engine ist für immer kostenlos, was großartig ist und hoffentlich Ihr Leben ein wenig einfacher macht.

Vielen Dank für Ihre Teilnahme und wenn Sie Fragen haben, ist mein Twitter-Handle @jjasghar oder Sie sind mehr als willkommen, mir eine E-Mail an awesome@ibm.com. Mein Job ist es, ein sympathisches Nerd zu sein, also zögern Sie nicht, sich zu wenden.

Vielen Dank.

Auf Wiedersehen.