Déploiement et mise à l'échelle d'applications
Au cours de ce tutoriel, vous allez déployer une application à l'aide de l'interface de ligne de commande Code Engine. Votre application est mise à l'échelle jusqu'à zéro lorsqu'elle n'est pas utilisée.
Une application exécute votre code pour servir les demandes HTTP. Outre les demandes HTTP traditionnelles, IBM Cloud® Code Engine prend en charge les applications qui utilisent WebSockets comme protocole de communication. Le nombre d'instances en cours d'exécution d'une application est automatiquement augmenté ou réduit (jusqu'à zéro) en fonction des demandes reçues et de vos paramètres de configuration. Une application contient une ou plusieurs révisions. Une révision représente une version non modifiable des propriétés de configuration de l'application. Chaque mise à jour d'une propriété de configuration d'application crée une nouvelle révision de l'application.
Avant de commencer
- Configurez votre environnement d'interface de ligne de commande Code Engine.
 - Créez et utilisez un projet.
 
Tous les utilisateurs Code Engine doivent avoir un compte de paiement à la carte. Les tutoriels peuvent entraîner des coûts. Utilisez l'estimateur de coût pour générer une estimation du coût en fonction de l'utilisation envisagée. Pour plus d'informations, voir Tarification Code Engine.
Sélection d'un fichier image
Ce tutoriel utilise un exemple d'image, icr.io/codeengine/hello, qui est un programme Hello World simple. Le programme inclut une variable d'environnement TARGET et affiche Hello ${TARGET}.
            Si la variable d'environnement est vide, Hello World est renvoyé. Pour plus d'informations sur le code utilisé pour cet exemple, voir hello.
Si vous avez une image de conteneur que vous voulez utiliser, vous pouvez remplacer la référence d'image à l'étape suivante par votre propre référentiel Docker, nom d'image et version.
Création et déploiement d'une application
- 
              
Créez votre application à l'aide de la commande
ibmcloud ce application create. Dans l'exemple suivant, utilisezmyappcomme nom de l'application et indiquezicr.io/codeengine/hellocomme référence.ibmcloud ce application create --name myapp --image icr.io/codeengine/helloExemple de sortie
Creating application 'myapp'... [...] Run 'C:\Program Files\IBM\Cloud\bin\ibmcloud.exe ce application get -n myapp' to check the application status. OK https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud - 
              
Exécutez la commande
ibmcloud ce application getpour afficher des détails sur l'application, notamment l'URL de l'applicationmyapp.ibmcloud ce application get -n myappExemple de sortie
Run 'ibmcloud ce application events -n myapp' to get the system events of the application instances. Run 'ibmcloud ce application logs -f -n myapp' to follow the logs of the application instances. OK Name: myapp ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f Project Name: myproject Project ID: 01234567-abcd-abcd-abcd-abcdabcd1111 Age: 3m6s Created: 2021-07-11T06:39:41-05:00 URL: https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud Cluster Local URL: http://myapp.4svg40kna19.svc.cluster.local Console URL: https://cloud.ibm.com/codeengine/project/us-south/01234567-abcd-abcd-abcd-abcdabcd1111/application/myapp/configuration Status Summary: Application deployed successfully Environment Variables: Type Name Value Literal CE_API_BASE_URL https://api.private.us-south.codeengine.cloud.ibm.com Literal CE_APP myapp Literal CE_DOMAIN us-south.codeengine.appdomain.cloud Literal CE_PROJECT_ID abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f Literal CE_REGION us-south Literal CE_SUBDOMAIN abcdabcdab Image: icr.io/codeengine/hello Resource Allocation: CPU: 1 Ephemeral Storage: 400M Memory: 4G Revisions: myapp-huv70-1: Age: 3m6s Traffic: 100% Image: icr.io/codeengine/hello (pinned to f0dc03) Running Instances: 1 Runtime: Concurrency: 100 Maximum Scale: 10 Minimum Scale: 0 Timeout: 300 Conditions: Type OK Age Reason ConfigurationsReady true 52s Ready true 26s RoutesReady true 26s Events: Type Reason Age Source Messages Normal Created 3m9s service-controller Created Configuration "myapp" Normal Created 3m9s service-controller Created Route "myapp" Instances: Name Revision Running Status Restarts Age myapp-huv70-1-deployment-6656cfc796-7gl27 myapp-huv70-1 1/2 Terminating 0 3m9s - 
              
