Mettre une application en containers nécessite de transformer son code source en images capables de fonctionner sur n’importe quel cloud. C’est le rôle assigné à Buildpacks, projet open source chapeauté par la CNCF, originellement conçu en 2011 par Heroku (PaaS de l’univers Salesforce). Depuis sa création, Buildpacks a été adopté pour différents PaaS, frameworks et outils dont Cloud Foundry, Gitlab, Knative, Deis, Dokku et App Engine, de Google. Ce dernier vient justement d’annoncer qu’il étendait son support du projet à travers Google Cloud for buildpacks, pour simplifier et accélérer la création d’images de containers sécurisées prêtes à la mise en production, à partir du code source des applications et sans fichier Docker.
Cela se traduit par la mise en open source sur GitHub d’un ensemble de buildpacks et de builders conçus pour s’exécuter sur les différentes plateformes de containers de Google Cloud : son service managé Cloud Run, GKE (Google Kubernetes Engine), Anthos pour les projets hybrides et Compute Engine quand il est utilisé avec l’OS Container-Optimized.
Des buildpacks testés en production sur App Engine et Cloud Functions
Pour une application, le processus de build consiste à exécuter un ou plusieurs buildpacks sur le code source pour produire une image OCI (open container initiative) exécutable. Le buildpack lui-même est un exécutable qui inspecte le code source pour élaborer un plan pour l’exécuter. Quant au builder, c’est une image qui réunit les informations sur la façon de construire l’application. Les buildpacks fournis par Google s’appuient sur la spécification v3 du CNCF. Ils ont été testés en production et utilisés à grande échelle pour élaborer la plupart des builds pour App Engine et Cloud Functions depuis mars, assure Google dans un billet.
Le fournisseur de services cloud explique que ses buildpacks utilisent une image managée d’Ubuntu 18.04 qui est régulièrement examinée pour détecter des failles de sécurité. En cas de vulnérabilités, celles-ci sont automatiquement corrigées pour garantir que les builds soient aussi sécurisées que possible. Les buildpacks sont écrits en Go. En dehors de ceux qu'il fournit sur GitHub, Google indique supporter la technologie open source buildpacks sur sept de ses services cloud : Cloud Build, Cloud Run, App Engine, Cloud Functions, Cloud Code, Skaffold et Cloud Shell.