Introduzione alla migrazione da Heroku a Code Engine
Diamo il benvenuto agli utenti di Heroku su IBM Cloud® Code Engine.
Code Engine è una piattaforma completamente gestita, senza server che esegue i tuoi carichi di lavoro inseriti nel contenitore. Code Engine crea anche le immagini del contenitore per te dal codice sorgente. L'esperienza di Code Engine è progettata in modo che ci si possa concentrare sulla scrittura del codice e non sull'infrastruttura necessaria per ospitarlo.
Code Engine è stato progettato con i seguenti obiettivi chiave in mente.
- Concentrati sul tuo codice. Code Engine fornisce un'esperienza di sviluppo semplificata. Non è necessario conoscere o gestire l'infrastruttura sottostante.
- Supporto delle caratteristiche di runtime moderne, come il ridimensionamento automatico, il ridimensionamento a zero quando inattivo e l'integrazione completa con i servizi gestiti e la sicurezza.
- Supporta tutte le tue applicazioni basate su cloud - native, sia che si tratti di applicazioni a 12 fattori, funzioni guidate dagli eventi o lavori batch run - to - completion. Se può essere inserito in un contenitore, Code Engine può eseguirlo.
- Paga solo le risorse che utilizzi effettivamente.
Se si proviene da uno sfondo Heroku, molte di queste caratteristiche suonano familiari. Tuttavia, Code Engine include anche alcune nuove funzionalità che ti consentono di andare oltre anche le offerte di Heroku, incluse applicazioni che possono scalare a zero e non comportano alcun addebito. Inoltre, Code Engine richiede un account Pay - as - you - Go che include un livello gratuito. Quindi, una volta superata la differenza sintattica dell'esperienza utente, tu e le tue applicazioni vi sentirete come a casa in Code Engine.
Obiettivi
- Scopri le similitudini tra Code Engine e Heroku.
- Impara il processo generale di distribuzione delle applicazioni in Code Engine.
- Distribuisci un'applicazione dal codice sul tuo sistema locale con Code Engine.
Guardate il tutorial su YouTube. Distribuire l'applicazione Heroku in IBM Cloud Code Engine.
Prerequisiti
Prima di iniziare a utilizzare Code Engine, devi configurare il tuo account e installare la CLI.
-
Tutti gli utenti Code Engine devono avere un account Pagamento a consumo.
-
Mentre puoi utilizzare Code Engine tramite la console, gli esempi in questa documentazione si concentrano sulla riga di comando. Pertanto, devi installare la CLI Code Engine.
ibmcloud plugin install code-enginePer ulteriori informazioni, vedi Configurazione della CLI Code Engine. Per ulteriori informazioni sulla CLI, vedi Riferimento alla CLICode Engine.
Confronto tra la terminologia di Heroku e Code Engine
Prima di iniziare a distribuire le applicazioni in Code Engine, impara le informazioni di base su Code Engine. La seguente tabella descrive alcune differenze di terminologia di alto livello tra Cloud Foundry e Code Engine.
| Heroku | Code Engine | Descrizione |
|---|---|---|
| N/D | Gruppo di risorse e progetti | Un raggruppamento di workload. La scelta specifica del carico di lavoro da utilizzare in ciascun raggruppamento è definita dall'utente. I "gruppi di risorse" sono un concetto IBM Cloud, mentre "progetti" sono Code Engine specifici. I progetti forniscono un livello di isolamento tra i workload. Consultare Gestione dei progetti. |
| Dinamo | Containers | Un dyno è un contenitore leggero che esegue il vostro codice Heroku ed è gestito per voi. In Code Engine, i contenitori sottostanti si basano su Kubernetes e vengono gestiti automaticamente. |
| Applicazione | Applicazione (APP) | Un carico di lavoro che risponde a HTTP richieste provenienti, ad esempio, da un'API REST, da una richiesta di pagina web o da un evento. Code Engine richiede che le applicazioni includano il server HTTP come parte del codice. Code Engine
applicazioni scalano automaticamente (in aumento e in diminuzione) in base al carico in arrivo. È possibile configurare la scala minima e massima, se necessario. Per impostazione predefinita, l'applicazione è in ascolto sulla porta 8080.
Puoi sovrascrivere questo comportamento utilizzando la console o con l'indicatore CLI --port. Vedere Lavorare con le applicazioni in Code Engine. |
| N/D | Lavoro o lavoro batch | Un lavoro esegue una o più istanze del codice eseguibile in parallelo. A differenza delle applicazioni, che gestiscono le richieste di HTTP, i lavori sono progettati per essere eseguiti una sola volta e poi terminati. Quando si crea un job, è possibile specificare le informazioni di configurazione del workload che vengono utilizzate ogni volta che il job viene eseguito. Consultare la sezione Gestione dei lavori e delle esecuzioni di lavori. |
heroku create e git push heroku main o heroku container:push web |
app create |
Il processo di creazione di un'applicazione. Con Heroku, crei un'app e poi inserisci il tuo codice. Il tuo codice viene creato e distribuito in quel singolo passo. Con Code Engine, è possibile estrarre l'immagine di un contenitore da un repository di immagini, costruire il codice sorgente da un repository come GitHub, o estrarre il codice da un file locale sul sistema, il tutto con un unico comando. Puoi creare del codice basato su un Dockerfile o che utilizza un pacchetto di build Paketo. Puoi eseguire la build da un singolo passo nella CLI e dalla console Code Engine. Consultare Pianificazione della build. |
| Domini personalizzati | Associazione dominio personalizzato | Entrambi i servizi ti consentono di definire e gestire gli URL esterni ai tuoi carichi di lavoro. Code Engine fornisce supporto per associazioni di domini personalizzati dalla console. Puoi anche aggiungere domini personalizzati tramite IBM Cloud Internet Services o qualsiasi altro fornitore di dominio di tua scelta. |
Per ulteriori termini e funzionalità per Code Engine, vedi Ulteriori informazioni su Code Engine.
Accedi a IBM Cloud
Attieniti alla seguente procedura per accedere al tuo account IBM Cloud e specificare un gruppo di risorse.
-
Accedi alla CLI IBM Cloud.
ibmcloud login -
Specifica un gruppo di risorse immettendo il seguente comando: Per ottenere un elenco dei gruppi di risorse, eseguire
ibmcloud resource groups.ibmcloud target -g <resource_group>Output di esempio
Targeted resource group default
Creazione di un progetto
Un Code Engine "progetto" raggruppa i carichi di lavoro correlati in una raccolta logica. È possibile raggruppare i carichi di lavoro in diversi progetti in base a qualsiasi criterio che abbia senso per l'utente, ad esempio, la struttura dell'organizzazione aziendale, le dipendenze tra i carichi di lavoro o gli ambienti di sviluppo e di test e di produzione. È quindi possibile configurare l'accesso a questi progetti. Tieni presente che i carichi di lavoro in un singolo progetto condividono una rete privata e sono isolati entro il limite di sicurezza del progetto. Tutti i carichi di lavoro all'interno di un progetto possono comunicare liberamente tra loro senza preoccuparsi di essere visti da carichi di lavoro esterni al cluster. Se i carichi di lavoro in diversi progetti desiderano comunicare tra loro, la comunicazione deve utilizzare Internet o una rete privata IBM interna. Per ulteriori informazioni, vedi Opzioni per la visibilità per un'applicazione Code Engine.
Crea un progetto in Code Engine denominato sample-proj.
ibmcloud ce project create --name sample-proj
Output di esempio
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
Si noti che il progetto è selezionato anche per il contesto, quindi tutti i comandi successivi relativi all'applicazione rientrano nell'ambito di questo nuovo progetto sample-proj.
Distribuzione dell'applicazione
Questa applicazione di esempio estrae il codice dal repository GitHub di esempio. Questo codice è un semplice Push del codice in Code Engine utilizzando
il comando application create. È necessario fornire un nome per l'applicazione e l'ubicazione del codice origine. Il seguente esempio crea un'applicazione denominata myapp che utilizza la strategia
di buildpack e fornisce l'ubicazione per il codice sorgente nella directory corrente (.).
ibmcloud ce app create --name myapp --build-source https://github.com/IBM/heroku-to-code-engine
Output di esempio
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
E questo è tutto. Ora si dispone di un'applicazione rivolta a Internet. Il codice nell'applicazione stessa è lo stesso di quello utilizzato per un'applicazione Heroku, sono solo i comandi Code Engine che sono leggermente differenti.
Diamo un'occhiata più a fondo al precedente comando app create. Nota che l'output del comando app create fornisce informazioni sull'avanzamento dell'esecuzione della build prima che
l'applicazione venga creata e distribuita.
- Code Engine riceve una richiesta di creare una applicazione dal codice sorgente (invece di eseguire il pull direttamente da una immagine).
- Code Engine controlla un ID servizio IAM e una chiave API associati al progetto selezionato. Questo ID servizio deve essere autorizzato a leggere e scrivere in IBM Cloud Container Registry. Se non esiste alcun ID servizio, Code Engine ne crea uno per te. Nota che questo ID servizio viene utilizzato per le successive richieste di build Code Engine eseguite dallo stesso progetto.
- Questo esempio crea il codice da un repository GitHub pubblico (
--build-source https://github.com/IBM/heroku-to-code-engine). Il codice di origine viene compresso in un file di archivio e caricato in uno spazio dei nomi gestito all'interno dell'istanza IBM Cloud Container Registry nel tuo account. Nota che puoi indicare come destinazione solo IBM Cloud Container Registry per le tue build locali. Per ulteriori informazioni su IBM Container Registry, comprese le informazioni sui limiti di quota e sull'accesso, vedere Operazioni preliminari con IBM Cloud Container Registry. - Code Engine crea il tuo codice sorgente in un'immagine. L'immagine di origine viene creata nello stesso spazio dei nomi del file di archivio di origine.
- Una volta completata la creazione, la tua applicazione viene distribuita. È possibile accedere alla propria applicazione dal sito URL.
Con Code Engine, ottieni automaticamente molte delle stesse funzioni di Heroku, come il ridimensionamento automatico e il roll-out blu - verde degli aggiornamenti, ma potrai anche usufruire dei benefici delle funzioni più recenti come il ridimensionamento a zero, assicurandoti di non essere addebitato se la tua applicazione non è attiva.
Vuoi saperne di più sulle tue opzioni per la creazione del codice sorgente? Consultare application create e i comandi job create.
Vuoi saperne di più su applicazioni e lavori? Vedi Gestione delle applicazioni in Code Engine e Gestione di lavori e esecuzioni di lavori.
Ripulisci
Una volta terminata questa esercitazione, è possibile ripulire le risorse create con i seguenti comandi.
Elimina la tua applicazione
ibmcloud ce app delete --name myapp
Quando elimini la tua applicazione, vengono eliminati anche i file di build associati.
Infine, elimina le immagini che la build ha creato da IBM Cloud Container Registry.
- Passa a Registry nella console IBM Cloud.
- Trova l'archivio e l'immagine associati alla tua applicazione ricercando il tuo nome applicazione.
- Selezionare l'archivio e l'immagine ed eliminare.
Trascrizione video
Ciao, sono JJ Asghar e sono un sostenitore degli sviluppatori di IBM Cloud. Recentemente, potresti aver sentito parlare di Heroku che cambia la loro politica sul libero - il libero livello. Sta causando una sfida per molti sviluppatori, quindi voglio prendere una manciata di minuti qui per mostrarti come puoi migrare da Heroku a Code Engine da IBM Cloud in pochi passi. Quindi andiamo avanti e iniziamo a giocare con esso e vedere quanto velocemente si può effettivamente far funzionare il sistema.
Quindi, prima di tutto, se non l'avete visto questa è la linea reale all'interno del blog ufficiale di Heroku, a partire dal 28 novembre 2022, abbiamo intenzione di fermarci gratuitamente - offrendo i piani di prodotto gratuiti e pianificare la chiusura dei dynos e dei servizi di dati gratuiti. Invieremo una serie di comunicazioni email agli utenti interessati. Questo è impegnativo per un sacco di principianti applicazioni web. So per un fatto personale che ho usato Heroku quando ho iniziato per la prima volta nel corso della giornata, quindi questo è un successo abbastanza grande per molte persone e voglio mostrarvi quanto sia facile convertire da Heroku a Code Engine.
Prima di tutto, vediamo una bella piccola applicazione che ho creato. Se vado avanti e avvio la mia applicazione qui, abbiamo una piccola applicazione Flask. Se non sai cos' è python o un pallone, è un formato che consente a python di eseguire un'applicazione su una porta standard. Quindi, diciamo che abbiamo questa applicazione; dice "Hello World!". L'ho già distribuita e possiamo controllare qui. Abbiamo la nostra fantastica app di produzione all'indirizzo heroku.com. Dice "ciao mondo" e vogliamo andare avanti e cambiarlo. Volevamo aggiornarlo in modo da andare avanti e aggiornarlo rapidamente in "Hello Moving from Heroku to Code Engine".
Andiamo avanti e ne usciamo. git add . git commit -m “update hello line”. Poi vado avanti e spingo e proprio come si farebbe di solito per spingere il codice a Heroku. Desidero mostrare che questo è esattamente lo stesso
processo all'interno di Code Engine. Quello che faremo è creare un nuovo progetto ... prima accederemo a IBM Cloud e poi da lì creeremo un nuovo progetto e poi andremo avanti e lo distribuiremo per vedere che funziona.
Quindi, ci siamo andati avanti e lo abbiamo implementato prima su Heroku, solo per assicurarci che tutti noi abbiamo il nostro codice di lavoro e io vado avanti e ricarichiamo questo e lì ci spostiamo da Heroku a Code Engine in modo da sapere che il nostro codice funziona. Questo è fantastico.
Quindi ora otteniamo Code Engine come parte di questo, quindi prima di tutto, dobbiamo eseguire l'accesso a IBM Cloud. Quindi vado avanti e accedo a IBM Cloud. Se non hai configurato il video IBM Cloud o se non hai configurato il tuo account IBM Cloud, se guardi sopra, dovresti vedere un link ad esso, che inserirò nel video.
Andrò avanti e copierò il mio nome qui e poi prenderò la mia password, accederò bene, il che è fantastico da vedere, perfetto. E ora quello che farò è ibmcloud ce project create —name amazing product production app. Quindi questo
crea la nostra bella, piccola ... Destinazione prima. Otterrò il gruppo di risorse predefinito e poi andrò avanti e creerò il progetto. Ecco a noi. Dovrebbe prendere solo un momento - perfetto. Ora puoi cambiare il tuo nome con quello che
ti piace. Questo è solo un catch-all per il vostro progetto, che è utile. Quindi eseguo il comando successivo, che è ibmcloud ce app create —name pythonbackend — build-source . —strategy build packs
Ora perché ho già un requirements.txt, questo sarà, questa applicazione è abbastanza intelligente per capire, " hey è un'applicazione python! Quindi andiamo avanti e costruiamola! ", che è bello. Quindi, come potete vedere, sta facendo
il primo passo qui. Sta eseguendo la build, che è buona. Crea una bella immagine privata anche per noi, che è utile. Ci vogliono un paio di minuti. Lì andiamo e ora vediamo che se vogliamo farlo senza aspettare, che è il -nw,
possiamo mettere questo in background e aspettare che venga fuori e poi possiamo controllarlo tramite questo build run get il vero nome. Dato che stiamo andando a guardare questo live, andremo avanti e lo faremo qui.
Perfetto! Ora vado avanti e apro questo URL, che è arrivato qui e come si può notare
"ciao a passare da Heroku a Code Engine"
E questo è tutto. Ho preso lo stesso codice che ho fatto da Heroku. Ho creato un nuovo progetto e poi ho creato un'applicazione e l'ho semplicemente spinta e ha funzionato, quindi immaginate cosa potete fare con questo per voi stessi. Questo mostra la potenza che è Code Engine e su un livello gratuito è veramente gratuito - proprio come Heroku era o sarà o non sarà in futuro. Code Engine è gratuito per sempre, il che è fantastico e, si spera, renderà la tua vita un po' più facile.
Grazie mille per aver guardato e se hai domande, il mio handle di Twitter è @jjasghar o sei più che benvenuto a inviarmi un'email a awesome@ibm.com. Il mio lavoro è quello di essere un nerd simpatico, quindi non esitare mai a contattarci.
Grazie mille.
Ciao a tutti.