Cette page décrit quelques éléments à prendre en compte pour commencer à développer un service de diffusion Knative.
Exigences relatives au code
Lorsque vous développez un service, vous devez répondre aux exigences suivantes :
- Le service doit écouter les requêtes.
Vous pouvez configurer le port sur lequel sont envoyées les requêtes.
Dans les instances de conteneur de diffusion Knative, la valeur de la variable d'environnement
PORT
reflète toujours le port vers lequel les requêtes sont envoyées. Votre code doit vérifier l'existence de cette variable d'environnementPORT
et, si elle est présente, écouter le port correspondant afin de maximiser la portabilité. - Le service doit être sans état. Il ne peut pas reposer sur un état local persistant.
- Le service ne doit pas effectuer d'activités en arrière-plan qui sortent du cadre du traitement des requêtes.
Vous trouverez plus de précisions sur ces contraintes dans le contrat d'exécution du conteneur.
Compatibilité avec les langages de programmation
L'inférence Knative vous permet d'écrire du code dans le langage de programmation de votre choix.
Utiliser un serveur Web
Vous pouvez utiliser un serveur Web pour écouter le port requis, ainsi que pour traiter et acheminer les requêtes entrantes. Par exemple, les développeurs en Node.js peuvent utiliser Express.js, les développeurs en Python, Flask, les développeurs en Ruby, Sinatra, etc.
Intégrer le code à un conteneur
Pour le déploiement sur l'inférence Knative, vous devez fournir une image de conteneur. Une image de conteneur est un format de package qui inclut votre code, ses packages, les dépendances binaires nécessaires, le système d'exploitation à utiliser et tout autre élément nécessaire à l'exécution de votre service.
Un fichier nommé Dockerfile est couramment utilisé pour déclarer comment construire l'image du conteneur.
Les fichiers Dockerfile démarrent très souvent à partir d'une image de base (par exemple, FROM golang:1.11
). Vous pouvez trouver des images de base gérées par les auteurs de systèmes d'exploitation et de langages sur Docker Hub. Cloud Build vérifie s'il existe des images mises en cache avant de les extraire de Docker Hub. Si vous utilisez un outil de compilation tiers, vous pouvez configurer votre daemon Docker afin qu'il vérifie l'existence des images dans le même cache. Vous pouvez également trouver des images de base gérées par Google dans Google Cloud Marketplace.
Si vous utilisez vos propres fichiers binaires, assurez-vous qu'ils sont compilés pour Linux ABI x86_64.
Ces ressources fournissent des informations supplémentaires sur les fichiers Dockerfile :
- Découvrez la syntaxe dans la documentation de référence sur Dockerfile et son intégration en suivant les conseils fournis dans les bonnes pratiques pour l'écriture de fichiers Dockerfile.
- Lisez les Bonnes pratiques pour la création de conteneurs pour plus de précisions.
Étapes suivantes
- Une fois que vous avez votre code de service et votre fichier Dockerfile, vous devez créer une image de conteneur, puis continuer à effectuer des tests en local.
- Si vous migrez une application Web existante, consultez la page Migrer un service vers la diffusion Knative.
- Pour connaître les bonnes pratiques de conception, de mise en œuvre, de test et de déploiement d'un service dans la diffusion Knative, consultez les conseils de développement.