IBM Cloud Docs
Démarrer la migration de Heroku vers Code Engine

Démarrer la migration de Heroku vers Code Engine

Bienvenue les utilisateurs Heroku dans IBM Cloud® Code Engine.

Code Engine est une plateforme entièrement gérée et sans serveur qui exécute vos charges de travail conteneurisées. Code Engine génère même des images de conteneur pour vous à partir de votre code source. L'expérience Code Engine est conçue de sorte que vous puissiez vous concentrer sur écrire votre code et non sur l'infrastructure requise pour l'héberger.

Code Engine a été conçu avec pour mission de satisfaire aux objectifs clés suivants

  • Se focaliser sur votre code. Code Engine offre une expérience de développeur simplifiée. Il n'est pas nécessaire de connaître ou de gérer l'infrastructure sous-jacente.
  • Prend en charge des caractéristiques d'exécution modernes, tels que la mise à l'échelle automatique, la mise à l'échelle à zéro lorsqu'il est inactif, et l'intégration transparente avec les services gérés et la sécurité.
  • Prise en charge de toutes vos applications basées sur le cloud, qu'il s'agisse d'applications à 12 facteurs, de fonctions pilote-événement ou de travaux par lots à exécuter. Si cela peut être conteneurisée, Code Engine peut l'exécuter.
  • Payez uniquement pour les ressources que vous utilisez réellement.

Si vous venez d'Heroku, beaucoup de ces fonctionnalités vous sembleront familières. Cependant, Code Engine comprend également de nouvelles fonctionnalités qui vous permettent d'aller au-delà de ce qu'offre Heroku, y compris des applications qui peuvent être mises à l'échelle zéro et ne pas encourir de frais. De plus, Code Engine requiert un compte Paiement à la carte qui inclut un niveau gratuit. Ainsi, après avoir assimilé la différence de syntaxe concernant l'expérience utilisateur, vous et vos applications vous sentirez à l'aise en utilisantCode Engine.

Objectifs

  • Découvrez les similitudes entre Code Engine et Heroku.
  • Découvrez le processus général de déploiement d'applications dans Code Engine.
  • Déployez une application à partir du code sur votre système local avec Code Engine.

Prérequis

Avant de commencer à utiliser Code Engine, vous devez configurer votre compte et installer l'interface de ligne de commande.

Comparaison de la terminologie d'Heroku et de Code Engine

Avant de commencer à déployer des applications dans Code Engine, apprenez les bases de Code Engine. Le tableau suivant décrit quelques différences terminologiques de haut niveau entre Cloud Foundry et Code Engine

Terminologie
Heroku Code Engine Description
N/A Groupe de ressources et projets Un regroupement de charges de travail. Le choix spécifique de la charge de travail entrant dans chaque regroupement est défini par l'utilisateur. Les "groupes de ressources" sont un concept IBM Cloud, tandis que les "projets" sont une notion spécifique à Code Engine . Les projets fournissent un niveau d'isolement entre les charges de travail. Voir Gestion des projets.
Dynos Conteneurs Un dyno est un conteneur léger qui exécute votre code Heroku et qui est géré pour vous. Dans Code Engine, les conteneurs sous-jacents sont basés sur Kubernetes et sont automatiquement gérés pour vous.
Application Application (APP) Charge de travail qui répond aux demandes HTTP à partir d'une API REST, d'une demande de page Web ou d'un événement, par exemple. Code Engine requiert que les applications incluent le serveur HTTP dans le code. Les applications Code Engine sont automatiquement mises à l'échelle (vers le haut et vers le bas) en fonction de la charge entrante. Vous pouvez configurer l'échelle minimale et maximale si nécessaire. Par défaut, l'application écoute sur le port 8080. Vous pouvez remplacer ce paramètre à l'aide de la console ou de l'indicateur --port CLI. Voir Utilisation d'applications dans Code Engine.
N/A Travail ou travail par lots Un job exécute une ou plusieurs instances de votre code exécutable en parallèle. Contrairement aux applications qui gèrent les demandes HTTP, les travaux sont conçus pour s'exécuter une seule fois et prendre fin. Lorsque vous créez un travail, vous pouvez spécifier les informations de configuration de charge de travail qui sont utilisées à chaque fois que le travail est exécuté. Voir Utilisation des travaux et des exécutions de travail.
heroku create et git push heroku main ou heroku container:push web app create Processus de création d'une application. Avec Heroku, vous créez une application, puis vous y envoyez votre code. Votre code est généré et déployé en une seule étape. Avec Code Engine, vous pouvez extraire une image de conteneur d'un référentiel d'images, construire votre code source à partir d'un référentiel tel que GitHub, ou extraire votre code d'un fichier local sur votre système, le tout à partir d'une seule commande. Vous pouvez construire du code basé sur un fichier Docker ou qui utilise un buildpack Paketo. Vous pouvez générer à partir d'une seule étape de l'interface de ligne de commande ainsi que de la console Code Engine. Voir Planification de votre génération.
Domaines personnalisés Mappage de domaine personnalisé Les deux services vous permettent de définir et de gérer des URL externes vers vos charges de travail. Code Engine prend en charge les mappages de domaines personnalisés à partir de la console. Vous pouvez également ajouter des domaines personnalisés via IBM Cloud Internet Services ou tout autre fournisseur de domaine de votre choix.