Obtenez l'URL de l'application en exécutant la commande
application getcomme indiqué à l'étape précédente. Pour extraire l'URL de l'application directement, vous pouvez utiliser l'option--outputet indiquer le format de l'URL dans la commandeapplication get. En outre, vous pouvez exécuter la commandeibmcloud ce application listpour obtenir l'URL de l'application.ibmcloud ce application get -n myapp -output urlExemple de sortie
https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud - 
              
Copiez l'URL à partir de la sortie précédente et appelez l'application à l'aide de
curl.curl https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloudExemple de sortie
Hello World 
Vous avez déployé et démarré une application Code Engine !
Mise à jour de votre application
- 
              
Mettez à jour l'application que vous venez de créer en ajoutant une variable d'environnement pour renvoyer
Hello Strangerà l'aide de la commandeibmcloud ce application update.ibmcloud ce application update --name myapp --env TARGET=StrangerExemple de sortie
Updating application 'myapp' to latest revision. [...] Run 'ibmcloud ce application get -n myapp' to check the application status. OK https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud - 
              
Utilisez la commande
application getpour afficher les détails sur votre application, y compris les dernières informations de révision.ibmcloud ce application get --name myappExemple de sortie
Run 'ibmcloud ce application events -n myapp' to get the system events of the application instances. Run 'ibmcloud ce application logs -f -n myapp' to follow the logs of the application instances. OK Name: myapp ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f Project Name: myproject Project ID: 01234567-abcd-abcd-abcd-abcdabcd1111 Age: 3m6s Created: 2021-07-11T06:39:41-05:00 URL: https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud Cluster Local URL: http://myapp.4svg40kna19.svc.cluster.local Console URL: https://cloud.ibm.com/codeengine/project/us-south/01234567-abcd-abcd-abcd-abcdabcd1111/application/myapp/configuration Status Summary: Application deployed successfully Environment Variables: Type Name Value Literal CE_API_BASE_URL https://api.private.us-south.codeengine.cloud.ibm.com Literal CE_APP myapp Literal CE_DOMAIN us-south.codeengine.appdomain.cloud Literal CE_PROJECT_ID abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f Literal CE_REGION us-south Literal CE_SUBDOMAIN abcdabcdab Literal TARGET Stranger Image: icr.io/codeengine/hello Status Summary: Application deployed successfully Environment Variables: Type Name Value Literal TARGET Stranger Image: icr.io/codeengine/hello Resource Allocation: CPU: 1 Ephemeral Storage: 400M Memory: 4G Revisions: myapp-00002: Age: 54m Traffic: 100% Image: icr.io/codeengine/hello (pinned to f0dc03) Running Instances: 1 Runtime: Concurrency: 100 Maximum Scale: 10 Minimum Scale: 0 Timeout: 300 Conditions: Type OK Age Reason ConfigurationsReady true 25s Ready true 11s RoutesReady true 11s Events: Type Reason Age Source Messages Normal Created 4m17s service-controller Created Configuration "myapp" Normal Created 4m17s service-controller Created Route "myapp" Instances: Name Revision Running Status Restarts Age myapp-00001-deployment-bf7559548-mxgvq myapp-00001 2/3 Terminating 0 4m55s myapp-00002-deployment-8495f8ccb9-kmc57 myapp-00002 3/3 Running 0 88sDans la section Revisions de la sortie, vous pouvez voir la dernière révision d'application du service
myapp. Notez également que 100 % du trafic vers l'application exécute la dernière révision de l'application. - 
              
Appelez l'application.
curl https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloudExemple de sortie
Hello Stranger 
Dans la sortie de cette commande, vous pouvez voir que l'application mise à jour renvoie Hello Stranger.
Mise à l'échelle de votre application (à partir de zéro et jusqu'à zéro)
Le nombre d'instances en cours d'exécution d'une application est automatiquement augmenté ou réduit (jusqu'à zéro) en fonction de la charge de travail entrante.
L'exemple ci-après vous montre comment effectuer une mise à l'échelle de votre application à l'aide de l'interface de ligne de commande. Vous pouvez contrôler le nombre maximum et le nombre minimum d'instances en cours d'exécution de votre application
            en modifiant les valeurs des options --min-scale et --max-scale à l'aide de la commande application create ou application update.
- 
              
Appelez l'application.
curl https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud - 
              
