Compartir comentarios
Las respuestas se generan en base a la documentación.

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.

Note

La 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.

AzureRecursoCosto
Event Grid system topicSuscribirse a eventos de Azure Container Registry (envío y eliminación de imágenes)Gratis
Event subscriptionEnviar 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 TokenToken de solo lectura utilizado para que Scout liste los repositorios y descargue imágenes del registroGratis

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

  1. Ve a la página de integración de ACR en el Docker Scout Dashboard.

  2. En la sección How to integrate, ingresa el Registry hostname del registro que quieres integrar.

  3. Selecciona Next.

  4. 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.

  5. 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.

  6. Selecciona Review + create y luego Create para implementar la plantilla.

  7. Espera hasta que se complete la implementación.

  8. 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.

  9. Copia la contraseña generada y regresa al Docker Scout Dashboard para finalizar la integración.

  10. Pega la contraseña generada en el campo Registry token.

  11. 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

Important

Eliminar la integración en el Docker Scout Dashboard no elimina automáticamente los recursos creados en Azure.

Para eliminar una integración de ACR:

  1. Ve a la página de integración de ACR en el Docker Scout Dashboard.
  2. Busca la integración de ACR que deseas eliminar y selecciona el botón Remove.
  3. En el diálogo que se abre, confirma seleccionando Remove.
  4. 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-token para el registro de contenedores.
    • El Event Grid System Topic docker-scout-repository.