Meilleures pratiques pour Azure Container Registry

En suivant ces bonnes pratiques, vous pouvez optimiser les performances et l’efficacité des coûts d’utilisation de votre registre privé dans Azure, et déployer des images conteneur et d’autres artefacts.

Pour plus d’informations sur les concepts des registres, consultez À propos des registres, des référentiels et des images. Consultez également les Suggestions pour la création de balises et de versions pour les images de conteneurs pour des stratégies de création de balises et de versions pour les images dans votre registre.

Déploiement proche du réseau

Créez votre registre de conteneurs dans la même région Azure que celle où vous déployez des conteneurs. En plaçant votre registre dans une région dont le réseau est proche des hôtes de vos conteneurs, vous pouvez en réduire la latence et le coût.

Un déploiement proche du réseau est l’une des principales raisons qui justifient l’utilisation d’un registre de conteneurs privé. Les images Docker ont une construction en couches efficace qui permet un déploiement incrémentiel. Les nouveaux nœuds doivent cependant extraire toutes les couches requises pour une image donnée. Ce docker pull initial peut rapidement atteindre plusieurs gigaoctets. Le fait d’avoir un registre privé proche de votre déploiement réduit la latence du réseau. En outre, tous les clouds publics, y compris Azure, appliquent des frais de sortie du réseau. L’extraction d’images d’un centre de données à un autre augmente non seulement la latence, mais également les frais de sortie du réseau.

Géo-réplication de déploiements dans plusieurs régions

Utilisez la fonction de géo-réplication d’Azure Container Registry si vous déployez des conteneurs dans plusieurs régions. Si vous intervenez auprès de clients du monde entier à partir de centres de données locaux ou si votre équipe de développement se trouve sur différents sites, vous pouvez géo-répliquer votre registre pour en simplifier la gestion et réduire la latence. Vous pouvez également configurer des webhooks régionaux pour vous avertir des événements dans des réplicas spécifiques, par exemple quand des images sont envoyées.

La géoréplication est disponible avec les registres Premium. Pour savoir comment utiliser la géo-réplication, consultez le didacticiel en trois parties relatif à la géoréplication dans Azure Container Registry.

Optimiser les performances des tirages

En plus du placement des images à proximité de vos déploiements, les caractéristiques de vos images elles-mêmes peuvent impacter les performances des tirages.

  • Taille de l’image : réduisez la taille de vos images en supprimant les couches inutiles ou en réduisant la taille des couches. Une façon de réduire la taille d’une image est d’utiliser l’approche de génération Docker en plusieurs étapes pour inclure seulement les composants de runtime nécessaires.

    Vérifiez également si votre image peut inclure une image du système d’exploitation de base plus légère. Et si vous utilisez un environnement de déploiement comme Azure Container Instances qui met en cache certaines images de base, vérifiez si vous pouvez échanger la couche d’une image avec une des images mises en cache.

  • Nombre de couches : équilibrer le nombre de couches utilisées. Si vous avez trop peu, vous ne bénéficiez pas de la réutilisation et de la mise en cache des couches sur l’hôte. Si vous en avez trop, votre environnement de déploiement consacre plus de temps aux tirages et à la décompression. Avoir 5 à 10 couches est optimal.

Choisissez également un niveau de service d’Azure Container Registry répondant à vos besoins en matière de performances. Le niveau Premium offre la bande passante la plus large et le débit le plus élevé d’opérations simultanées de lecture et d’écriture, utile quand vous avez des déploiements de grand volume.

Espaces de noms du référentiel

En utilisant des espaces de noms de référentiel, vous pouvez autoriser le partage d’un même registre entre plusieurs groupes au sein de votre organisation. Les registres peuvent être partagés entre plusieurs déploiements et équipes. Azure Container Registry prend en charge les espaces de noms imbriqués de manière à faciliter l’isolement de groupes. Toutefois, le registre gère tous les référentiels indépendamment, et non en tant que hiérarchie.

Prenons par exemple les balises d’image de conteneur suivantes : Les images qui sont utilisées dans l’ensemble de l’entreprise, telles que aspnetcore, sont placées dans l’espace de noms racine, tandis que les images de conteneur détenues par les groupes Produits et Marketing utilisent chacune leurs propres espaces de noms.

  • contoso.azurecr.io/aspnetcore:2.0
  • contoso.azurecr.io/products/widget/web:1
  • contoso.azurecr.io/products/bettermousetrap/refundapi:12.3
  • contoso.azurecr.io/marketing/2017-fall/concertpromotions/campaign:218.42

