Integrar Docker Scout con Azure Container Registry
Integrar Docker Scout con Azure Container Registry (ACR) te permite ver
información detallada de las imágenes alojadas en los repositorios de ACR. Después de integrar Docker
Scout con ACR y activar Docker Scout para un repositorio, enviar (push) una imagen
al repositorio activa automáticamente el análisis de la imagen. Puedes ver la información
detallada de las imágenes utilizando el Docker Scout Dashboard o los comandos de la CLI docker scout.
Cómo funciona
Para ayudarte a integrar tu Azure Container Registry con Docker Scout, puedes usar una plantilla personalizada de Azure Resource Manager (ARM) que crea automáticamente la infraestructura necesaria en Azure para ti:
- Un EventGrid Topic y una suscripción para eventos de envío (
push) y eliminación de imágenes. - Un token de autorización de solo lectura para el registro, utilizado para listar repositorios e ingestar las imágenes.
Cuando se hayan creado los recursos en Azure, puedes habilitar la integración para los repositorios de imágenes en la instancia de ACR integrada. Una vez que hayas habilitado un repositorio, el envío de nuevas imágenes activa el análisis de imágenes automáticamente. Los resultados del análisis aparecen en el Docker Scout Dashboard.
Si habilitas la integración en un repositorio que ya contiene imágenes,
Docker Scout descarga (pull) y analiza la última versión de la imagen automáticamente.
Plantilla ARM
La siguiente tabla describe los recursos de configuración.
NoteLa creación de estos recursos genera un pequeño costo recurrente en la cuenta de Azure. La columna Costo de la tabla representa un costo mensual estimado de los recursos al integrar un registro ACR que recibe 100 imágenes enviadas al día.
El costo de salida (egreso) varía según el uso, pero es de aproximadamente $0.1 por GB, y los primeros 100 GB son gratuitos.
| Azure | Recurso | Costo |
|---|---|---|
| Event Grid system topic | Suscribirse a eventos de Azure Container Registry (envío y eliminación de imágenes) | Gratis |
| Event subscription | Enviar eventos de Event Grid a Scout a través de una suscripción de Webhook | $0.60 por cada 1 millón de mensajes. Los primeros 100 mil son gratis. |
| Registry Token | Token de solo lectura utilizado para que Scout liste los repositorios y descargue imágenes del registro | Gratis |
El siguiente documento JSON muestra la plantilla ARM que utiliza Docker Scout para crear los recursos de 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": {}
}Integrar un registro
Ve a la página de integración de ACR en el Docker Scout Dashboard.
En la sección How to integrate, ingresa el Registry hostname del registro que quieres integrar.
Selecciona Next.
Selecciona Deploy to Azure para abrir el asistente de implementación de plantillas en Azure.
Es posible que se te pida iniciar sesión en tu cuenta de Azure si aún no lo has hecho.
En el asistente de la plantilla, configura tu implementación:
Resource group: ingresa el mismo grupo de recursos que estás usando para el registro de contenedores. Los recursos de Docker Scout deben implementarse en el mismo grupo de recursos que el registro.
Registry name: el campo está precompletado con el subdominio del nombre de host del registro.
Selecciona Review + create y luego Create para implementar la plantilla.
Espera hasta que se complete la implementación.
En la sección Deployment details, selecciona el recurso recién creado del tipo Container registry token. Genera una contraseña nueva para este token.
De manera alternativa, usa la función de búsqueda en Azure para navegar al recurso Container registry que deseas integrar y genera la contraseña nueva para el token de acceso creado.
Copia la contraseña generada y regresa al Docker Scout Dashboard para finalizar la integración.
Pega la contraseña generada en el campo Registry token.
Selecciona Enable integration.
Después de seleccionar Enable integration, Docker Scout realiza una prueba de conexión para verificar la integración. Si la verificación es exitosa, se te redirigirá a la página de resumen del registro de Azure, que te muestra todas tus integraciones de Azure para la organización actual.
A continuación, activa Docker Scout para los repositorios que quieras analizar en la configuración de repositorios.
Después de activar los repositorios, las imágenes que envíes serán analizadas por Docker Scout. Los resultados del análisis aparecen en el Docker Scout Dashboard. Si tu repositorio ya contiene imágenes, Docker Scout descarga y analiza la última versión de la imagen automáticamente.
Eliminar una integración
ImportantEliminar la integración en el Docker Scout Dashboard no elimina automáticamente los recursos creados en Azure.
Para eliminar una integración de ACR:
- Ve a la página de integración de ACR en el Docker Scout Dashboard.
- Busca la integración de ACR que deseas eliminar y selecciona el botón Remove.
- En el diálogo que se abre, confirma seleccionando Remove.
- Después de eliminar la integración en el Docker Scout Dashboard, elimina también
los recursos de Azure relacionados con la integración:
- El token
docker-scout-readonly-tokenpara el registro de contenedores. - El Event Grid System Topic
docker-scout-repository.
- El token