Configurar notificaciones de Pub/Sub

Puedes recibir notificaciones de Pub/Sub sobre los cambios que se hagan en un repositorio de Docker. Las notificaciones se aplican a cualquier imagen de contenedor almacenada en el repositorio, incluidos los gráficos de Helm 3 empaquetados en formato OCI.

Pub/Sub publica mensajes sobre tus repositorios en recursos con nombre llamados temas. Las aplicaciones que se suscriben a temas de Pub/Sub reciben estos mensajes y notificaciones cuando cambia el estado de un repositorio.

Artifact Registry publica mensajes para los siguientes cambios:

  • Subidas de imágenes
  • Se han añadido etiquetas nuevas a las imágenes
  • Eliminación de imágenes

Además, puedes configurar roles y permisos para publicar o suscribirse a notificaciones.

Para obtener información sobre cómo configurar las notificaciones de Artifact Analysis para actividades como los nuevos resultados de análisis de vulnerabilidades, consulta la documentación de Artifact Analysis.

Información general

Artifact Registry publica mensajes sobre los cambios en los repositorios en un tema llamado gcr.

Para recibir notificaciones, debes hacer lo siguiente:

  1. Crea un tema llamado gcr en el proyecto con Artifact Registry.
  2. Crea una suscripción al tema.
  3. Configura tu aplicación de suscriptor para recibir mensajes sobre los cambios en el repositorio.
  4. Si procede, configura los permisos para controlar el acceso a tu tema y a tu suscripción.

Crear el tema de Artifact Registry

Para crear el tema gcr con claves de cifrado basadas en Google Cloud , sigue estos pasos:

Consola

  1. Ve a la página Temas de Pub/Sub en la Google Cloud consola.

    Ir a la página Temas de Pub/Sub

  2. Haz clic en Crear tema.

  3. Introduce el ID del tema gcr.

  4. Haz clic en Crear tema.

gcloud

Ejecuta el siguiente comando:

    gcloud pubsub topics create gcr --project=PROJECT-ID

Sustituye PROJECT-ID por el Google Cloud ID de tu proyecto. Si omites la marca --project, el comando usará el proyecto actual.

Para obtener más información sobre el comando gcloud pubsub topics, consulta la documentación de topics.

Para crear el tema gcr con el cifrado CMEK, consulta las instrucciones para cifrar temas de Pub/Sub.

Una vez que hayas creado el tema gcr o hayas verificado que existe, puedes crear una suscripción al tema.

Crear una suscripción

Una vez que hayas creado un tema para los cambios del repositorio, puedes configurar una suscripción que utilice la entrega push o la entrega pull. Recomendamos usar la entrega de extracción, ya que los sistemas de integración continua y entrega continua pueden generar numerosos cambios en los artefactos almacenados, y la entrega de extracción es más eficaz para un gran volumen de mensajes.

Para crear una suscripción con entrega de extracción, sigue estos pasos:

Consola

  1. Ve a la página Temas de Pub/Sub en la Google Cloud consola.

    Ir a la página Temas de Pub/Sub

  2. Haz clic en el tema del proyecto.

  3. Haz clic en Crear suscripción.

  4. Introduce un nombre de suscripción:

    projects/PROJECT/subscriptions/[SUBSCRIPTION-NAME]
    

    Deja Tipo de envío configurado como Recepción.

  5. Haz clic en Crear.

gcloud

Ejecuta el siguiente comando:

gcloud pubsub subscriptions create SUBSCRIPTION-NAME --topic=gcr

Sustituye SUBSCRIPTION-NAME por el nombre de la suscripción.

Para obtener más información sobre el comando gcloud pubsub subscriptions, consulta la documentación de subscriptions.

Ahora tienes una suscripción al tema gcr. El siguiente paso es configurar los permisos de las identidades que activan cambios en los repositorios.

Configurar la aplicación de suscriptor

Una vez que hayas creado un tema y una suscripción a ese tema, puedes configurar tu aplicación de suscriptor, que es la aplicación que recibe mensajes sobre los cambios en los repositorios. Las aplicaciones de suscriptor realizan tareas como enviar notificaciones de eventos, registrar el sistema y comunicarse entre aplicaciones.

Cuando un usuario del repositorio envía o elimina una imagen, se siguen estos pasos:

  1. La cuenta de servicio de Artifact Registry publica el cambio en tu tema gcr. La cuenta de servicio es service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com, donde PROJECT-NUMBER es tu Google Cloud número de proyecto. La cuenta de servicio de Artifact Registry tiene el permiso pubsub.topics.publish de forma predeterminada para poder publicar cambios en tu tema.

    Si un administrador ha revocado los permisos pubsub.topics.publish de la cuenta de servicio de Artifact Registry, Artifact Registry intentará publicar el mensaje como usuario del repositorio. En esta situación, la cuenta del usuario del repositorio debe tener el permiso pubsub.topics.publish para publicar el mensaje correctamente.

  2. Pub/Sub reenvía el mensaje del tema a tu suscripción.

  3. Cuando tu aplicación de suscriptor hace una solicitud de mensajes, extrae el nuevo mensaje de la suscripción.

    La identidad que extrae mensajes en nombre del suscriptor debe tener permisos para acceder a la suscripción. Puedes usar el rol Suscriptor de Pub/Sub para conceder este permiso.

Para saber cómo configurar un suscriptor para que reciba mensajes de una suscripción con entrega de extracción, consulta Recibir mensajes mediante Pull.

Configurar permisos

Puede usar los permisos de Pub/Sub para controlar el acceso a sus temas y suscripciones.

Para obtener más información sobre los permisos de Pub/Sub y cómo conceder acceso a temas y suscripciones, consulta la documentación sobre control de acceso de Pub/Sub.

Ejemplos de notificaciones

Pub/Sub envía notificaciones como cadenas con formato JSON. Consulta los siguientes ejemplos para saber qué puedes esperar cuando recibas notificaciones de Artifact Registry de Pub/Sub.

Cuando se envía una imagen a Artifact Registry, la carga útil de la notificación puede tener este aspecto:

{
  "action":"INSERT",
  "digest":"us-west1-docker.pkg.dev/my-project/my-repo/hello-world@sha256:6ec128e26cd5..."
}

Cuando se envía una etiqueta de imagen nueva a Artifact Registry, la carga útil de la notificación tiene este aspecto:

{
  "action":"INSERT",
  "digest":"us-west1-docker.pkg.dev/my-project/my-repo/hello-world@sha256:6ec128e26cd5...",
  "tag":"us-west1-docker.pkg.dev/my-project/my-repo/hello-world:1.1"
}

El mensaje identifica la imagen pertinente mediante una clave digest o tag.

Cuando se elimina una etiqueta de imagen de Artifact Registry, la carga útil de la notificación puede tener el siguiente aspecto:

{
  "action":"DELETE",
  "tag":"us-west1-docker.pkg.dev/my-project/my-repo/hello-world:1.1"
}

El mensaje puede contener DELETE o INSERT como valores de la clave action.

Siguientes pasos