Groupe de ressources dédié

Étant donné que les registres de conteneurs sont des ressources utilisées sur plusieurs hôtes de conteneur, il est préférable qu'un registre réside dans son propre groupe de ressources.

Bien qu’il soit possible de tester un type d’hôte spécifique, par exemple Azure Container Instances, vous voudrez probablement supprimer l’instance de conteneur une fois que vous en avez terminé. Mais vous trouverez peut-être également judicieux de conserver la collection d’images que vous avez transmise à Azure Container Registry. En plaçant votre registre dans son propre groupe de ressources, vous réduisez le risque de supprimer accidentellement la collection d’images dans le registre lorsque vous supprimez le groupe de ressources de l’instance de conteneur.

Authentification et autorisation

Lorsque vous vous authentifiez avec Azure Container Registry, vous pouvez vous trouver dans deux cas de figure : une authentification individuelle et une authentification de service (ou « sans affichage »). Le tableau suivant fournit une brève vue d’ensemble de ces scénarios et décrit la méthode d’authentification recommandée pour chacun.

Type Exemple de scénario Méthode recommandée
Identité individuelle Un développeur qui extrait des images ou transmet des images à partir de son ordinateur de développement. az acr login
Identité de service / sans affichage Pipelines de génération et de déploiement dans lequel l’utilisateur n’intervient pas directement. Principal du service

Pour obtenir des informations détaillées sur ceux-ci et sur d’autres scénarios d’authentification auprès d’Azure Container Registry, consultez S’authentifier auprès d’un registre de conteneurs Azure.

Azure Container Registry prend en charge les pratiques de sécurité de votre organisation pour distribuer les responsabilités et les privilèges à différentes identités. En utilisant le contrôle d’accès en fonction du rôle, affectez les autorisations appropriées à différents utilisateurs, principaux de service ou à d’autres identités qui effectuent différentes opérations sur le registre. Par exemple, affectez des autorisations d’envoi à un principal de service utilisé dans un pipeline de build et affectez des autorisations de tirage à une identité différente utilisée pour le déploiement. Créez des jetons pour un accès précis et limité dans le temps à des référentiels spécifiques.

Gérer la taille du registre

Les contraintes de stockage de chaque niveau de service du registre de conteneurs sont conçues pour s’adapter à un scénario classique : De base pour démarrer, Standard pour la majorité des applications de production, et Premium pour des performances à très grande échelle et pour la géoréplication. Pendant toute la durée de vie de votre registre, vous devez gérer sa taille en supprimant régulièrement le contenu inutilisé.

Utilisez la commande de l’interface CLI Azure az acr show-usage pour afficher la consommation actuelle du stockage et d’autres ressources dans votre registre :

az acr show-usage --resource-group myResourceGroup --name myregistry --output table

Exemple de sortie :

NAME                        LIMIT         CURRENT VALUE    UNIT
--------------------------  ------------  ---------------  ------
Size                        536870912000  215629144        Bytes
Webhooks                    500           1                Count
Geo-replications            -1            3                Count
IPRules                     100           1                Count
VNetRules                   100           0                Count
PrivateEndpointConnections  10            0                Count

Vous pouvez également retrouver le stockage actuel utilisé dans la Vue d’ensemble de votre registre dans le portail Azure :

Informations sur l’utilisation du registre dans le portail Azure

Notes

Dans un registre géo-répliqué, l’utilisation du stockage est indiquée pour la région d’hébergement. Multiplier par le nombre de réplications pour le stockage de registre total consommé.

Supprimer les données d’image

Azure Container Registry prend en charge plusieurs méthodes permettant de supprimer des données image de votre registre de conteneurs. Vous pouvez supprimer des images par balise ou synthèse de manifeste, ou encore supprimer un référentiel dans son intégralité.

Pour en savoir plus sur la suppression des données image de votre registre, notamment des images sans balises (parfois appelées « non résolues » ou « orphelines ») des images, consultez la section Supprimer des images conteneur dans Azure Container Registry. Vous pouvez également définir une stratégie de rétention pour les manifestes sans balise.

Étapes suivantes

Azure Container Registry est disponible en plusieurs niveaux (également appelés « références SKU »), qui fournissent des fonctionnalités différentes. Pour plus d’informations sur les niveaux de service disponibles, consultez Niveaux de service Azure Container Registry.

Pour obtenir des recommandations visant à améliorer la posture de sécurité de vos registres de conteneur, consultez Base de référence de sécurité Azure pour Azure Container Registry.