FAQ pour Code Engine

Réponses aux questions fréquentes sur le service IBM Cloud® Code Engine.

Qu'est-ce qu'IBM Cloud Code Engine ?

Code Engine est développé par IBM et est construit avec de nombreux composants open source. L'objectif est d'étendre les capacités de Kubernetes pour vous aider à créer des applications modernes, conteneurisées, axées sur la source et sans serveur, qui s'exécutent sur votre cluster Kubernetes. Cette plateforme est conçue pour répondre aux besoins des développeurs qui doivent aujourd'hui décider du type d'application qu'ils souhaitent exécuter dans le cloud : applications à 12 facteurs, conteneurs ou fonctions. Pour plus d'informations, voir A propos de Code Engine.

Avec Code Engine, vous pouvez déployer des applications, des travaux d'exécution et même générer du code source à partir d'un seul tableau de bord.

Qu'est-ce qu'un projet ?

Un projet est un regroupement d'entités Code Engine telles que des applications, des travaux et des générations. Un projet est basé sur un espace de nom Kubernetes. Le nom de votre projet doit être unique au sein de votre groupe de ressources, compte utilisateur et région IBM Cloud®. Les projets permettent de gérer des ressources et fournissent un accès à leurs entités.

Un projet fournit les éléments suivants.

  • Il fournit un espace de nom unique pour des noms d'entité.
  • Il gère l'accès à des ressources de projet (accès entrant).
  • Il gère l'accès à des services de sauvegarde, des registres et des référentiels (accès sortant).
  • Il possède un certificat généré automatiquement pour TLS (Transport Layer Service).

Pour plus d'informations sur les projets, voir Gérer les projets.

Où puis-je trouver des exemples de code ?

Il existe des exemples de code vous permettant d'explorer les fonctions de Code Engine. Visitez notre référentiel d'exemples de code Code Engine sur GitHub.

J'ai besoin de davantage de mémoire. Puis-je augmenter mes limites ?

Oui, vous pouvez augmenter vos limites Code Engine en contactant le service de support IBM.

Ai-je besoin d'un compte Docker Hub pour utiliser Code Engine?

Code Engine ne requiert pas de compte Docker Hub. Bien que Code Engine exécute des conteneurs, vous n'avez pas besoin de comprendre la technologie de conteneur pour déployer des charges de travail sur Code Engine. Vous pouvez commencer par le code source et Code Engine génère l'image de conteneur pour vous et la stocke dans un espace de nom IBM Cloud Container Registry appartenant à votre compte. Bien que IBM Cloud Container Registry soit utilisé comme registre de conteneur par défaut, Code Engine peut envoyer et extraire des images de tout autre registre public et privé accessible depuis IBM Cloud.

Quelle est la différence entre une génération de fichier Docker sur mon système et une génération dans Code Engine ?

Avec une génération de fichier Docker que vous exécutez sur votre système local, vous obtenez la même image de conteneur que lorsque vous exécutez une génération avec le même fichier Dockerfile dans Code Engine. Toutefois, la génération dans Code Engine ne s'exécute pas sur votre système local mais sur le système Code Engine. Cette génération dans Code Engine présente plusieurs avantages.

  1. Il n'est pas nécessaire d'installer localement des logiciels tels que Docker Desktop.
  2. Vous pouvez utiliser les ressources fournies par Code Engine. Par exemple, vous pouvez tirer parti de la vitesse de IBM Cloud pour envoyer et extraire des images de registre de conteneur.
  3. Vous pouvez générer votre image de conteneur à l'aide de la stratégie de génération de packs de construction au lieu d'un fichier Dockerfile, qui détecte vos sources pour différentes langues et génère automatiquement un conteneur.
  4. Si vous disposez d'une image générée avec un processeur non Intel, Code Engine peut la régénérer pour vous.

Pourquoi les images de conteneurs construites avec des Buildpacks sur Code Engine présentent-elles de nombreuses vulnérabilités?

Les images construites avec la stratégie Buildpacks utilisent une image de base Ubuntu. Bien que cette image de base soit activement maintenue, certains paquets Ubuntu ne reçoivent des correctifs de sécurité que dans le cadre du modèle d'abonnement Ubuntu Pro. Par conséquent, votre image contient des paquets pour lesquels Canonical publie des avis de vulnérabilité, mais ne fournit des correctifs qu'aux abonnés de Ubuntu Pro. Comme Code Engine utilise la version publiquement disponible, ces mises à jour ne peuvent pas être appliquées automatiquement. Dans les rapports sur les vulnérabilités, vous pouvez les identifier en vérifiant la version vers laquelle un paquet devrait être mis à jour. Si ce numéro de version contient esm, il s'agit d'une correction pour Ubuntu Pro uniquement.

