Aller au contenu principal

Dépôts et rétention

Disponible

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 sng authentifiée (sng sso login) et une session de tenant (sng tenant use acme).
  • Le droit d'appliquer des manifestes (deploy:write, inclus dans readwrite).

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 :

infra/RegistryRepository/web.yml
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+$'
infra/RegistryRepository/web.yml
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ègleFlag sng registry createEffet
keepTagsRegex--keep-tag REGEX (répétable, 16 au plus)gardé pour toujours s'il correspond à une des expressions (syntaxe Go)
keepLastCount--keep-last Ngardé s'il est parmi les N derniers tags poussés qui ne correspondent à aucun keepTagsRegex
keepDays--keep-days Ngardé s'il a été poussé il y a moins de N jours
deleteUntagged--keep-untagged pour le désactiverles 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).

Seulement des motifs, sans compte ni durée

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 :

deletionPolicyLe dépôt contient des tagsRésultat
Block (défaut)ouile dépôt reste : plus aucun push accepté, le pull continue ; il disparaît dès que ses derniers tags sont effacés
Blocknonle 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 create avec d'autres flags, ou modifiez le manifeste et sng apply. La nouvelle rétention est prise en compte sans interruption.
  • Expression invalide : sng registry create refuse 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 à keepTagsRegex n'est pas compté dans keepLastCount. Avec keepLastCount: 20 et des releases v1.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 web affiche le manifeste, puis l'état du dépôt en commentaires (condition Ready, raison et message). Voir RegistryRepository.

Voir aussi​