Pour plus de termes et de fonctionnalités pour Code Engine, voir En savoir plus sur Code Engine.

Connectez-vous à IBM Cloud

Procédez comme suit pour vous connecter à votre compte IBM Cloud et cibler un groupe de ressources.

  1. Connectez-vous à l'interface de ligne de commande IBM Cloud.

    ibmcloud login
    
  2. Ciblez un groupe de ressources en exécutant la commande suivante : Pour obtenir la liste de vos groupes de ressources, exécutez**ibmcloud resource groups**.

    ibmcloud target -g <resource_group>
    

    Exemple de sortie

    Targeted resource group default
    

Création d'un projet

Un projetCode Engine "project" regroupe les charges de travail associées dans une collection logique. Vous pouvez regrouper des charges de travail dans différents projets en fonction des critères qui vous sont propres, par exemple, la structure de l'organisation de l'entreprise, les dépendances entre les charges de travail, ou le développement par rapport aux environnements de test ou de production. Vous pouvez ensuite configurer l'accès à ces projets. N'oubliez pas que les charges de travail d'un même projet partagent un réseau privé et sont isolées à l'intérieur des limites de sécurité du projet. Toutes les charges de travail d'un projet peuvent communiquer librement entre elles sans craindre d'être vues par des charges de travail en dehors du cluster. Si les charges de travail de différents projets veulent communiquer entre elles, la communication doit utiliser Internet ou un réseau privé IBM interne. Pour plus d'informations, voir Options de visibilité pour une application Code Engine.

Créez un projet dans Code Engine appelé sample-proj.

ibmcloud ce project create --name sample-proj

Exemple de sortie

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

Notez que votre projet est également sélectionné pour le contexte, de sorte que toutes les commandes d'application ultérieures se trouveront dans le périmètre de ce nouveau projet sample-proj.

Déploiement de votre application

Cet exemple d'application extrait le code du référentiel GitHub exemple. Ce code est un simple envoi de votre code à Code Engine à l'aide de la commande application create. Vous devez fournir un nom pour votre application et l'emplacement du code source. L'exemple suivant crée une application appelée myapp qui utilise la stratégie buildpack et fournit l'emplacement du code source dans le répertoire courant .

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

Exemple de sortie

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

Et c'est terminé. Vous avez maintenant une application sur Internet. Le code de l'application elle-même est le même que celui utilisé pour une application Heroku, ce sont juste les commandes Code Engine qui sont légèrement différentes.

