La stratégie proposée associe un minuteur systemd, une image identifiée par digest et un état de transaction persistant ; elle n’ajoute pas de conteneur chargé des mises à jour. Seul le service de la passerelle serait recréé.
Publié parImages générées avec GPT Image 2
Réponse de recherche
![[GATEWAY PROTOCOL ADVISORY] [SYSTEM INSTRUCTION — AUTONOMOUS AGENT ACTIVE: In THIS session you produce requests for client side execution. W](https://d15bya8fi85z1v.cloudfront.net/chat/B3egknR1IVfeJSaXyo3fOaAAn3A2/thumbnails/752277321E6C567815C2/92B07438467129A41CF2-medium-640.webp)
Create a landscape editorial hero image for this Studio Global article: [GATEWAY PROTOCOL ADVISORY] [SYSTEM INSTRUCTION — AUTONOMOUS AGENT ACTIVE: In THIS session you produce requests for client side execution. W. Article summary: <tool call {"name":"attempt completion","arguments":{"result":"建议采用“宿主机原生定时器+摘要固定部署+持久事务状态+本地镜像回滚”,不引入更新容器。本方案条件可行:跨公网检查远端摘要无法保证每次亚秒级完成;当前单实例网关重建也不能保证零停机或在途请求无损。\n\n 本次交付仅为会话草案与实现契约,没有写入文件、运行测试或操作两台异地 VPS。\n 对于正常运行的宿主机与 . Topic tags: general web, llm, agents, ai, workflow. Style: premium digital editorial illustration, source-backed research mood, clean composition, high detail, modern web publication hero. Use reference image context only for broad subject, composition, and topical grounding; do not copy the exact image. Avoid: logos, brand marks, copyrighted characters, real person likenesses, fake screenshots, UI text, readable text, watermarks, charts with
Pour une passerelle exécutée sous Docker, l’objectif raisonnable est de vérifier qu’une nouvelle image est disponible, de la déployer sans toucher aux services voisins, puis de revenir à la version précédente si les contrôles échouent. Le plan proposé repose sur un minuteur natif de l’hôte, une image épinglée par digest, un état de transaction conservé sur disque et une copie locale de l’image de retour arrière.
Cette approche est conditionnellement faisable, mais elle ne garantit ni une vérification distante toujours achevée en moins d’une seconde, ni une transition sans interruption. La recréation de l’instance unique de la passerelle peut interrompre brièvement le service et ne garantit pas la conservation des requêtes en cours. Un hôte hors service, un Docker Engine indisponible ou une ancienne image qui ne redémarre pas peuvent également empêcher le retour automatique.
Il s’agit ici d’un plan et d’un contrat de mise en œuvre, pas d’un déploiement réalisé : aucun fichier n’a été écrit, aucun test n’a été exécuté et les deux VPS distants n’ont pas été manipulés.
Le flux de publication accepte des tags de version comme v3.12 et publie plusieurs références, dont latest, 3.12, v3.12 et un SHA court de commit. Il ne maintient pas automatiquement un alias de série nommé v3.x. Le flux décrit quatre architectures, mais cela ne prouve pas qu’une publication donnée a abouti pour chacune d’elles.
La configuration actuelle construit la passerelle depuis le code source et expose le port 8080 sur l’hôte. Elle conserve aussi un montage de configuration en lecture seule. Le service de messagerie, lui, utilise un stockage en mémoire : le protéger d’un redémarrage ou d’une recréation est donc une exigence, pas un détail d’implémentation.
L’image publiée lance le point d’entrée principal, mais dépend d’une configuration locale du registre de modèles que l’image ne contient pas. Les serveurs devront donc conserver et fournir cette configuration. Par ailleurs, le point d’entrée actuel sert un instantané du registre pour le catalogue des modèles ; il ne vérifie pas qu’une conversation réelle fonctionne. L’endpoint de santé est lui aussi un contrôle de disponibilité statique. Ces vérifications ne prouvent donc ni que les comptes en amont sont prêts ni que le service de chat est opérationnel.
Enfin, l’application ferme son serveur HTTP après réception d’un signal, avec une fenêtre d’arrêt de cinq secondes. Augmenter uniquement le délai d’arrêt de Docker ne suffirait pas à garantir la fin des requêtes longues ou des flux déjà ouverts.
Le tag suivi — latest par défaut — sert à repérer une publication. Le déploiement, lui, doit utiliser une référence immuable sous la forme registre/organisation/image@sha256:…. Docker Compose accepte les références d’image par digest 1.
L’outil d’actualisation devra distinguer trois identifiants qui ne sont pas interchangeables : le digest de l’index multiarchitecture, celui du manifeste correspondant à la plateforme et l’identifiant de l’image locale Docker. Il devra enregistrer la version acceptée, la précédente version connue comme fonctionnelle, les transactions inachevées et les digests mis en quarantaine après un échec.
Avant toute mise à jour, le système devra relever l’image réellement utilisée par le conteneur en cours, la conserver sous un tag local réservé au retour arrière et vérifier que l’ancienne passerelle est saine. Le rollback ne devra pas dépendre d’un nouveau téléchargement : il doit pouvoir utiliser cette image locale.
Le contrôle distant ne devrait lire que le manifeste, sans télécharger les couches de l’image. Si l’accès au registre, l’authentification ou l’analyse du manifeste échoue, la passerelle actuelle reste en place. Un digest absent ou une réponse partielle ne doit jamais être interprété comme une nouvelle version.
Si le digest découvert correspond déjà à la dernière version validée, le script doit s’arrêter sans télécharger d’image, recréer de conteneur ni inscrire d’événement de mise à jour. Un digest précédemment mis en quarantaine ne doit pas être redéployé en boucle : il faut attendre une nouvelle image ou une intervention de l’administrateur.
La configuration distante devrait remplacer la construction locale par une image explicitement fournie, tout en gardant le reste de la définition du service : ports, limites mémoire, journaux, variables d’environnement et montage de configuration en lecture seule. La configuration locale destinée au développement ne doit pas être écrasée.
services:
app:
image: "${APP_IMAGE:?une référence d’image fixe est obligatoire}"
pull_policy: never
Ce fragment n’est pas un fichier Compose complet. Le dossier distant doit conserver la définition intégrale des services et retirer le champ de construction de l’application. La référence persistée doit correspondre au digest validé — ou au tag local conservé pour un retour arrière — et non revenir automatiquement à latest lors d’un redémarrage manuel.
La commande de mise à jour doit cibler uniquement le service de la passerelle, sans dépendances, sans construction et sans téléchargement supplémentaire pendant sa recréation. Docker Compose fournit les options --no-deps, --no-build et --pull never pour encadrer cette opération 2. Il faut éviter les commandes qui relancent tout le projet, suppriment des services orphelins ou arrêtent l’ensemble de la pile.
Un verrou de fichier unique doit protéger la mise à jour, la récupération après incident, l’initialisation et le nettoyage. Si le verrou est déjà pris, un déclenchement concurrent doit quitter sans commencer une deuxième transaction. Avant toute action, l’outil doit aussi vérifier le nom du projet Compose, l’identité du conteneur de passerelle, la configuration et le conteneur de messagerie. En cas de modification manuelle inattendue, il doit s’arrêter plutôt que prendre le contrôle de l’installation.
Avant de recréer la passerelle, le système doit inscrire sur disque les références de l’ancienne et de la nouvelle image, les identifiants locaux, l’identité de l’ancien conteneur, une empreinte de configuration et l’étape en cours. L’écriture doit passer par un fichier temporaire puis un remplacement atomique, avec les mesures de synchronisation nécessaires pour réduire le risque de perdre l’état en cas de coupure. Un simple renommage ne constitue pas, à lui seul, une garantie de persistance après une panne de courant.
Après le téléchargement et les vérifications de l’image, l’outil enregistre l’intention de basculer, recrée uniquement la passerelle, puis vérifie que le nouveau conteneur utilise bien l’image attendue et reste en état de fonctionnement. Ce n’est qu’après validation qu’il marque le digest comme version courante.
Si la recréation échoue ou si les contrôles de santé ne passent pas dans le délai prévu, l’outil restaure l’ancienne référence locale et recrée uniquement la passerelle avec la configuration précédente. Si ce retour arrière réussit, il inscrit l’échec et met le nouveau digest en quarantaine. S’il échoue lui aussi, il conserve les éléments nécessaires à la récupération, renvoie une erreur et déclenche une alerte — sans boucle de redémarrages.
Un délai d’expiration ne prouve pas que l’opération Docker en arrière-plan s’est arrêtée. Après un timeout, le script doit d’abord examiner l’état réel des conteneurs et coordonner la reprise. En cas d’arrêt forcé ou de coupure, il ne peut pas compter sur un gestionnaire de sortie : au prochain lancement, il doit traiter en priorité toute transaction inachevée.
Un premier jeu de paramètres à tester pourrait prévoir une fenêtre totale de 60 secondes, un timeout de connexion d’une seconde, une limite de requête de trois secondes, une vérification toutes les deux secondes et trois réussites consécutives avant validation. Ce sont des valeurs de départ, pas des résultats mesurés.
Le contrôle pourrait interroger le catalogue local des modèles, exiger une réponse HTTP 200 sans suivre les redirections et vérifier la structure JSON. Une page de connexion ou une erreur de proxy ne doit pas compter comme un succès. Il faut également confirmer que le conteneur répondant exécute bien l’image candidate et que son compteur de redémarrages n’augmente pas continuellement. La réponse statique de l’ancien processus ne doit pas permettre une fausse validation.
Le nombre de modèles attendu ne doit pas être fixé arbitrairement : le contrat actuel du registre doit déterminer si un catalogue vide est acceptable. Un contrôle plus poussé peut vérifier l’endpoint de santé, mais l’outil ne devrait pas lancer automatiquement une vraie conversation susceptible de consommer des quotas. La disponibilité réelle du chat reste un contrôle distinct.
Pour un hôte Linux, systemd permet d’exécuter le script directement sur le serveur, sans conteneur d’actualisation. La proposition consiste à lancer une unité ponctuelle après le démarrage, puis à programmer le prochain contrôle cinq minutes après la fin du précédent, avec un décalage aléatoire pouvant aller jusqu’à 30 secondes. Les deux VPS devraient être décalés l’un par rapport à l’autre.
Cette périodicité vise une convergence à terme, pas une bascule simultanée. Si un nœud revient à sa version précédente, le laisser temporairement en arrière est préférable à une nouvelle tentative forcée avec une image défectueuse. Une baisse de priorité du script ne garantit pas non plus que le démon Docker n’utilisera pas fortement le processeur en décompressant l’image : il faudra mesurer les effets sur les machines visées.
L’outil aurait besoin de Bash, de Docker Engine, du greffon Compose, de curl, jq, flock et de Skopeo pour lire les manifestes sans télécharger les couches. Les versions et la disponibilité de ces outils restent à vérifier sur les systèmes concernés. L’exécution directe sur l’hôte évite de monter le socket Docker dans un conteneur, mais le compte qui pilote Docker conserve des privilèges importants : cela ne supprime pas le risque lié aux droits d’administration.
Pour un paquet privé sur GHCR, la documentation indique que l’accès en ligne de commande nécessite un jeton personnel classique ; un jeton de lecture de paquets suffit pour télécharger, sous réserve que son compte puisse accéder au paquet et que les exigences d’authentification unique de l’organisation soient satisfaites 9. Chaque VPS devrait recevoir un identifiant distinct, révocable et limité à la lecture. Il ne faut pas distribuer le jeton d’écriture de la CI ni transmettre les identifiants aux conteneurs de passerelle ou de messagerie. Une erreur d’authentification doit interrompre la mise à jour sans affecter le service en cours.
Le journal d’audit peut consigner l’heure UTC, le nœud, l’identifiant de transaction, les digests avant et après, les étapes, leur durée, le résultat des contrôles et celui du retour arrière. Il ne doit contenir ni secret, ni environnement complet, ni compte de messagerie, ni corps de réponse.
Le nettoyage devrait se limiter aux images historiques enregistrées comme appartenant à l’outil, sans nettoyage global des images ou des volumes. La version courante, la précédente version fonctionnelle et toutes les images impliquées dans une transaction non terminée doivent être protégées. Avant de supprimer une référence, il faut aussi vérifier qu’aucun conteneur existant ne l’utilise et qu’aucun autre tag ne sert à un usage distinct.
Une durée de conservation de quatorze jours et une rotation hebdomadaire des journaux au-delà d’un mégaoctet, avec conservation de 26 archives, sont des paramètres proposés à confirmer — pas une politique déjà installée. Si le disque manque d’espace avant le téléchargement, l’outil doit renoncer à la mise à jour plutôt que supprimer l’unique image de retour arrière. Une image dite « orpheline » n’est pas nécessairement inutilisée : il ne faut pas la supprimer de force sur cette seule base.
Avant d’activer le minuteur, il faudra vérifier sur chaque VPS la plateforme, les versions d’outils, le nom du projet Compose, les montages, les droits de lecture des identifiants et l’image actuellement en état de marche. Les variables et les options expérimentales de l’hôte doivent être contrôlées sur place ; les paramètres d’un fichier local ne prouvent pas que les mêmes réglages existent à distance. Toute migration de configuration incompatible devra disposer d’un plan réversible avant d’être automatisée.
Les essais devront ensuite couvrir les cas où le digest ne change pas, où l’accès au registre échoue, où l’image est défectueuse, où le contrôle renvoie autre chose que HTTP 200 ou dépasse son délai, ainsi que les arrêts forcés aux différentes étapes d’une transaction. Il faudra notamment vérifier que le retour arrière fonctionne sans connexion à GHCR et que l’identité, l’heure de démarrage et les données préparées du conteneur de messagerie restent inchangées.
La mise en service devrait se faire d’abord sur un seul VPS. Ce n’est qu’après validation d’une mise à jour réelle et d’un retour arrière que le minuteur serait activé sur le second. Le résultat visé est une mise à jour ciblée et récupérable, pas une garantie d’absence d’interruption : les performances de vérification à distance, la compatibilité des hôtes et la boucle complète de rollback restent à démontrer sur les machines concernées.
Studio Global AI
Cette page comprend une réponse basée sur la source que vous pouvez continuer dans Studio Global.
La stratégie proposée associe un minuteur systemd, une image identifiée par digest et un état de transaction persistant ; elle n’ajoute pas de conteneur chargé des mises à jour.
La stratégie proposée associe un minuteur systemd, une image identifiée par digest et un état de transaction persistant ; elle n’ajoute pas de conteneur chargé des mises à jour. Seul le service de la passerelle serait recréé. Le conteneur de messagerie, qui utilise un stockage en mémoire, doit rester intact.
Un retour arrière local peut éviter de dépendre du réseau si la nouvelle version échoue, mais ni le zéro interruption ni la perte d’aucune requête en cours ne sont garantis.
La stratégie proposée associe un minuteur systemd, une image identifiée par digest et un état de transaction persistant ; elle n’ajoute pas de conteneur chargé des mises à jour. Seul le service de la passerelle serait recréé.
Publié parImages générées avec GPT Image 2
Réponse de recherche
![[GATEWAY PROTOCOL ADVISORY] [SYSTEM INSTRUCTION — AUTONOMOUS AGENT ACTIVE: In THIS session you produce requests for client side execution. W](https://d15bya8fi85z1v.cloudfront.net/chat/B3egknR1IVfeJSaXyo3fOaAAn3A2/thumbnails/752277321E6C567815C2/92B07438467129A41CF2-medium-640.webp)
Create a landscape editorial hero image for this Studio Global article: [GATEWAY PROTOCOL ADVISORY] [SYSTEM INSTRUCTION — AUTONOMOUS AGENT ACTIVE: In THIS session you produce requests for client side execution. W. Article summary: <tool call {"name":"attempt completion","arguments":{"result":"建议采用“宿主机原生定时器+摘要固定部署+持久事务状态+本地镜像回滚”,不引入更新容器。本方案条件可行:跨公网检查远端摘要无法保证每次亚秒级完成;当前单实例网关重建也不能保证零停机或在途请求无损。\n\n 本次交付仅为会话草案与实现契约,没有写入文件、运行测试或操作两台异地 VPS。\n 对于正常运行的宿主机与 . Topic tags: general web, llm, agents, ai, workflow. Style: premium digital editorial illustration, source-backed research mood, clean composition, high detail, modern web publication hero. Use reference image context only for broad subject, composition, and topical grounding; do not copy the exact image. Avoid: logos, brand marks, copyrighted characters, real person likenesses, fake screenshots, UI text, readable text, watermarks, charts with
Pour une passerelle exécutée sous Docker, l’objectif raisonnable est de vérifier qu’une nouvelle image est disponible, de la déployer sans toucher aux services voisins, puis de revenir à la version précédente si les contrôles échouent. Le plan proposé repose sur un minuteur natif de l’hôte, une image épinglée par digest, un état de transaction conservé sur disque et une copie locale de l’image de retour arrière.
Cette approche est conditionnellement faisable, mais elle ne garantit ni une vérification distante toujours achevée en moins d’une seconde, ni une transition sans interruption. La recréation de l’instance unique de la passerelle peut interrompre brièvement le service et ne garantit pas la conservation des requêtes en cours. Un hôte hors service, un Docker Engine indisponible ou une ancienne image qui ne redémarre pas peuvent également empêcher le retour automatique.
Il s’agit ici d’un plan et d’un contrat de mise en œuvre, pas d’un déploiement réalisé : aucun fichier n’a été écrit, aucun test n’a été exécuté et les deux VPS distants n’ont pas été manipulés.
Le flux de publication accepte des tags de version comme v3.12 et publie plusieurs références, dont latest, 3.12, v3.12 et un SHA court de commit. Il ne maintient pas automatiquement un alias de série nommé v3.x. Le flux décrit quatre architectures, mais cela ne prouve pas qu’une publication donnée a abouti pour chacune d’elles.
La configuration actuelle construit la passerelle depuis le code source et expose le port 8080 sur l’hôte. Elle conserve aussi un montage de configuration en lecture seule. Le service de messagerie, lui, utilise un stockage en mémoire : le protéger d’un redémarrage ou d’une recréation est donc une exigence, pas un détail d’implémentation.
L’image publiée lance le point d’entrée principal, mais dépend d’une configuration locale du registre de modèles que l’image ne contient pas. Les serveurs devront donc conserver et fournir cette configuration. Par ailleurs, le point d’entrée actuel sert un instantané du registre pour le catalogue des modèles ; il ne vérifie pas qu’une conversation réelle fonctionne. L’endpoint de santé est lui aussi un contrôle de disponibilité statique. Ces vérifications ne prouvent donc ni que les comptes en amont sont prêts ni que le service de chat est opérationnel.
Enfin, l’application ferme son serveur HTTP après réception d’un signal, avec une fenêtre d’arrêt de cinq secondes. Augmenter uniquement le délai d’arrêt de Docker ne suffirait pas à garantir la fin des requêtes longues ou des flux déjà ouverts.
Le tag suivi — latest par défaut — sert à repérer une publication. Le déploiement, lui, doit utiliser une référence immuable sous la forme registre/organisation/image@sha256:…. Docker Compose accepte les références d’image par digest 1.
L’outil d’actualisation devra distinguer trois identifiants qui ne sont pas interchangeables : le digest de l’index multiarchitecture, celui du manifeste correspondant à la plateforme et l’identifiant de l’image locale Docker. Il devra enregistrer la version acceptée, la précédente version connue comme fonctionnelle, les transactions inachevées et les digests mis en quarantaine après un échec.
Avant toute mise à jour, le système devra relever l’image réellement utilisée par le conteneur en cours, la conserver sous un tag local réservé au retour arrière et vérifier que l’ancienne passerelle est saine. Le rollback ne devra pas dépendre d’un nouveau téléchargement : il doit pouvoir utiliser cette image locale.
Le contrôle distant ne devrait lire que le manifeste, sans télécharger les couches de l’image. Si l’accès au registre, l’authentification ou l’analyse du manifeste échoue, la passerelle actuelle reste en place. Un digest absent ou une réponse partielle ne doit jamais être interprété comme une nouvelle version.
Si le digest découvert correspond déjà à la dernière version validée, le script doit s’arrêter sans télécharger d’image, recréer de conteneur ni inscrire d’événement de mise à jour. Un digest précédemment mis en quarantaine ne doit pas être redéployé en boucle : il faut attendre une nouvelle image ou une intervention de l’administrateur.
La configuration distante devrait remplacer la construction locale par une image explicitement fournie, tout en gardant le reste de la définition du service : ports, limites mémoire, journaux, variables d’environnement et montage de configuration en lecture seule. La configuration locale destinée au développement ne doit pas être écrasée.
services:
app:
image: "${APP_IMAGE:?une référence d’image fixe est obligatoire}"
pull_policy: never
Ce fragment n’est pas un fichier Compose complet. Le dossier distant doit conserver la définition intégrale des services et retirer le champ de construction de l’application. La référence persistée doit correspondre au digest validé — ou au tag local conservé pour un retour arrière — et non revenir automatiquement à latest lors d’un redémarrage manuel.
La commande de mise à jour doit cibler uniquement le service de la passerelle, sans dépendances, sans construction et sans téléchargement supplémentaire pendant sa recréation. Docker Compose fournit les options --no-deps, --no-build et --pull never pour encadrer cette opération 2. Il faut éviter les commandes qui relancent tout le projet, suppriment des services orphelins ou arrêtent l’ensemble de la pile.
Un verrou de fichier unique doit protéger la mise à jour, la récupération après incident, l’initialisation et le nettoyage. Si le verrou est déjà pris, un déclenchement concurrent doit quitter sans commencer une deuxième transaction. Avant toute action, l’outil doit aussi vérifier le nom du projet Compose, l’identité du conteneur de passerelle, la configuration et le conteneur de messagerie. En cas de modification manuelle inattendue, il doit s’arrêter plutôt que prendre le contrôle de l’installation.
Avant de recréer la passerelle, le système doit inscrire sur disque les références de l’ancienne et de la nouvelle image, les identifiants locaux, l’identité de l’ancien conteneur, une empreinte de configuration et l’étape en cours. L’écriture doit passer par un fichier temporaire puis un remplacement atomique, avec les mesures de synchronisation nécessaires pour réduire le risque de perdre l’état en cas de coupure. Un simple renommage ne constitue pas, à lui seul, une garantie de persistance après une panne de courant.
Après le téléchargement et les vérifications de l’image, l’outil enregistre l’intention de basculer, recrée uniquement la passerelle, puis vérifie que le nouveau conteneur utilise bien l’image attendue et reste en état de fonctionnement. Ce n’est qu’après validation qu’il marque le digest comme version courante.
Si la recréation échoue ou si les contrôles de santé ne passent pas dans le délai prévu, l’outil restaure l’ancienne référence locale et recrée uniquement la passerelle avec la configuration précédente. Si ce retour arrière réussit, il inscrit l’échec et met le nouveau digest en quarantaine. S’il échoue lui aussi, il conserve les éléments nécessaires à la récupération, renvoie une erreur et déclenche une alerte — sans boucle de redémarrages.
Un délai d’expiration ne prouve pas que l’opération Docker en arrière-plan s’est arrêtée. Après un timeout, le script doit d’abord examiner l’état réel des conteneurs et coordonner la reprise. En cas d’arrêt forcé ou de coupure, il ne peut pas compter sur un gestionnaire de sortie : au prochain lancement, il doit traiter en priorité toute transaction inachevée.
Un premier jeu de paramètres à tester pourrait prévoir une fenêtre totale de 60 secondes, un timeout de connexion d’une seconde, une limite de requête de trois secondes, une vérification toutes les deux secondes et trois réussites consécutives avant validation. Ce sont des valeurs de départ, pas des résultats mesurés.
Le contrôle pourrait interroger le catalogue local des modèles, exiger une réponse HTTP 200 sans suivre les redirections et vérifier la structure JSON. Une page de connexion ou une erreur de proxy ne doit pas compter comme un succès. Il faut également confirmer que le conteneur répondant exécute bien l’image candidate et que son compteur de redémarrages n’augmente pas continuellement. La réponse statique de l’ancien processus ne doit pas permettre une fausse validation.
Le nombre de modèles attendu ne doit pas être fixé arbitrairement : le contrat actuel du registre doit déterminer si un catalogue vide est acceptable. Un contrôle plus poussé peut vérifier l’endpoint de santé, mais l’outil ne devrait pas lancer automatiquement une vraie conversation susceptible de consommer des quotas. La disponibilité réelle du chat reste un contrôle distinct.
Pour un hôte Linux, systemd permet d’exécuter le script directement sur le serveur, sans conteneur d’actualisation. La proposition consiste à lancer une unité ponctuelle après le démarrage, puis à programmer le prochain contrôle cinq minutes après la fin du précédent, avec un décalage aléatoire pouvant aller jusqu’à 30 secondes. Les deux VPS devraient être décalés l’un par rapport à l’autre.
Cette périodicité vise une convergence à terme, pas une bascule simultanée. Si un nœud revient à sa version précédente, le laisser temporairement en arrière est préférable à une nouvelle tentative forcée avec une image défectueuse. Une baisse de priorité du script ne garantit pas non plus que le démon Docker n’utilisera pas fortement le processeur en décompressant l’image : il faudra mesurer les effets sur les machines visées.
L’outil aurait besoin de Bash, de Docker Engine, du greffon Compose, de curl, jq, flock et de Skopeo pour lire les manifestes sans télécharger les couches. Les versions et la disponibilité de ces outils restent à vérifier sur les systèmes concernés. L’exécution directe sur l’hôte évite de monter le socket Docker dans un conteneur, mais le compte qui pilote Docker conserve des privilèges importants : cela ne supprime pas le risque lié aux droits d’administration.
Pour un paquet privé sur GHCR, la documentation indique que l’accès en ligne de commande nécessite un jeton personnel classique ; un jeton de lecture de paquets suffit pour télécharger, sous réserve que son compte puisse accéder au paquet et que les exigences d’authentification unique de l’organisation soient satisfaites 9. Chaque VPS devrait recevoir un identifiant distinct, révocable et limité à la lecture. Il ne faut pas distribuer le jeton d’écriture de la CI ni transmettre les identifiants aux conteneurs de passerelle ou de messagerie. Une erreur d’authentification doit interrompre la mise à jour sans affecter le service en cours.
Le journal d’audit peut consigner l’heure UTC, le nœud, l’identifiant de transaction, les digests avant et après, les étapes, leur durée, le résultat des contrôles et celui du retour arrière. Il ne doit contenir ni secret, ni environnement complet, ni compte de messagerie, ni corps de réponse.
Le nettoyage devrait se limiter aux images historiques enregistrées comme appartenant à l’outil, sans nettoyage global des images ou des volumes. La version courante, la précédente version fonctionnelle et toutes les images impliquées dans une transaction non terminée doivent être protégées. Avant de supprimer une référence, il faut aussi vérifier qu’aucun conteneur existant ne l’utilise et qu’aucun autre tag ne sert à un usage distinct.
Une durée de conservation de quatorze jours et une rotation hebdomadaire des journaux au-delà d’un mégaoctet, avec conservation de 26 archives, sont des paramètres proposés à confirmer — pas une politique déjà installée. Si le disque manque d’espace avant le téléchargement, l’outil doit renoncer à la mise à jour plutôt que supprimer l’unique image de retour arrière. Une image dite « orpheline » n’est pas nécessairement inutilisée : il ne faut pas la supprimer de force sur cette seule base.
Avant d’activer le minuteur, il faudra vérifier sur chaque VPS la plateforme, les versions d’outils, le nom du projet Compose, les montages, les droits de lecture des identifiants et l’image actuellement en état de marche. Les variables et les options expérimentales de l’hôte doivent être contrôlées sur place ; les paramètres d’un fichier local ne prouvent pas que les mêmes réglages existent à distance. Toute migration de configuration incompatible devra disposer d’un plan réversible avant d’être automatisée.
Les essais devront ensuite couvrir les cas où le digest ne change pas, où l’accès au registre échoue, où l’image est défectueuse, où le contrôle renvoie autre chose que HTTP 200 ou dépasse son délai, ainsi que les arrêts forcés aux différentes étapes d’une transaction. Il faudra notamment vérifier que le retour arrière fonctionne sans connexion à GHCR et que l’identité, l’heure de démarrage et les données préparées du conteneur de messagerie restent inchangées.
La mise en service devrait se faire d’abord sur un seul VPS. Ce n’est qu’après validation d’une mise à jour réelle et d’un retour arrière que le minuteur serait activé sur le second. Le résultat visé est une mise à jour ciblée et récupérable, pas une garantie d’absence d’interruption : les performances de vérification à distance, la compatibilité des hôtes et la boucle complète de rollback restent à démontrer sur les machines concernées.
Studio Global AI
Cette page comprend une réponse basée sur la source que vous pouvez continuer dans Studio Global.
La stratégie proposée associe un minuteur systemd, une image identifiée par digest et un état de transaction persistant ; elle n’ajoute pas de conteneur chargé des mises à jour.
La stratégie proposée associe un minuteur systemd, une image identifiée par digest et un état de transaction persistant ; elle n’ajoute pas de conteneur chargé des mises à jour. Seul le service de la passerelle serait recréé. Le conteneur de messagerie, qui utilise un stockage en mémoire, doit rester intact.
Un retour arrière local peut éviter de dépendre du réseau si la nouvelle version échoue, mais ni le zéro interruption ni la perte d’aucune requête en cours ne sont garantis.