Notez que l'image de base contient plusieurs paquets qui sont nécessaires à certains systèmes d'exécution. Ces paquets sont installés parce que les Buildpacks ne peuvent pas déterminer de manière fiable, pendant la construction, les bibliothèques système dont votre application pourrait avoir besoin au moment de l'exécution. Bien que certains paquets puissent ne pas être nécessaires pour votre application spécifique, ils sont inclus pour garantir le bon fonctionnement d'une grande variété de charges de travail.

Si vous souhaitez avoir un contrôle total sur l'image de base, y compris sur les paquets Ubuntu présents et sur le moment où ils sont mis à jour, envisagez de passer de la stratégie de construction Buildpacks à la fourniture de votre propre fichier Docker. Avec une construction basée sur un fichier Docker, vous pouvez choisir une image de base minimale, mettre à jour les paquets exactement comme vous le souhaitez et réduire le nombre de composants qui apparaissent dans les analyses de vulnérabilité.

Pourquoi les images générées avec des processeurs non Intel ne fonctionnent-elles pas avec Code Engine?

Si vous disposez d'une image qui existe dans un registre de conteneur et que l'image a été générée avec un processeur non Intel, Code Engine ne peut pas exécuter votre image de conteneur. Code Engine utilise le traitement Intel. Vous pouvez générer votre propre image si vous utilisez le traitement Intel (processeurx86 ). Vous pouvez également choisir de laisser Code Engine traiter le processus de génération pour vous. Pour plus d'informations, voir Planification de votre génération.

Les applications Code Engine prennent-elles en charge les WebSockets ?

Oui. Vous pouvez trouver un exemple d'application qui utilise WebSockets en visitant notre dépôt d'échantillons Code Engine sur GitHub.

La durée maximale d'une connexion à une application est de 10 minutes, même si la connexion n'est pas inactive. Dans Code Engine, vous pouvez configurer cette durée de connexion avec la valeur timeout. Dans l'interface de ligne de commande, utilisez l'option --timeout avec la commande app create ou la commande app update. Depuis la console, vous pouvez définir la valeur Timeout pour votre application dans l'onglet Resources & scaling. Dans le cas d'une application qui utilise des WebSockets, le client doit se reconnecter à l'application après la fermeture de la connexion. Par conséquent, si votre application requiert une connexion persistante, créez une nouvelle connexion avant que la valeur définie par timeout ne soit atteinte.

Faire Code Engine prise en charge des applications gRPC?

Oui. Vous pouvez trouver un exemple d'application qui utilise gRPC en visitant notre dépôt d'échantillons Code Engine sur GitHub.

Etant donné que gRPC dépend de HTTP/2, vous devez définir le nom de port sur h2c et la valeur de port sur 8080, puis votre application Code Engine peut prendre en charge le trafic HTTP/2. Utilisez l'interface de ligne de commande Code Engine pour configurer l'option --port h2c:8080 avec la commande app create ou la commande app update pour configurer votre application afin qu'elle utilise gRPC. Voir Implémentation d'applications avec gRPC.

Code Engine offre-t-il un moyen de limiter l'accès à une entité particulière dans un projet Code Engine ?

Non, dans Code Engine, les rôles qui sont appliqués à une entité Code Engine sont uniquement sectorisés au projet sélectionné comme contexte en cours. Par conséquent, vous ne pouvez pas contrôler les droits d'accès sur des ressources individuelles dans un projet Code Engine.

Code Engine fournit-il une spécification OpenAPI pour la fonction déployée?

Non, Code Engine ne génère pas ou ne fournit pas de spécification OpenAPI pour les fonctions que vous déployez. Des packages et des outils sont disponibles pour de nombreux langages de programmation afin de générer une spécification OpenAPI à partir de code.

Comment afficher les conditions des services Code Engine ?

Pour obtenir les derniers accords sur les niveaux de service, voir les conditions des services.

Comment envoyer des commentaires en retour ?

Vos commentaires sur Code Engine sont importants pour nous et nous aident à nous améliorer. Vous pouvez fournir des commentaires de plusieurs façons :

  • Cliquez sur Problème de document ouvert à la fin d'une page de documentation pour ouvrir un problème et fournir vos commentaires.
  • Partagez vos commentaires via Slack. Vous pouvez participer à la discussion sur le canal #code-engine.