Intégrer Docker Scout avec Azure Container Registry
L'intégration de Docker Scout avec Azure Container Registry (ACR) vous permet de voir
les insights d'image pour les images hébergées dans les dépôts ACR. Après avoir intégré Docker
Scout avec ACR et activé Docker Scout pour un dépôt, pousser une image
vers le dépôt déclenche automatiquement l'analyse d'image. Vous pouvez voir les insights d'image
en utilisant le Tableau de bord Docker Scout, ou les commandes CLI docker scout
.
Comment ça fonctionne
Pour vous aider à intégrer votre Azure Container Registry avec Docker Scout, vous pouvez utiliser un modèle Azure Resource Manager (ARM) personnalisé qui crée automatiquement l'infrastructure nécessaire dans Azure pour vous :
- Un Topic et Abonnement EventGrid pour les événements de poussée et suppression d'image.
- Un jeton d'autorisation en lecture seule pour le registre, utilisé pour lister les dépôts, et ingérer les images.
Lorsque les ressources ont été créées dans Azure, vous pouvez activer l'intégration pour les dépôts d'images dans l'instance ACR intégrée. Une fois que vous avez activé un dépôt, pousser de nouvelles images déclenche l'analyse d'image automatiquement. Les résultats d'analyse apparaissent dans le Tableau de bord Docker Scout.
Si vous activez l'intégration sur un dépôt qui contient déjà des images, Docker Scout tire et analyse automatiquement la dernière version d'image.
Modèle ARM
Le tableau suivant décrit les ressources de configuration.
NoteCréer ces ressources engendre un petit coût récurrent sur le compte Azure. La colonne Coût dans le tableau représente un coût mensuel estimé des ressources, lors de l'intégration d'un registre ACR qui reçoit 100 images poussées par jour.
Le coût de sortie varie en fonction de l'utilisation, mais il est d'environ 0,1 $ par GB, et les 100 premiers GB sont gratuits.
Azure | Ressource | Coût |
---|---|---|
Topic système Event Grid | S'abonner aux événements Azure Container Registry (poussée d'image et suppression d'image) | Gratuit |
Abonnement d'événement | Envoyer les événements Event Grid à Scout via un abonnement Webhook | 0,60 $ pour chaque 1M messages. Les 100k premiers gratuits. |
Jeton de registre | Jeton en lecture seule utilisé pour Scout pour lister les dépôts, et tirer les images du registre | Gratuit |
Le document JSON suivant montre le modèle ARM que Docker Scout utilise pour créer les ressources Azure.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"DockerScoutWebhook": {
"metadata": {
"description": "EventGrid's subscription Webhook"
},
"type": "String"
},
"RegistryName": {
"metadata": {
"description": "Name of the registry to add Docker Scout"
},
"type": "String"
},
"systemTopics_dockerScoutRepository": {
"defaultValue": "docker-scout-repository",
"metadata": {
"description": "EventGrid's topic name"
},
"type": "String"
}
},
"resources": [
{
"apiVersion": "2023-06-01-preview",
"identity": {
"type": "None"
},
"location": "[resourceGroup().location]",
"name": "[parameters('systemTopics_dockerScoutRepository')]",
"properties": {
"source": "[extensionResourceId(resourceGroup().Id , 'Microsoft.ContainerRegistry/Registries', parameters('RegistryName'))]",
"topicType": "Microsoft.ContainerRegistry.Registries"
},
"type": "Microsoft.EventGrid/systemTopics"
},
{
"apiVersion": "2023-06-01-preview",
"dependsOn": [
"[resourceId('Microsoft.EventGrid/systemTopics', parameters('systemTopics_dockerScoutRepository'))]"
],
"name": "[concat(parameters('systemTopics_dockerScoutRepository'), '/image-change')]",
"properties": {
"destination": {
"endpointType": "WebHook",
"properties": {
"endpointUrl": "[parameters('DockerScoutWebhook')]",
"maxEventsPerBatch": 1,
"preferredBatchSizeInKilobytes": 64
}
},
"eventDeliverySchema": "EventGridSchema",
"filter": {
"enableAdvancedFilteringOnArrays": true,
"includedEventTypes": [
"Microsoft.ContainerRegistry.ImagePushed",
"Microsoft.ContainerRegistry.ImageDeleted"
]
},
"labels": [],
"retryPolicy": {
"eventTimeToLiveInMinutes": 1440,
"maxDeliveryAttempts": 30
}
},
"type": "Microsoft.EventGrid/systemTopics/eventSubscriptions"
},
{
"apiVersion": "2023-01-01-preview",
"name": "[concat(parameters('RegistryName'), '/docker-scout-readonly-token')]",
"properties": {
"credentials": {},
"scopeMapId": "[resourceId('Microsoft.ContainerRegistry/registries/scopeMaps', parameters('RegistryName'), '_repositories_pull_metadata_read')]"
},
"type": "Microsoft.ContainerRegistry/registries/tokens"
}
],
"variables": {}
}
Intégrer un registre
-
Allez à la page d'intégration ACR sur le Tableau de bord Docker Scout.
-
Dans la section Comment intégrer, entrez le Nom d'hôte du registre du registre que vous voulez intégrer.
-
Sélectionnez Suivant.
-
Sélectionnez Déployer vers Azure pour ouvrir l'assistant de déploiement de modèle dans Azure.
Vous pourriez être invité à vous connecter à votre compte Azure si vous n'êtes pas déjà connecté.
-
Dans l'assistant de modèle, configurez votre déploiement :
-
Groupe de ressources : entrez le même groupe de ressources que celui que vous utilisez pour le registre de conteneurs. Les ressources Docker Scout doivent être déployées dans le même groupe de ressources que le registre.
-
Nom du registre : le champ est pré-rempli avec le sous-domaine du nom d'hôte du registre.
-
-
Sélectionnez Révision + créer, puis Créer pour déployer le modèle.
-
Attendez que le déploiement soit terminé.
-
Dans la section Détails du déploiement, cliquez sur la ressource nouvellement créée de type Jeton de registre de conteneurs. Générez un nouveau mot de passe pour ce jeton.
Alternativement, utilisez la fonction de recherche dans Azure pour naviguer vers la ressource Registre de conteneurs que vous cherchez à intégrer, et générez le nouveau mot de passe pour le jeton d'accès créé.
-
Copiez le mot de passe généré et retournez au Tableau de bord Docker Scout pour finaliser l'intégration.
-
Collez le mot de passe généré dans le champ Jeton de registre.
-
Sélectionnez Activer l'intégration.
Après avoir sélectionné Activer l'intégration, Docker Scout effectue un test de connexion pour vérifier l'intégration. Si la vérification a réussi, vous êtes redirigé vers la page de résumé du registre Azure, qui vous montre toutes vos intégrations Azure pour l'organisation actuelle.
Ensuite, activez Docker Scout pour les dépôts que vous voulez analyser dans Paramètres de dépôt.
Après avoir activé les dépôts, les images que vous poussez sont analysées par Docker Scout. Les résultats d'analyse apparaissent dans le Tableau de bord Docker Scout. Si votre dépôt contient déjà des images, Docker Scout tire et analyse automatiquement la dernière version d'image.
Supprimer une intégration
ImportantSupprimer l'intégration dans le Tableau de bord Docker Scout ne supprime pas automatiquement les ressources créées dans Azure.
Pour supprimer une intégration ACR :
-
Allez à la page d'intégration ACR sur le Tableau de bord Docker Scout.
-
Trouvez l'intégration ACR que vous voulez supprimer, et sélectionnez le bouton Supprimer.
-
Dans la boîte de dialogue qui s'ouvre, confirmez en sélectionnant Supprimer.
-
Après avoir supprimé l'intégration dans le Tableau de bord Docker Scout, supprimez aussi les ressources Azure liées à l'intégration :
- Le jeton
docker-scout-readonly-token
pour le registre de conteneurs. - Le Topic Système Event Grid
docker-scout-repository
.
- Le jeton