Configurar notificaciones de Pub/Sub

Cuando se hacen cambios en tu repositorio de Container Registry, como cuando se insertan, etiquetan o eliminan imágenes, puedes recibir notificaciones mediante Pub/Sub.

Pub/Sub publica mensajes sobre tu repositorio en recursos con nombre llamados temas. Las aplicaciones suscritas a temas de Pub/Sub reciben estos mensajes. Las aplicaciones de suscriptores envían notificaciones cuando cambia el estado de tu repositorio.

Además, puedes configurar roles y permisos para tus temas de Pub/Sub para controlar cómo interactúan los usuarios con tu repositorio.

Para facilitar la transición de Container Registry a Artifact Registry, Artifact Registry publica mensajes en el mismo tema que Container Registry.

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

Crear un tema de Pub/Sub

Cuando activas la API Container Registry en un proyecto de Google Cloud , Container Registry crea automáticamente un tema de Pub/Sub con el ID de tema gcr.

Si el tema gcr se ha eliminado por error o no aparece, puedes añadirlo tú mismo. Por ejemplo, puede que falte el tema si tu Google Cloud organización tiene una restricción de política de organización que requiere el cifrado con claves de cifrado gestionadas por el cliente (CMEK). Si la API Pub/Sub está en la lista de denegación de esta restricción, los servicios no podrán crear automáticamente temas con Google-owned and Google-managed encryption keys.

Para crear el tema gcr con Google-owned and Google-managed encryption keys, 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 de Pub/Sub

Cada tema de Pub/Sub debe tener una suscripción.

Una aplicación de suscriptor recibe mensajes del tema de tu repositorio. Los suscriptores realizan tareas como notificaciones de eventos, registro del sistema y comunicación entre aplicaciones.

Las suscripciones se pueden configurar para utilizar un modelo push o un modelo pull.

Para crear una suscripción:

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-ID]/subscriptions/[SUBSCRIPTION-NAME]
    

    Deja Tipo de entrega configurado como Recepción.

  5. Haz clic en Crear.

gcloud

En el sistema en el que se insertan o etiquetan las imágenes de Docker, ejecuta el siguiente comando:

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

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

Configurar permisos de Pub/Sub

Usa el control de acceso de Pub/Sub para configurar los permisos de tu proyecto y tus recursos. Los controles de acceso protegen tu repositorio y te permiten gestionar los permisos de los usuarios mediante el acceso basado en roles.

Puedes configurar los controles de acceso de Pub/Sub en la página de gestión de identidades y accesos de la consola o mediante la API IAM. Google Cloud

  • Para configurar los permisos de publicación, usa cualquiera de los siguientes roles: propietario, editor, pubsub.admin, pubsub.editor o pubsub.publisher. Las entidades que insertan o eliminan imágenes del registro deben tener el permiso pubsub.topics.publish para publicar mensajes en Pub/Sub.

  • Para configurar los permisos de suscripción, usa cualquiera de los siguientes roles: propietario, editor, pubsub.admin, pubsub.editor o pubsub.subscriber.

Ejemplos de notificaciones

Las notificaciones se envían como cadenas con formato JSON. A continuación, se muestran ejemplos de lo que puedes esperar al recibir notificaciones de Container Registry de Pub/Sub.

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

{
  "action":"INSERT",
  "digest":"gcr.io/my-project/hello-world@sha256:6ec128e26cd5..."
}

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

{
  "action":"INSERT",
  "digest":"gcr.io/my-project/hello-world@sha256:6ec128e26cd5...",
  "tag":"gcr.io/my-project/hello-world:1.1"
}

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

Cuando se elimina una etiqueta de Container Registry, la carga útil de la notificación puede tener este aspecto:

{
  "action":"DELETE",
  "tag":"gcr.io/my-project/hello-world:1.1"
}

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

Siguientes pasos