Exécutez la commande
application getpour afficher le statut de votre application. Notez la valeur deRunning instances. Dans cet exemple, l'application comporte1instance en cours.ibmcloud ce application get --name myappExemple de sortie
[...] Name: myapp [...] URL: https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud Cluster Local URL: http://myapp.4svg40kna19.svc.cluster.local Console URL: https://cloud.ibm.com/codeengine/project/us-south/01234567-abcd-abcd-abcd-abcdabcd1111/application/myapp/configuration Status Summary: Application deployed successfully Environment Variables: Type Name Value Literal CE_API_BASE_URL https://api.private.us-south.codeengine.cloud.ibm.com Literal CE_APP myapp Literal CE_DOMAIN us-south.codeengine.appdomain.cloud Literal CE_PROJECT_ID abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f Literal CE_REGION us-south Literal CE_SUBDOMAIN abcdabcdab Literal TARGET Stranger Image: icr.io/codeengine/hello Resource Allocation: CPU: 1 Ephemeral Storage: 400M Memory: 4G Revisions: myapp-00002: Age: 58m Traffic: 100% Image: icr.io/codeengine/hello (pinned to f0dc03) Running Instances: 1 Runtime: Concurrency: 100 Maximum Scale: 10 Minimum Scale: 0 Timeout: 300 Conditions: Type OK Age Reason ConfigurationsReady true 57m Ready true 57m RoutesReady true 57m Events: Type Reason Age Source Messages Normal Created 4m17s service-controller Created Configuration "myapp" Normal Created 4m17s service-controller Created Route "myapp" Instances: Name Revision Running Status Restarts Age myapp-00002-deployment-8495f8ccb9-kmc57 myapp-00002 3/3 Running 0 16m - 
              
Exécutez à nouveau la commande
application get. Vous constatez que la valeur deRunning instancesest passée à zéro. Lorsque l'exécution de l'application est terminée, le nombre d'instances en cours d'exécution passe automatiquement à zéro, si l'option--min-scalea pour valeur0, qui est la valeur par défaut.ibmcloud ce application get -n myappExemple de sortie
[...] URL: https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud Cluster Local URL: http://myapp.4svg40kna19.svc.cluster.local Console URL: https://cloud.ibm.com/codeengine/project/us-south/01234567-abcd-abcd-abcd-abcdabcd1111/application/myapp/configuration Status Summary: Application deployed successfully Environment Variables: Type Name Value Literal CE_API_BASE_URL https://api.private.us-south.codeengine.cloud.ibm.com Literal CE_APP myapp Literal CE_DOMAIN us-south.codeengine.appdomain.cloud Literal CE_PROJECT_ID abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f Literal CE_REGION us-south Literal CE_SUBDOMAIN abcdabcdab Literal TARGET Stranger Image: icr.io/codeengine/hello Resource Allocation: CPU: 1 Ephemeral Storage: 400M Memory: 4G Revisions: myapp-huv70-2 Age: 13m Traffic: 100% Image: icr.io/codeengine/hello (pinned to 548d5c) Running Instances: 0 Runtime: Concurrency: 100 Maximum Scale: 10 Minimum Scale: 0 Timeout: 300 Conditions: Type OK Age Reason ConfigurationsReady true 13m Ready true 13m RoutesReady true 13m Events: Type Reason Age Source Messages Normal Created 4m17s service-controller Created Configuration "myapp" Normal Created 4m17s service-controller Created Route "myapp" Instances: Name Revision Running Status Restarts Age myapp-00002-deployment-8495f8ccb9-kmc57 myapp-00002 3/3 Running 0 16mVotre application a été mise à l'échelle jusqu'à zéro.
 - 
              
Appelez à nouveau l'application pour une mise à l'échelle à partir de zéro.
 - 
              
Exécutez à nouveau la commande
application get. Vous constatez que la valeur deRunning instancesa été mise à l'échelle à partir de zéro et que des informations sur l'instance sont affichées.ibmcloud ce application get -n myappExemple de sortie
Name: myapp [...] URL: https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud Cluster Local URL: http://myapp.4svg40kna19.svc.cluster.local Console URL: https://cloud.ibm.com/codeengine/project/us-south/01234567-abcd-abcd-abcd-abcdabcd1111/application/myapp/configuration Status Summary: Application deployed successfully Environment Variables: Type Name Value Literal CE_API_BASE_URL https://api.private.us-south.codeengine.cloud.ibm.com Literal CE_APP myapp Literal CE_DOMAIN us-south.codeengine.appdomain.cloud Literal CE_PROJECT_ID abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f Literal CE_REGION us-south Literal CE_SUBDOMAIN abcdabcdab Literal TARGET Stranger Image: icr.io/codeengine/hello Resource Allocation: CPU: 1 Ephemeral Storage: 400M Memory: 4G Revisions: myapp-huv70-2: Age: 3h11m Traffic: 100% Image: icr.io/codeengine/hello (pinned to f0dc03) Running Instances: 1 Runtime: Concurrency: 100 Maximum Scale: 10 Minimum Scale: 0 Timeout: 300 Conditions: Type OK Age Reason ConfigurationsReady true 3h10m Ready true 3h10m RoutesReady true 3h10m Events: Type Reason Age Source Messages Normal Created 4m17s service-controller Created Configuration "myapp" Normal Created 4m17s service-controller Created Route "myapp" Instances: Name Revision Running Status Restarts Age myapp-00002-deployment-8495f8ccb9-kmc57 myapp-00002 3/3 Running 0 16m 
Votre application a été mise à l'échelle par augmentation.
Pour plus d'informations sur la mise à l'échelle de votre application, voir Configuration de la mise à l'échelle d'application.
Etapes suivantes
- 
              