Examinons plus en détail la commande**app create** précédente. Notez que la sortie de la commande app create fournit des informations sur la progression de l'exécution de la compilation avant que l'application ne soit créée et déployée.

  1. Code Engine reçoit une demande de création d'une application à partir du code source (au lieu d'insérer directement à partir d'une image).
  2. Code Engine recherche un identifiant de service IAM et une clé API associés au projet sélectionné. Cet identifiant de service doit être autorisé à lire et à écrire dans IBM Cloud Container Registry Si aucun ID de service n'existe, Code Engine en crée un pour vous. Notez que cet ID de service est utilisé pour les demandes de génération Code Engine ultérieures qui sont exécutées à partir du même projet.
  3. Cet exemple construit du code à partir d'un dépôt GitHub public --build-source https://github.com/IBM/heroku-to-code-engine). Le code source est compilé dans un fichier d'archive et téléchargé dans un espace de noms géré au sein de l'instance IBM Cloud Container Registry de votre compte. Notez que vous ne pouvez cibler que IBM Cloud Container Registry pour vos générations locales. Pour plus d'informations sur IBM Container Registry, y compris des informations sur les limites de quota et l'accès, voir Initiation à IBM Cloud Container Registry.
  4. Code Engine génère votre code source dans une image. L'image source est créée dans le même espace de nom que votre fichier d'archive source.
  5. Une fois la génération terminée, votre application est déployée. Vous pouvez accéder à votre application à partir de l'URL fournie.

Avec Code Engine, vous bénéficiez automatiquement d'un grand nombre de fonctionnalités identiques à celles d'Heroku, telles que la mise à l'échelle automatique et le déploiement bleu-vert des mises à jour, mais vous profiterez également des avantages de nouvelles fonctionnalités telles que la mise à l'échelle jusqu'à zéro, garantissant que vous n'êtes pas facturé si votre application n'est pas active.

Vous voulez en savoir plus sur vos options pour générer votre code source ? Voir les commandes application create et job create.

Vous voulez en savoir plus sur les applications et les travaux ? Voir Utilisation d'applications dans Code Engine et Utilisation des travaux et des exécutions de travaux.

Nettoyer

Une fois ce tutoriel terminé, vous pouvez nettoyer les ressources que vous avez créées avec les commandes suivantes.

Supprimer votre application

ibmcloud ce app delete --name myapp

Lorsque vous supprimez votre application, les fichiers de génération associés sont également supprimés.

Enfin, supprimez les images créées par la génération à partir de IBM Cloud Container Registry.

  1. Accédez à Registry dans la console IBM Cloud.
  2. Recherchez l'archive et l'image associées à votre application en recherchant votre nom d'application.
  3. Sélectionnez l'archive et l'image et supprimez.

Transcription vidéo

Bonjour, je m'appelle JJ Asghar et je suis un développeur pour IBM Cloud. Récemment, vous avez peut-être entendu parler d'Heroku changer sa politique sur le niveau libre. Cela pose un défi à un grand nombre de développeurs. Je voudrais donc prendre quelques instants ici pour vous montrer comment migrer de Heroku vers Code Engine à partir d' IBM Cloud en quelques étapes. Alors allons de l'avant et commençons à jouer avec et voir à quelle vitesse vous pouvez réellement faire fonctionner votre système.

Donc la première chose d'abord, si vous ne l'avez pas vu, c'est la ligne réelle à l'intérieur du blog officiel de Heroku, à partir du 28 novembre 2022, nous prévoyons d'arrêter d'offrir des plans de produits gratuits et d'arrêter les dynos et les services de données gratuits. Nous enverrons une série de communications par e-mail aux utilisateurs concernés. C'est un défi pour beaucoup d'applications web pour débutants. Je sais personnellement que j'ai utilisé Heroku quand j'ai commencé la journée, donc c'est un succès assez grand pour beaucoup de gens et je veux vous montrer à quel point il est facile de convertir de Heroku à Code Engine.

Donc d'abord, voyons d'abord une petite application que j'ai créée. Si je vais de l'avant et que je présente mon application ici, nous avons une petite application de flacon. Si vous ne savez pas ce qu'est python ou flask, c'est un format qui permet à python d'exécuter une application sur un port standard. Disons donc que nous avons cette application ; elle indique "Hello World !". Je l'ai déjà déployé et nous pouvons le vérifier ici. Nous avons notre incroyable application de production à l'adresse heroku.com. Il dit " bonjour le monde et nous voulons aller de l'avant et le changer. Nous voulions le mettre à jour afin que je puisse le mettre à jour rapidement vers " Hello Moving from Heroku to Code Engine.

