Stratégie de rétention pour les manifestes non étiquetés

Azure Container Registry vous donne la possibilité de définir une stratégie de rétention pour les manifestes d’image stockés qui n’ont pas d’étiquette associée (manifestes non étiquetés). Quand une stratégie de rétention est activée, les manifestes non étiquetés dans le registre sont automatiquement supprimés après un certain nombre de jours que vous définissez. Cette fonctionnalité empêche que le registre se remplisse d’artefacts superflus et vous permet d’économiser des coûts de stockage.

Pour exécuter les exemples de commandes fournis dans cet article, vous pouvez utiliser Azure Cloud Shell ou une installation locale d’Azure CLI. Si vous souhaitez l’utiliser en local, la version 2.0.74 ou une version ultérieure est requise. Exécutez az --version pour trouver la version. Si vous devez installer ou mettre à niveau, voir Installer Azure CLI.

La création d’une stratégie de rétention pour les manifestes non étiquetés constitue actuellement une fonctionnalité d’évaluation des registres de conteneurs Premium. Pour plus d’informations sur les niveaux de service de registre, consultez Niveaux de service d’Azure Container Registry.

Avertissement

Définissez la stratégie de rétention avec soin car les données d’une image supprimée son IRRÉCUPÉRABLES. Si vous disposez de systèmes qui tirent (pull) des images en fonction du code de hachage du manifeste (et non en fonction du nom de l’image), vous ne devez pas définir de stratégie de rétention pour les manifestes non étiquetés. La suppression des images sans étiquette va empêcher ces systèmes de tirer les images à partir du registre. Au lieu de tirer en fonction du manifeste, envisagez d’adopter un schéma d’étiquetage unique (il s’agit là d’une bonne pratique).

À propos de la stratégie de conservation

Azure Container Registry fait référence au décompte des manifestes dans le registre. Lorsqu’un manifeste n’est pas étiqueté, il vérifie la stratégie de conservation. Si une stratégie de conservation est activée, une opération de suppression de manifeste est mise en file d’attente, avec une date spécifique, en fonction du nombre de jours défini dans la stratégie.

Un travail de gestion de file d’attente distinct traite en permanence les messages et effectue la mise à l’échelle requise. En guise d’exemple, supposons que vous avez supprimé les étiquettes de deux manifestes, à 1 heure d’intervalle, dans un registre avec une stratégie de conservation de 30 jours. Deux messages sont mis en file d’attente. Ensuite, 30 jours plus tard, à environ 1 heure d’intervalle, les messages sont récupérés de la file d’attente et traités, en supposant que la stratégie était toujours en vigueur.

Si l’attribut delete-enabled d’un manifeste non étiqueté possède la valeur false, le manifeste est verrouillé et n’est pas supprimé par la stratégie.

Important

La stratégie de rétention ne s’applique qu’aux manifestes non étiquetés dont le timestamp est postérieur à l’activation de la stratégie. Les manifestes non étiquetés du registre qui présentent des timestamps antérieurs ne sont pas soumis à la stratégie. Pour obtenir d’autres options de suppression des données d’image, consultez les exemples de l’article Suppression d’images conteneur dans Azure Container Registry.

Définir une stratégie de rétention – CLI

L’exemple suivant montre comment utiliser Azure CLI pour définir une stratégie de rétention pour des manifestes non étiquetés dans un registre.

Activer une stratégie de rétention

Par défaut, aucune stratégie de rétention n’est définie dans un registre de conteneurs. Pour définir ou mettre à jour une stratégie de rétention, exécutez la commande az acr config retention update dans Azure CLI. Vous pouvez spécifier un nombre de jours compris entre 0 et 365 pour la rétention des manifestes non étiquetés. Si vous ne spécifiez pas de nombre de jours, la commande définit une valeur par défaut de 7 jours. Après la période de rétention, tous les manifestes non étiquetés dans le registre sont automatiquement supprimés.

L’exemple suivant définit une stratégie de rétention de 30 jours pour les manifestes non étiquetés dans le registre myregistry :

az acr config retention update --registry myregistry --status enabled --days 30 --type UntaggedManifests

L’exemple suivant définit une stratégie pour supprimer du registre tout manifeste non étiqueté. Créez cette stratégie en définissant une période de conservation de 0 jour.

az acr config retention update \
  --registry myregistry --status enabled \
  --days 0 --type UntaggedManifests

Valider une stratégie de conservation

Si vous activez la stratégie précédente avec une période de conservation de 0 jour, vous pouvez rapidement vérifier que les manifestes non étiquetés sont supprimés :

  1. Envoyez une image de test hello-world:latest à votre registre ou remplacez une autre image de test de votre choix.
  2. Supprimez les étiquettes de l’image hello-world:latest, par exemple, à l’aide de la commande az acr repository untag. Le manifeste non étiqueté reste dans le registre.
    az acr repository untag \
      --name myregistry --image hello-world:latest
    
  3. Au bout de quelques secondes, le manifeste non étiqueté est supprimé. Vous pouvez vérifier la suppression en dressant la liste des manifestes dans le référentiel, par exemple, à l’aide de la commande az acr manifest list-metadata. Si l’image de test était la seule dans le référentiel, le référentiel lui-même est supprimé.

Gestion d’une stratégie de rétention

Pour afficher la stratégie de rétention définie dans un registre, exécutez la commande az acr config retention show :

az acr config retention show --registry myregistry

Pour désactiver une stratégie de rétention dans un registre, exécutez la commande az acr config retention update et définissez --status disabled :

az acr config retention update \
  --registry myregistry --status disabled \
  --type UntaggedManifests

Définir une stratégie de rétention – Portail

Vous pouvez également définir une stratégie de rétention du registre via le portail Azure.

Activer une stratégie de rétention

  1. Accédez à votre registre de conteneurs Azure. Sous Stratégies, sélectionnez Rétention (préversion).
  2. Dans État, sélectionnez Activé.
  3. Sélectionnez un nombre de jours compris entre 0 et 365 pour la rétention des manifestes non étiquetés. Sélectionnez Enregistrer.

Activer une stratégie de rétention dans le portail Azure

Désactiver une stratégie de rétention

  1. Accédez à votre registre de conteneurs Azure. Sous Stratégies, sélectionnez Rétention (préversion).
  2. Dans État, sélectionnez Désactivé. Sélectionnez Enregistrer.

Étapes suivantes