Aller au contenu

retention

La section retention contrôle ce que imglife cleanup supprime.

retention:
keep_last: 5
max_age_days: 90
exclude_tags:
- latest
- stable
archive:
enabled: true
registry: registry.example.com/archive
keep_days: 180
Champ Type Requis Défaut Description
keep_last integer non 5 Nombre de tags les plus récents à conserver par image
max_age_days integer non 30 Âge maximum en jours ; les tags plus anciens sont supprimés
exclude_tags []string non [] Tags à ne jamais supprimer (correspondance exacte)
archive.enabled bool non false Copier les tags expirés vers un registry d’archive avant suppression
archive.registry string si archive Chemin du registry pour les images archivées
archive.keep_days integer non 90 Jours de rétention des tags archivés avant suppression finale

Pour chaque image configurée, imglife cleanup :

  1. Récupère la liste complète des tags depuis le registry OCI.
  2. Trie les tags par date de création (le plus récent en premier).
  3. Exclut les tags correspondant à exclude_tags.
  4. Conserve les keep_last tags les plus récents.
  5. Supprime (ou archive) les tags plus anciens que max_age_days.

Les deux conditions s’appliquent : un tag doit violer soit la limite keep_last soit la limite max_age_days pour être candidat à la suppression. Un tag en position 6 créé il y a 10 jours est supprimé car keep_last=5 ; un tag vieux de 120 jours est supprimé quelle que soit sa position.

Les étapes 2 et 4 sont effectuées par ligne de version — une ligne par entrée sync visant ce dépôt (avec son propre keep_last) et une par bloc build.images qui le produit — de sorte qu’une ligne ancienne n’est jamais évincée par une ligne plus récente du même dépôt. Les tags ne correspondant à aucune ligne d’un dépôt miroir restent classés ensemble sous retention.keep_last. Un tag de base dont la ligne a été retirée de la configuration devient un type-orphan et est supprimé après max_age_days.

Quand archive.enabled: true, imglife copie le tag vers le registry d’archive avant de le supprimer de la source :

registry.example.com/bases/alpine:3.19.4-core1.0.0
→ copie → registry.example.com/archive/bases/alpine:3.19.4-core1.0.0
→ suppression de la source

Après archive.keep_days jours, les cycles de cleanup suivants suppriment aussi le tag archivé.

imglife détecte aussi les images type-orphan : des images présentes dans le registry mais qui ne sont plus déclarées dans la section build:. Celles-ci sont signalées dans la sortie --list mais ne sont pas supprimées automatiquement — une confirmation manuelle est requise.

Prévisualisez toujours avant d’appliquer :

Terminal window
imglife cleanup --list # afficher ce qui serait affecté
imglife cleanup --dry-run # simuler sans supprimer
imglife cleanup # appliquer