Cache d’artefacts dans Azure Container Registry
La fonctionnalité de cache d’artefacts permet aux utilisateurs de mettre en cache des images conteneur dans un registre de conteneurs privé. Le cache d’artefacts est disponible dans les niveaux de service Essentiel, Standard et Premium.
Le cache d’artefacts améliore la gestion des images conteneur en fournissant une solution de mise en cache pour les référentiels publics et privés.
Le cache d’artefacts offre des opérations de tirage (pull) plus fiables via Azure Container Registry (ACR), à l’aide de fonctionnalités telles que la géoréplication et la prise en charge des zones de disponibilité à des fins d’optimisation de la disponibilité et d’accélération des tirages d’images.
Le cache d’artefacts permet aux registres mis en cache d’être accessibles sur des réseaux privés pour que les utilisateurs puissent s’aligner sur les configurations de pare-feu et les normes de conformité en toute transparence.
Le cache d’artefacts résout le problème des limites de tirage imposées par les registres publics. Nous recommandons aux utilisateurs d’authentifier leurs règles de cache avec les informations d’identification de la source en amont. Puis de tirer les images du registre de conteneurs Azure local pour atténuer les limites de débit.
Terminologie
Règle de cache : une règle de cache est une règle que vous pouvez créer pour extraire des artefacts d’un référentiel pris en charge dans votre cache.
Une règle de cache contient quatre parties :
Nom de la règle : le nom de votre règle de cache. Par exemple :
Hello-World-Cache
.Source : le nom du registre source.
Chemin du référentiel : le chemin source du référentiel pour rechercher et récupérer les artefacts que vous souhaitez mettre en cache. Par exemple :
docker.io/library/hello-world
.Nouvel espace de noms du référentiel ACR : le nom du nouveau chemin d’accès au référentiel pour stocker les artefacts. Par exemple :
hello-world
. Le référentiel ne peut pas déjà exister à l’intérieur de l’instance ACR.
Informations d'identification
Les informations d’identification sont un ensemble composé d’un nom d’utilisateur et d’un mot de passe pour le registre source. Vous avez besoin d’informations d’identification pour vous authentifier auprès d’un référentiel public ou privé. Les informations d’identification contiennent quatre parties
Informations d’identification : le nom de vos informations d’identification.
Serveur de connexion au registre source : le serveur de connexion de votre registre source.
Authentification source : les emplacements du coffre de clés pour stocker les informations d’identification.
Secrets du nom d’utilisateur et du mot de passe : les secrets contenant le nom d’utilisateur et le mot de passe.
Limites
La mise en cache se produit uniquement une fois qu’au moins un tirage (pull) d’une image est terminé dans l’image conteneur disponible. Pour chaque nouvelle image disponible, un nouveau tirage de l’image doit être terminé. Le cache d’artefacts n’effectue pas automatiquement le tirage (pull) des nouvelles étiquettes des images quand une nouvelle étiquette est disponible. Cela figure sur la feuille de route, mais n’est pas pris en charge dans cette version.
Le cache d’artefacts prend uniquement en charge 1 000 règles de mise en cache.
Prise en charge en amont
Le cache d’artefacts prend en charge les registres en amont suivants :
Avertissement
Les clients doivent générer un ensemble d’informations d’identification pour obtenir du contenu à partir du hub Docker.
Registres en amont | Assistance technique | Disponibilité |
---|---|---|
Docker Hub | Prend uniquement en charge les tirages authentifiés. | Azure CLI, Portail Azure |
Registre des artefacts Microsoft | Prend uniquement en charge les tirages non authentifiés. | Azure CLI, Portail Azure |
Galerie publique AWS Elastic Container Registry (ECR) | Prend uniquement en charge les tirages non authentifiés. | Azure CLI, Portail Azure |
GitHub Container Registry | Prend en charge les tirages authentifiés et non authentifiés. | Azure CLI, Portail Azure |
Quay | Prend en charge les tirages authentifiés et non authentifiés. | Azure CLI, Portail Azure |
registry.k8s.io | Prend en charge les tirages authentifiés et non authentifiés. | Azure CLI |
Google Container Registry | Prend en charge les tirages authentifiés et non authentifiés. | Azure CLI |
Caractères génériques
Les caractères génériques utilisent des astérisques (*) pour établir une correspondance avec plusieurs chemins d’accès dans le registre d’images conteneur. Le cache d’artefacts prend en charge les caractères génériques suivants :
Remarque
Les règles de cache effectuent le mappage du référentiel cible => référentiel source.
Caractère générique au niveau du registre
Le caractère générique au niveau du registre vous permet de mettre en cache tous les référentiels d’un registre en amont.
Règle de cache | Mappage | Exemple |
---|---|---|
contoso.azurecr.io/* => mcr.microsoft.com/* | Mappage de toutes les images sous ACR à MCR. | contoso.azurecr.io/myapp/image1 => mcr.microsoft.com/myapp/image1 contoso.azurecr.io/myapp/image2 => mcr.microsoft.com/myapp/image2 |
Caractère générique au niveau du référentiel
Le caractère générique au niveau du référentiel vous permet de mettre en cache tous les référentiels d’un mappage de registre en amont au préfixe du référentiel.
Règle de cache | Mappage | Exemple |
---|---|---|
contoso.azurecr.io/dotnet/* => mcr.microsoft.com/dotnet/* | Mappage de référentiels spécifiques sous ACR aux référentiels correspondants dans MCR. | contoso.azurecr.io/dotnet/sdk => mcr.microsoft.com/dotnet/sdk contoso.azurecr.io/dotnet/runtime => mcr.microsoft.com/dotnet/runtime |
contoso.azurecr.io/library/dotnet/* => mcr.microsoft.com/dotnet/* contoso.azurecr.io/library/python/* => docker.io/library/python/* |
Mappage de référentiels spécifiques sous ACR aux référentiels de différents registres en amont. | contoso.azurecr.io/library/dotnet/app1 => mcr.microsoft.com/dotnet/app1 contoso.azurecr.io/library/python/app3 => docker.io/library/python/app3 |
Limitations des règles de cache basées sur des caractères génériques
Les règles de cache avec des caractères génériques utilisent des astérisques (*) pour établir une correspondance avec plusieurs chemins d’accès dans le registre d’images conteneur. Ces règles ne peuvent pas se chevaucher avec d’autres règles de mise en cache basées sur des caractères génériques. En d’autres termes, si vous disposez d’une règle de cache avec des caractères génériques pour un chemin d’accès de registre spécifique, vous ne pouvez pas ajouter une autre règle avec des caractères génériques qui la chevauche.
Voici quelques exemples de règles qui se chevauchent :
Exemple 1 :
Règle de cache existante : contoso.azurecr.io/* => mcr.microsoft.com/*
Nouveau cache ajouté : contoso.azurecr.io/library/* => docker.io/library/*
L’ajout de la nouvelle règle de cache est bloqué, car le chemin d’accès du référentiel cible contoso.azurecr.io/library/*
chevauche la règle avec des caractères génériques existante contoso.azurecr.io/*
.
Exemple 2 :
Règle de cache existante : contoso.azurecr.io/library/*
=>mcr.microsoft.com/library/*
Nouveau cache ajouté : contoso.azurecr.io/library/dotnet/*
=>docker.io/library/dotnet/*
L’ajout de la nouvelle règle de cache est bloqué, car le chemin d’accès du référentiel cible contoso.azurecr.io/library/dotnet/*
chevauche la règle avec des caractères génériques existante contoso.azurecr.io/library/*
.
Limitations pour les règles de cache statiques/fixes
Les règles de cache statiques ou fixes sont plus spécifiques et n’utilisent pas de caractères génériques. Elles peuvent chevaucher des règles de cache basées sur des caractères génériques. Si une règle de mise en cache spécifie un chemin d’accès de référentiel fixe, elle autorise le chevauchement avec une règle de mise en cache basée sur des caractères génériques.
Exemple 1 :
Règle de cache existante : contoso.azurecr.io/*
=>mcr.microsoft.com/*
Nouveau cache ajouté : contoso.azurecr.io/library/dotnet
=>docker.io/library/dotnet
L’ajout de la nouvelle règle de cache est autorisé, car contoso.azurecr.io/library/dotnet
est un chemin d’accès statique et peut chevaucher la règle avec des caractères génériques contoso.azurecr.io/*
.
Activer le cache d’artefacts - Azure CLI
Vous pouvez activer le cache d’artefacts dans votre instance d’Azure Container Registry avec ou sans authentification à l’aide d’Azure CLI en suivant les étapes ci-dessous.
Prérequis
- 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.46.0 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. - Vous disposez d’un coffre de clés existant pour stocker les informations d’identification. En savoir plus sur la création et le stockage des informations d’identification dans une instance Key Vault.
- Vous pouvez définir et récupérer des secrets à partir de votre Key Vault. En savoir plus sur la définition et la récupération d’un secret à partir de Key Vault.
Configurer et créer une règle de mise en cache sans les informations d’identification.
Exécutez la commande az acr Cache create pour créer une règle de mise en cache.
- Par exemple, pour créer une règle de cache sans les informations d’identification pour un Azure Container Registry
MyRegistry
donné.
az acr Cache create -r MyRegistry -n MyRule -s docker.io/library/ubuntu -t ubuntu-
- Par exemple, pour créer une règle de cache sans les informations d’identification pour un Azure Container Registry
Exécutez la commande az acr Cache show pour afficher une règle de mise en cache.
- Par exemple, pour afficher une règle de mise en cache pour un Azure Container Registry donné
MyRegistry
.
az acr Cache show -r MyRegistry -n MyRule
- Par exemple, pour afficher une règle de mise en cache pour un Azure Container Registry donné
Créer les informations d’identification
Avant de configurer les informations d’identification, vous devez créer et stocker des secrets dans Azure Key Vault et récupérer les secrets du coffre de clés. En savoir plus sur la création et le stockage des informations d’identification dans une instance Key Vault. Et pour définir et récupérer un secret à partir de Key Vault..
Exécutez la commande az acr credential set create pour créer les informations d’identification.
- Par exemple, pour créer les informations d’identification pour un registre de conteneurs Azure
MyRegistry
donné :
az acr credential-set create -r MyRegistry \ -n MyDockerHubCredSet \ -l docker.io \ -u https://MyKeyvault.vault.azure.net/secrets/usernamesecret \ -p https://MyKeyvault.vault.azure.net/secrets/passwordsecret
- Par exemple, pour créer les informations d’identification pour un registre de conteneurs Azure
Exécutez az acr credential set update pour mettre à jour l’ID secret KV du nom d’utilisateur ou du mot de passe sur un jeu d’informations d’identification.
- Par exemple, pour mettre à jour l’ID secret KV du nom d’utilisateur ou du mot de passe sur les informations d’identification d’un registre de conteneurs Azure
MyRegistry
donné.
az acr credential-set update -r MyRegistry -n MyDockerHubCredSet -p https://MyKeyvault.vault.azure.net/secrets/newsecretname
- Par exemple, pour mettre à jour l’ID secret KV du nom d’utilisateur ou du mot de passe sur les informations d’identification d’un registre de conteneurs Azure
Exécutez az acr credential-set show pour afficher les informations d’identification.
- Par exemple, pour afficher un jeu d’informations d’identification dans un Azure Container Registry
MyRegistry
donné.
az acr credential-set show -r MyRegistry -n MyDockerHubCredSet
- Par exemple, pour afficher un jeu d’informations d’identification dans un Azure Container Registry
Configurer et créer une règle de mise en cache avec les informations d’identification
Exécutez la commande az acr cache create pour créer une règle de mise en cache.
- Par exemple, pour créer une règle de cache avec les informations d’identification pour un registre de conteneurs Azure
MyRegistry
donné :
az acr cache create -r MyRegistry -n MyRule -s docker.io/library/ubuntu -t ubuntu -c MyDockerHubCredSet
- Par exemple, pour créer une règle de cache avec les informations d’identification pour un registre de conteneurs Azure
Exécutez la commande az acr cache update pour mettre à jour les informations d’identification sur une règle de cache.
- Par exemple, pour mettre à jour les informations d’identification sur une règle de cache pour un registre de conteneurs Azure
MyRegistry
donné :
az acr cache update -r MyRegistry -n MyRule -c NewCredSet
- Par exemple, pour supprimer les informations d’identification d’une règle de cache existante pour un registre de conteneurs Azure
MyRegistry
donné :
az acr cache update -r MyRegistry -n MyRule --remove-cred-set
- Par exemple, pour mettre à jour les informations d’identification sur une règle de cache pour un registre de conteneurs Azure
Exécutez la commande az acr cache show pour afficher une règle de mise en cache.
- Par exemple, pour afficher une règle de mise en cache pour un Azure Container Registry donné
MyRegistry
.
az acr cache show -r MyRegistry -n MyRule
- Par exemple, pour afficher une règle de mise en cache pour un Azure Container Registry donné
Attribuez des autorisations à Key Vault à l'aide de politiques d'accès (héritées)
Obtenez l’ID principal de l’identité système utilisée pour accéder à Key Vault.
PRINCIPAL_ID=$(az acr credential-set show -n MyDockerHubCredSet \ -r MyRegistry \ --query 'identity.principalId' \ -o tsv)
Exécutez la commande az keyvault set-policy pour attribuer l’accès à Key Vault, avant d’extraire l’image.
- Par exemple, pour autoriser les informations d’identification à accéder au secret du coffre de clés :
az keyvault set-policy --name MyKeyVault \ --object-id $PRINCIPAL_ID \ --secret-permissions get
Extraire votre image
Extrayez l’image de votre cache à l’aide de la commande Docker en utilisant le nom du serveur de connexion au Registre, le nom du référentiel et l’étiquette souhaitée.
- Par exemple, pour extraire l’image du référentiel
hello-world
avec l’étiquettelatest
souhaitée pour un serveurmyregistry.azurecr.io
de connexion au Registre donné.
docker pull myregistry.azurecr.io/hello-world:latest
- Par exemple, pour extraire l’image du référentiel
Nettoyer les ressources
Exécutez la commande az acr cache list pour répertorier les règles de mise en cache dans Azure Container Registry.
- Par exemple, pour répertorier les règles de mise en cache pour un Azure Container Registry donné
MyRegistry
.
az acr cache list -r MyRegistry
- Par exemple, pour répertorier les règles de mise en cache pour un Azure Container Registry donné
Exécutez la commande az acr cache delete pour supprimer une règle de mise en cache.
- Par exemple, pour supprimer une règle de mise en cache pour un Azure Container Registry donné
MyRegistry
.
az acr cache delete -r MyRegistry -n MyRule
- Par exemple, pour supprimer une règle de mise en cache pour un Azure Container Registry donné
Exécutez az acr credential set list pour lister les informations d’identification dans un registre de conteneurs Azure.
- Par exemple, pour lister les informations d’identification pour un registre de conteneurs Azure
MyRegistry
donné :
az acr credential-set list -r MyRegistry
- Par exemple, pour lister les informations d’identification pour un registre de conteneurs Azure
Exécutez az acr credential-set delete pour supprimer les informations d’identification.
- Par exemple, pour supprimer les informations d’identification pour un registre de conteneurs Azure
MyRegistry
donné :
az acr credential-set delete -r MyRegistry -n MyDockerHubCredSet
- Par exemple, pour supprimer les informations d’identification pour un registre de conteneurs Azure
Activer le cache d’artefacts - Portail Azure
Vous pouvez activer le cache d’artefacts dans votre instance d’Azure Container Registry avec ou sans authentification à l’aide du portail Azure en suivant les étapes ci-dessous.
Prérequis
- Connectez-vous au portail Azure
- Vous disposez d’une instance Key Vault existante pour stocker les informations d’identification. En savoir plus sur la création et le stockage des informations d’identification dans une instance Key Vault.
- Vous disposez des coffres de clés existants sans les contrôles RBAC (contrôles d’accès en fonction du rôle).
Configurer le cache d’artefacts sans informations d’identification
Suivez les étapes pour créer une règle de cache dans le portail Azure.
Accédez à votre registre de conteneurs Azure.
Dans le menu latéral, sous Services, sélectionnez Cache.
Sélectionnez Créer une règle.
Une fenêtre Nouvelle règle de cache s’affiche.
Entrez le Nom de la règle.
Sélectionnez Registre Source dans le menu déroulant.
Entrez le chemin du référentiel des artefacts que vous souhaitez mettre en cache.
Vous pouvez ignorer l’authentification si vous n’accédez pas à un référentiel privé ou n’effectuez pas d’extraction authentifiée.
Sous Destination, entrez le nom de l’Espace de noms du nouveau référentiel ACR pour stocker les artefacts mis en cache.
Sélectionnez Enregistrer.
Extrayez l’image de votre cache à l’aide de la commande Docker en utilisant le nom du serveur de connexion au Registre, le nom du référentiel et l’étiquette souhaitée.
- Par exemple, pour extraire l’image du référentiel
hello-world
avec l’étiquettelatest
souhaitée pour un serveurmyregistry.azurecr.io
de connexion au Registre donné.
docker pull myregistry.azurecr.io/hello-world:latest
- Par exemple, pour extraire l’image du référentiel
Configurer le cache d’artefacts avec authentification
Suivez les étapes pour créer une règle de cache dans le portail Azure.
Accédez à votre registre de conteneurs Azure.
Dans le menu latéral, sous Services, sélectionnez Cache.
Sélectionnez Créer une règle.
Une fenêtre Nouvelle règle de cache s’affiche.
Entrez le Nom de la règle.
Sélectionnez Registre Source dans le menu déroulant.
Entrez le chemin du référentiel des artefacts que vous souhaitez mettre en cache.
Pour ajouter une authentification au référentiel, cochez la case Authentification.
Choisissez Créer de nouvelles informations d’identification pour créer un nouveau jeu d’informations d’identification afin de stocker le nom d’utilisateur et le mot de passe de votre registre source. Découvrez comment créer des informations d’identification.
Si vous avez des informations d’identification prêtes, sélectionnez les informations d’identification dans le menu déroulant.
Sous Destination, entrez le nom de l’Espace de noms du nouveau référentiel ACR pour stocker les artefacts mis en cache.
Sélectionnez Enregistrer.
Extrayez l’image de votre cache à l’aide de la commande Docker en utilisant le nom du serveur de connexion au Registre, le nom du référentiel et l’étiquette souhaitée.
- Par exemple, pour extraire l’image du référentiel
hello-world
avec l’étiquettelatest
souhaitée pour un serveurmyregistry.azurecr.io
de connexion au Registre donné.
docker pull myregistry.azurecr.io/hello-world:latest
- Par exemple, pour extraire l’image du référentiel
Créer de nouvelles informations d’identification
Avant de configurer les informations d’identification, vous exigez la création et le stockage des secrets dans Azure Key Vault et la récupération des secrets du coffre de clés. En savoir plus sur la création et le stockage des informations d’identification dans une instance Key Vault. Et pour définir et récupérer un secret à partir de Key Vault..
Accédez à Informations d’identification>Créer des informations d’identification.
Entrez un Nom pour les nouvelles informations d’identification de votre registre source.
Sélectionnez une Authentification source. Le cache d’artefacts prend en charge l’option Sélectionner dans Key Vault et Entrer les URI de secret.
Pour l’option Sélectionner dans le coffre de clés, explorez plus en détail la création d’informations d’identification avec un coffre de clés.
Sélectionnez Créer.
Étapes suivantes
- Passez à l’article suivant pour parcourir le guide de résolution des problèmes du cache du Registre.