Allons-y et sortons de là. git add . git commit -m “update hello line”: Ensuite, je vais aller de l'avant et pousser et comme vous le feriez normalement pour pousser le code à Heroku. Je veux vous montrer qu'il s'agit exactement du même processus dans Code Engine. Ce que nous allons faire, c'est créer un nouveau ... nous allons d'abord nous connecter à IBM Cloud, puis à partir de là, nous allons créer un nouveau projet, puis nous allons le déployer pour voir qu'il fonctionne.

Nous y voilà, nous sommes allés de l'avant et nous l'avons déployé à Heroku en premier, juste pour nous assurer que nous avons tous notre code de travail et je vais le recharger et nous allons passer de Heroku à Code Engine pour que nous sachions que notre code fonctionne. C'est génial.

En fait, nous allons maintenant obtenir Code Engine dans le cadre de cela, donc d'abord, nous devons nous connecter à IBM Cloud. Je vais donc aller de l'avant et me connecter à IBM Cloud. Si vous n'avez pas configuré la vidéo IBM Cloud ou si vous n'avez pas configuré votre compte IBM Cloud, si vous regardez ci-dessus, vous devriez voir un lien vers celle-ci, que je vais placer dans la vidéo.

Je vais aller de l'avant et copier mon nom ici et ensuite je vais prendre mon mot de passe, se connecter très bien, ce qui est génial à voir, parfait. Et maintenant, ce que je vais faire, c'est ibmcloud ce project create —name amazing product production app. Alors ça crée notre gentil, petit ... Cible en premier. Je vais obtenir mon groupe de ressources par défaut, puis je vais aller de l'avant et créer le projet. Nous y voilà. Ne devrait prendre qu'un moment-parfait. Maintenant, vous pouvez changer votre nom en ce que vous voulez. Ce n'est qu'un fourre-tout pour votre projet, ce qui est utile. Ensuite, je vais prendre la commande suivante, qui est ibmcloud ce app create —name pythonbackend — build-source . —strategy build packs

Maintenant que j'ai déjà un fichier requirements.txt, ce sera le cas, cette application est assez intelligente pour comprendre, " hé c'est une application python ! Alors allons-y et construisons-nous ! ", ce qui est bien. Comme vous pouvez le voir, c'est la première étape ici. Il exécute la génération, ce qui est bien. Il crée une image agréable et privée pour nous aussi, ce qui est utile. Ça prend quelques instants. Nous y allons et maintenant, nous voyons que si nous voulions le faire sans attendre, ce qui est le -nw, nous pouvons en fait le mettre en arrière-plan et attendre qu'il arrive et ensuite nous pouvons le vérifier via build run get le nom réel. Etant donné que nous allons regarder ça en direct, nous allons aller de l'avant et faire ça ici.

Parfait ! Je vais maintenant ouvrir cette URL ici et elle est arrivée ici et comme vous pouvez le voir.

" hello en train de passer de Heroku à Code Engine

Et c'est terminé. J'ai pris le même code que celui que j'ai fait à Heroku. J'ai créé un nouveau projet, puis j'ai créé une application et je l'ai simplement poussée et ça a fonctionné. Imaginez ce que vous pouvez faire avec cela pour vous-même. Cela montre la puissance qui est Code Engine et sur un niveau gratuit, il est vraiment gratuit-tout comme Heroku était ou sera ou ne sera pas dans le futur. Code Engine est gratuit pour toujours, ce qui est génial et, espérons-le, rendra votre vie un peu plus facile.

Merci beaucoup d'avoir regardé et si vous avez des questions, mon compte Twitter est @jjasghar ou vous êtes plus que bienvenu pour m'envoyer un courrier électronique à l'adresse awesome@ibm.com. Mon travail est d'être un nerd personnable donc n'hésitez jamais à contacter.

Merci beaucoup.

Au revoir.