PlateformeDéploiement serverless

Déploiement serverless

Des applications qui se mettent à l'échelle d'elles-mêmes — du marketplace au runtime.

Dans le Déploiement, les développeurs exécutent leurs propres applications sur eQuantic Cloud en tant que services serverless qui se mettent à l'échelle automatiquement, y compris à zéro lorsqu'ils sont inactifs.

Créer un service

L'assistant est un marketplace par catégorie. La catégorie Custom (par défaut) couvre quatre origines :

app.equantic.space/deploy/gateway
gatewayEn ligneGit
api.equantic.space
CPU
MEM
mise à l'échelle automatique · 1–6 instances
1Mise à l'échelle auto
Chaque service se met à l'échelle tout seul (y compris à zéro) — CPU, mémoire et instances visibles d'un coup d'œil.
OrigineCe qu'elle fait
Dépôt GitNous détectons la stack, générons le Dockerfile et découvrons le port et les variables — auto-detect.
DockerfileBuild à partir d'un Dockerfile dans le dépôt.
Docker ComposeDémarre plusieurs services depuis un compose.yml.
Image DockerUtilise une image prête d'un registre.

Les autres catégories proposent ~40 services open-source prêts à l'emploi (Postgres, Redis, RabbitMQ, MinIO, Grafana, n8n, Metabase, Keycloak, WordPress…), chacun avec son propre formulaire d'installation.

Opérer le service

  • Vue d'ensemble avec des graphiques de CPU/mémoire et l'origine/build.
  • Deployments avec stream de build en direct et rollback.
  • Échelle & ressources — déclencheurs de mise à l'échelle (KEDA), scale-to-zero, plage d'instances et CPU/mémoire modifiables à tout moment — redimensionner un service en cours d'exécution le redéploie progressivement avec sa nouvelle part, sans recréation.
  • Health check — pointez la plateforme vers l'endpoint de probe propre à votre application, et surchargez les command/args du conteneur quand les valeurs par défaut de l'image ne sont pas les vôtres.
  • Console interactive (drawer), logs runtime en direct, variables et domaines (TLS automatique).
  • www sur n'importe quel domaine personnalisé — un interrupteur par domaine, qui redirige www.exemple.com vers exemple.com en 301 (la valeur par défaut, et ce que veulent les moteurs de recherche : deux hôtes servant un contenu identique sont deux URL canoniques pour une même page) ou sert les deux. Faire pointer un CNAME www ici ne suffit pas : le DNS résout le nom, et qui répond — et pour quel hôte le certificat est émis — se décide ensuite, à partir de la requête. Le domaine doit donc revendiquer le www pour que la plateforme le route et lui délivre TLS.
  • L'adresse propre du service — dans l'onglet Domaines, choisissez le nom auquel le service répond sous le domaine de la plateforme : cura-accounts.apps.equantic.space au lieu du cura-accounts-e49f09.apps.equantic.space généré. L'adresse générée continue de fonctionner, avec une 301 vers celle choisie qui garde le chemin et la query, si bien qu'un lien déjà partagé ne casse pas. Un nom revient au premier qui le demande sur toute la plateforme, et un nom abandonné est aussitôt libre pour n'importe qui. Chaque adresse de l'onglet a un bouton pour la copier.
  • Configuration avancée (EXPERT) — overrides de ressources/probes et inspection du manifeste généré.

Les paramètres avancés de l'assistant offrent les mêmes leviers au moment de la création — les ressources et la plage d'instances qu'on y choisit sont celles avec lesquelles tourne le premier déploiement.

Les Pull Requests ouvertes peuvent aussi recevoir des environnements de preview éphémères, déployés comme des services classiques et détruits automatiquement au merge ou à la fermeture — voir Dépôts & CI/CD.

La plateforme n'expose pas de serveurs/nœuds — c'est du serverless. Chaque projet est un environnement isolé et chaque service se met à l'échelle par instances.

D'où vient la version

L'onglet Aperçu d'un service indique quelle version tourne et, quand l'image est l'une des nôtres, d'où elle vient : l'exécution de pipeline qui l'a publiée, le commit derrière cette exécution, et le dépôt. L'écran de l'exécution répond à la même question par l'autre bout, avec un bandeau Déployée dans nommant chaque environnement où ses images tournent.

Le lien est enregistré, jamais deviné. Un job qui publie avec le jeton que la plateforme injecte déjà est attribué à cette exécution :

yaml
- run: docker login registry.equantic.space -u eqs -p $EQS_TOKEN
- run: docker push registry.equantic.space/acme/api:${{ github.sha }}

Une image tirée d'un registre que nous n'exploitons pas n'a pas de provenance, et l'écran le dit au lieu d'afficher un panneau vide.

Joindre un service depuis un autre

La chaîne de connexion d'un service le nomme en entier — postgres.p-1a2b3c-production.svc.cluster.local — et pas seulement postgres. Le nom court ne résout qu'à l'intérieur du Space auquel il appartient, et un Space est un namespace Kubernetes : une application d'un autre Space à qui on avait donné le nom court fonctionnait jusqu'à ce que quelque chose la redémarre, et elle ne résolvait alors plus sa propre base.

Copiez la connexion depuis le panneau Connecter du service (ou eqs db url <service>) et elle fonctionne depuis n'importe où dans le workspace.