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

Integrar Docker Scout con Artifactory Container Registry

Integrar Docker Scout con JFrog Artifactory te permite indexar y analizar imágenes de Artifactory. Esta integración funciona a través de un proceso de larga ejecución docker scout watch. Descarga imágenes de los repositorios seleccionados (opcionalmente filtrados), puede recibir devoluciones de llamada de webhook (callbacks) de Artifactory y envía datos de la imagen a Docker Scout. Puedes ver los resultados en el Docker Scout Dashboard o con la CLI de docker scout.

Cómo funciona

Ejecutas docker scout watch en un host que controlas y configuras la cadena de registro específica de Artifactory a través de --registry "key=value,...". El proceso de observación (watch) puede:

  • Observar repositorios específicos o un registro completo
  • Opcionalmente ingestar todas las imágenes existentes una sola vez
  • Actualizar periódicamente las listas de repositorios
  • Recibir devoluciones de llamada de webhook de Artifactory en el puerto local que elijas

Después de la integración, Docker Scout descarga y analiza automáticamente las imágenes que envíes al registro de Artifactory. Los metadatos de tus imágenes se almacenan en la plataforma de Docker Scout, pero Docker Scout no almacena las imágenes de contenedor en sí. Para obtener más información sobre cómo maneja Docker Scout los datos de las imágenes, consulta Data handling.

Opciones de la cadena de registro específicas de Artifactory

Estas opciones type=artifactory anulan el comportamiento genérico del registro para la opción --registry:

ClaveRequeridoDescripción
typeDebe ser artifactory.
registryNombre de host del registro de Docker/OCI (por ejemplo, example.jfrog.io).
apiURL base de la API REST de Artifactory (por ejemplo, https://example.jfrog.io/artifactory).
repositoryRepositorio a observar (reemplaza a --repository).
includesNoGlobs a incluir (por ejemplo, */frontend*).
excludesNoGlobs a excluir (por ejemplo, */legacy/*).
portNoPuerto local para escuchar las devoluciones de llamada del webhook.
subdomain-modeNotrue o false; coincide con el diseño de Docker de Artifactory (subdominio frente a ruta del repositorio).

Integrar un registro de Artifactory

Usa los siguientes pasos para integrar tu registro de Artifactory con Docker Scout.

  1. Elige el host en el que ejecutarás docker scout watch.

    El host debe tener acceso local o de red a tu registro privado y poder acceder a la API de Scout (https://api.scout.docker.com) a través de internet. Si estás utilizando devoluciones de llamada de webhook, Artifactory también debe poder comunicarse con el host del cliente de Scout en el puerto configurado. Invalida la opción --workers (por defecto: 3) para un rendimiento óptimo en función del tamaño del host y de la carga de trabajo prevista.

  2. Asegúrate de estar ejecutando la última versión de Scout.

    Comprueba tu versión actual:

    $ docker scout version
    

    Si es necesario, instala la última versión de Scout.

  3. Configura tus credenciales de Artifactory.

    Almacena las credenciales que usará el cliente de Scout para autenticarse con Artifactory. El siguiente es un ejemplo que utiliza variables de entorno. Reemplaza <user> y <password-or-access-token> con tus valores reales.

    $ export DOCKER_SCOUT_ARTIFACTORY_API_USER=<user>
    $ export DOCKER_SCOUT_ARTIFACTORY_API_PASSWORD=<password-or-access-token>
    
    Tip

    Como buena práctica, crea un usuario dedicado con acceso de solo lectura y utiliza un token de acceso en lugar de una contraseña.

    Almacena la credencial que usará Artifactory para autenticar las devoluciones de llamada de webhook. El siguiente es un ejemplo que utiliza una variable de entorno. Reemplaza <random-64-128-character-secret> con un secreto real.

    $ export DOCKER_SCOUT_ARTIFACTORY_WEBHOOK_SECRET=<random-64-128-character-secret>
    
    Tip

    Como buena práctica, genera una cadena aleatoria de alta entropía de 64 a 128 caracteres.

  4. Configura tus credenciales de Scout.

    1. Genera un token de acceso de organización para acceder a Scout. Para obtener más detalles, consulta Create an organization access token.

    2. Inicia sesión en Docker usando el token de acceso de organización.

      $ docker login --username <your_organization_name>
      

      Cuando se te solicite una contraseña, pega el token de acceso de organización que generaste.

    3. Conecta tu entorno local de Docker al servicio de Docker Scout de tu organización.

      $ docker scout enroll <your_organization_name>
      
  5. Indexa las imágenes existentes. Solo necesitas hacer esto una vez.

    Ejecuta docker scout watch con la opción --all-images para indexar todas las imágenes en el repositorio de Artifactory especificado. El siguiente es un comando de ejemplo:

    $ docker scout watch --registry \
    "type=artifactory,registry=example.jfrog.io,api=https://example.jfrog.io/artifactory,include=*/frontend*,exclude=*/dta/*,repository=docker-local,port=9000,subdomain-mode=true" \
    --all-images
    
  6. Confirma que las imágenes se hayan indexado visualizándolas en el Scout Dashboard.

  7. Configura las devoluciones de llamada de Artifactory.

    En la interfaz de usuario de Artifactory o a través de la API REST, configura webhooks para eventos de envío/actualización de imágenes. Establece el punto de enlace (endpoint) en el host y puerto de tu docker scout watch e incluye la variable DOCKER_SCOUT_ARTIFACTORY_WEBHOOK_SECRET para la autenticación.

    Para obtener más información, consulta la documentación de Webhooks de JFrog Artifactory o la documentación de la API REST de Webhooks de JFrog Artifactory.

  8. Observa continuamente si hay imágenes nuevas o actualizadas.

    Ejecuta docker scout watch con la opción --refresh-registry para buscar nuevas imágenes a indexar.

    El comando docker scout watch es un proceso de larga ejecución que debe continuar ejecutándose indefinidamente en segundo plano para recibir webhooks y buscar nuevas imágenes. Si lo ejecutas directamente en una terminal y cierras la sesión, el proceso se detendrá.

    The following is an example command. Puedes ejecutar el proceso como un servicio del sistema, por ejemplo, usando systemd o nohup, para asegurarte de que continúe ejecutándose en segundo plano.

    $ docker scout watch --registry \
    "type=artifactory,registry=example.jfrog.io,api=https://example.jfrog.io/artifactory,include=*/frontend*,exclude=*/dta/*,repository=docker-local,port=9000,subdomain-mode=true" \
    --refresh-registry
    
  9. Opcional. Configura la integración de Scout para recibir notificaciones en tiempo real desde plataformas de colaboración populares. Para más detalles, consulta Integrar Docker Scout con Slack.