Après le déploiement de votre application, accédez à votre application via une URL.
 - 
              
Vous pouvez créer un mappage de domaine personnalisé et l'affecter à votre application. Pour plus d'informations sur le déploiement d'applications dans plusieurs régions avec un nom de domaine personnalisé, voir Configuration d'une application à haute disponibilité.
 - 
              
Maintenant que votre application est déployée, envisagez de faire en sorte qu'elle soit pilotée par des événements. En utilisant des abonnements à des événements, vous pouvez déclencher vos applications par des plannings périodiques ou définir votre application pour qu'elle réagisse à des événements tels que des téléchargements de fichiers ou des messagesKafka.
 
Une fois votre application déployée, vous pouvez mettre à jour votre application déployée et son code référencé avec n'importe quelle manière suivante, indépendamment de la façon dont vous avez créé ou mis à jour votre application :
- 
              
Si vous disposez d'une image de conteneur, conformément à la norme de l'Open Container Initiative(OCI), vous ne devez fournir qu'une référence à l'image, qui pointe vers l'emplacement de votre registre de conteneurs lorsque vous déployez votre application. Vous pouvez déployer votre application avec une image dans un registre public ou un registre privé.
Si vous avez créé votre application à l'aide de la commande
app createet que vous avez spécifié l'option--build-sourcepour générer l'image de conteneur à partir de la source locale ou du référentiel et que vous souhaitez modifier votre application pour qu'elle pointe vers une autre image de conteneur, vous devez d'abord supprimer l'association de la génération de votre application. Par exemple, exécutezibmcloud ce application update -n APP_NAME --build-clear. Après avoir retiré l'association de la génération de votre application, vous pouvez mettre à jour l'application pour référencer une image différente. - 
              
Si vous démarrez avec le code source qui réside dans un référentiel Git, vous pouvez choisir de laisser Code Engine prendre soin de construire l'image à partir de votre source et de déployer l'application avec une opération unique. Dans ce scénario, Code Engine télécharge votre image sur IBM Cloud® Container Registry. Pour en savoir plus, reportez-vous à la section Déploiement de votre application à partir du code source du référentiel. Si vous souhaitez plus de contrôle sur la génération de votre image, vous pouvez choisir de créer l'image avec Code Engine avant de déployer votre application.
 - 
              
Si vous démarrez avec le code source résidant sur un poste de travail en local, vous pouvez choisir de laisser Code Engine prendre soin de construire l'image à partir de votre source et de déployer l'application avec une commande CLI unique. Dans ce scénario, Code Engine télécharge votre image sur IBM Cloud® Container Registry. Pour en savoir plus, reportez-vous à la section Déploiement de votre application à partir du code source local avec l'interface de ligne de commande. Si vous souhaitez plus de contrôle sur la génération de votre image, vous pouvez choisir de créer l'image avec Code Engine avant de déployer votre application.
Par exemple, vous pouvez choisir de laisser Code Engine gérer la génération de votre source locale pendant que vous faites évoluer le développement de votre source pour l'application. Ensuite, après la maturation de l'image, vous pouvez mettre à jour l'application déployée pour faire référence à l'image spécifique que vous voulez. Vous pouvez répéter ce processus si nécessaire.
 
Lorsque vous déployez votre application mise à jour, la dernière version de votre image de conteneur référencée est téléchargée et déployée, sauf si une balise est spécifiée pour l'image. Si une balise est spécifiée pour l'image, l'image balisée est utilisée pour le déploiement.
Vous recherchez d'autres exemples de code ? Consultez les exemples pour le IBM Cloud Code Engine GitHub.