Projet

Général

Profil

Tâche #35368

Scénario #35185: EOLE 2.9 : L'utilisation des tag pour les images de conteneur n'est pas suffisante pour s'assurer de la mise à jour

Étude

Ajouté par Benjamin Bohard il y a environ un an. Mis à jour il y a 12 mois.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Début:
01/10/2022
Echéance:
% réalisé:

100%

Restant à faire (heures):
0.0

Historique

#1 Mis à jour par Benjamin Bohard il y a environ un an

  • Statut changé de Nouveau à En cours

#2 Mis à jour par Benjamin Bohard il y a environ un an

Actuellement, il existe deux façons d’utiliser les conteneurs sur les modules EOLE :
  1. usage du type application (ERA),
  2. usage du type service (eolesso, mongodb).
Pour la mise à jour des conteneurs, il est possible de recourir à deux méthodes :
  1. podman pull
  2. podman auto-update

podman pull

On peut lancer la commande podman pull lors du Maj-Auto et la nouvelle image sera utilisé au redémarrage du service (reconfigure ou lancement de l’application)

podman auto-update

On peut indiquer que les services (eolesso et mongodb) sont destinés à être mis à jour "à chaud" et lancer la commande podman auto-update lors du Maj-Auto (il existe une option --dry-run qui pourrait être utilisée lors du Query-Auto).
Ces services seraient redémarrés automatiquement lors du Maj-Auto en cas de mise à jour.
Ils seraient, de toute façon, arrêtés puis démarrés lors du reconfigure qui devrait suivre le Maj-Auto.

Cette commande prévoit la possibilité de retour à la version précédente si le service ne démarre pas avec la version mise à jour.

#3 Mis à jour par Benjamin Bohard il y a environ un an

Deux pistes pour l’implémentation :
  • un script exécutable à placer dans /usr/share/eole/majauto ou /usr/share/eole/majauto_pre/
  • une classe à ajouter dans pyeole.pkg et à appeler dans Maj-Auto.

La première solution est la moins complexe à mettre en œuvre. Il manque la prise en charge de l’option --dry-run pour le Query-Auto qui pourrait sans doute être ajoutée par le passage en argument dans

system(RUNPARTS_CMD.format(RUNPARTS_PATH_PRE))

par
RUNPARTS_CMD = '/bin/run-parts --exit-on-error -v {args} {folder}'
system(RUNPARTS_CMD.format(args="--arg=--dry-run" if opts.dry_run else '', folder=RUNPARTS_PATH_PRE))

Il faut également prendre soin de faire un CreoleCat sur le fichier de variables d’environnement pour disposer du bon tag avant de tenter la récupération des images.

La seconde solution est beaucoup plus invasive dans le code de pyeole.pkg et Maj-Auto mais permettrait d’avoir un rendu cohérent, notamment en permettant d’afficher toutes les informations de mise à jour en même temps pour le Query-Auto.

Concernant l’emploi de podman pull ou de podman auto-update, il semble finalement plus cohérent avec le fonctionnement global d’un module de faire un podman pull au moment de la mise à jour. Le service sera arrêté puis redémarré au reconfigure et utilisera la nouvelle image à ce moment.

L’utilisation de podman auto-update provoquerait un redémarrage du service à un moment inattendu.

Pour l’équivalent du Query-Auto, on peut s’appuyer sur l’utilitaire skopeo pour inspecter l’image sur le registre distant.

#4 Mis à jour par Benjamin Bohard il y a 12 mois

  • Statut changé de En cours à À valider
  • % réalisé changé de 0 à 100

#5 Mis à jour par Ludwig Seys il y a 12 mois

  • Statut changé de À valider à Résolu

#6 Mis à jour par Joël Cuissinat il y a 12 mois

  • Statut changé de Résolu à Fermé
  • Restant à faire (heures) mis à 0.0

Formats disponibles : Atom PDF