Dépôts et rétention
Fonctionnalité déployée et prise en charge. Les champs et commandes décrits ici sont stables au sein de la version v1alpha1.
Un dépôt doit être déclaré avant que le registre accepte d'y pousser ou d'en tirer une
image. Ce guide montre comment le déclarer avec sng registry create ou un manifeste
RegistryRepository, régler la rétention des tags, et le supprimer.
Prérequis
- La CLI
sngauthentifiée (sng sso login) et une session de tenant (sng tenant use acme). - Le droit d'appliquer des manifestes (
deploy:write, inclus dansreadwrite).
1. Déclarer un dépôt
sng registry create web
repository "web" declared in tenant acme, then usable as ovh-gra-0.registry.dev.stackngo.fr/acme/web
La commande enregistre un manifeste RegistryRepository dans l'état désiré de votre tenant. Le
dépôt est utilisable quelques minutes plus tard ; jusque-là, le registre en refuse l'accès.
Le même dépôt en manifeste :
apiVersion: registry.stackngo.io/v1alpha1
kind: RegistryRepository
metadata:
name: web
spec: {}
sng apply infra/RegistryRepository/web.yml
Pour partir d'un gabarit commenté : sng template gen RegistryRepository web > web.yml.
Nom du dépôt : minuscules, chiffres et séparateurs ., _, - entre deux caractères
alphanumériques (web, shop-api, tools.v2) ; pas de /. Le chemin complet est
<tenant>/<dépôt>.
2. Choisir la rétention
Sans rétention, tous les tags sont gardés. Pour limiter le stockage :
sng registry create web --keep-last 20 --keep-days 90 --keep-tag '^v\d+\.\d+\.\d+$'
apiVersion: registry.stackngo.io/v1alpha1
kind: RegistryRepository
metadata:
name: web
spec:
retention:
keepLastCount: 20 # les 20 derniers tags poussés
keepDays: 90 # ou poussés depuis moins de 90 jours
keepTagsRegex: ['^v\d+\.\d+\.\d+$'] # ou les releases, pour toujours
Un tag est gardé s'il remplit au moins une condition :
| Règle | Flag sng registry create | Effet |
|---|---|---|
keepTagsRegex | --keep-tag REGEX (répétable, 16 au plus) | gardé pour toujours s'il correspond à une des expressions (syntaxe Go) |
keepLastCount | --keep-last N | gardé s'il est parmi les N derniers tags poussés qui ne correspondent à aucun keepTagsRegex |
keepDays | --keep-days N | gardé s'il a été poussé il y a moins de N jours |
deleteUntagged | --keep-untagged pour le désactiver | les images sans tag sont effacées (par défaut) |
Les autres tags sont effacés par un nettoyage périodique : l'effet n'est pas immédiat (comptez jusqu'à 24 heures).
Avec seulement keepTagsRegex, sans keepLastCount ni keepDays, tous les tags restent
gardés : la plateforme ne supprime rien tant qu'aucune limite n'est donnée pour les autres.
3. Rendre un dépôt public
sng registry create docs --public
public: true autorise le pull anonyme, sans aucune session. Le push et la suppression
exigent toujours une session (ou, pour le push, une clé d'accès). Un dépôt public est aussi le moyen de partager une
image avec un autre tenant.
4. Vérifier
sng kind list RegistryRepository
La liste affiche chaque dépôt déclaré (NAME) et la date de sa dernière modification
(UPDATED).
Le moyen le plus direct de vérifier que le dépôt est actif est d'y pousser une image
(Pousser et tirer) : un refus registry refused the access juste
après la déclaration signifie le plus souvent que le dépôt n'est pas encore prêt : réessayez quelques minutes plus tard.
5. Supprimer un dépôt
sng registry delete web
⚠ Suppression définitive du RegistryRepository "web".
Tapez « oui » pour confirmer : oui
deleted: web (images are purged if deletionPolicy is Delete)
Ce qui arrive aux images dépend de deletionPolicy :
deletionPolicy | Le dépôt contient des tags | Résultat |
|---|---|---|
Block (défaut) | oui | le dépôt reste : plus aucun push accepté, le pull continue ; il disparaît dès que ses derniers tags sont effacés |
Block | non | le dépôt disparaît |
Delete | — | toutes les images taguées sont effacées, puis le dépôt disparaît |
Pour supprimer un dépôt en Block qui contient encore des images, effacez-les d'abord
(sng registry delete web:1.0.0, voir Pousser et tirer),
ou déclarez-le avec --deletion-policy Delete avant de le supprimer.
Pour aller plus loin
- Modifier un dépôt : relancez
sng registry createavec d'autres flags, ou modifiez le manifeste etsng apply. La nouvelle rétention est prise en compte sans interruption. - Expression invalide :
sng registry createrefuse une regex invalide avant tout envoi. Avec un manifeste dont une regex est invalide, le dépôt retombe sur « tout garder ». - Ordre d'évaluation : un tag qui correspond à
keepTagsRegexn'est pas compté danskeepLastCount. AveckeepLastCount: 20et des releasesv1.2.3, vous gardez toutes les releases plus les 20 derniers autres tags. - Suppression en cours : un tag poussé pendant la purge retarde la disparition du dépôt de quelques minutes.
- État du dépôt :
sng kind get RegistryRepository webaffiche le manifeste, puis l'état du dépôt en commentaires (conditionReady, raison et message). VoirRegistryRepository.