retention
La section retention contrôle ce que imglife cleanup supprime.
Structure
Section intitulée « Structure »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 |
Fonctionnement de la politique
Section intitulée « Fonctionnement de la politique »Pour chaque image configurée, imglife cleanup :
- Récupère la liste complète des tags depuis le registry OCI.
- Trie les tags par date de création (le plus récent en premier).
- Exclut les tags correspondant à
exclude_tags. - Conserve les
keep_lasttags les plus récents. - 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.
Archivage
Section intitulée « Archivage »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 sourceAprès archive.keep_days jours, les cycles de cleanup suivants suppriment aussi le tag archivé.
Détection des orphelins
Section intitulée « Détection des orphelins »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.
Aperçu et dry-run
Section intitulée « Aperçu et dry-run »Prévisualisez toujours avant d’appliquer :
imglife cleanup --list # afficher ce qui serait affectéimglife cleanup --dry-run # simuler sans supprimerimglife cleanup # appliquer