Configura notificaciones de Pub/Sub

Cuando se realizan cambios en tu repositorio de Container Registry, por ejemplo, cuando se envían, etiquetan o borran imágenes, puedes recibir notificaciones con Pub/Sub.

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

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

Crea un tema de Pub/Sub

Para cada proyecto de Container Registry para el que desees recibir notificaciones, debes crear un tema de Pub/Sub con una aplicación del publicador de Pub/Sub.

Una aplicación de publicador envía mensajes al tema de tu repositorio cuando cambia el estado del repositorio. Puedes crear un tema con Cloud Console o la herramienta de línea de comandos de gcloud.

Cuando creas un tema, necesitas usar un URI calificado para tu repositorio. El siguientes es el URI calificado:

projects/[PROJECT-ID]/topics/gcr
    

En el ejemplo anterior, [PROJECT-ID] es el ID del proyecto de Google Cloud.

Sigue los pasos a continuación para crear un tema:

Console

  1. Ve a la página de temas de Pub/Sub en Cloud Console.

    Ir a la página de Cloud Pub/Sub

  2. Haz clic en Crear tema.

  3. Ingresa un nombre de tema con el siguiente URI:

    projects/[PROJECT-ID]/topics/gcr
        

    En el ejemplo anterior, [PROJECT-ID] es el ID del proyecto de Google Cloud.

  4. Haga clic en Crear.

gcloud

Desde el sistema en el que se envían o etiquetan las imágenes de Docker, ejecuta el siguiente comando en tu shell o ventana de la terminal:

gcloud pubsub topics create projects/[PROJECT-ID]/topics/gcr
    

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

Crea una suscripción a Pub/Sub

Todos los temas de Pub/Sub deben tener una suscripción.

Una aplicación de suscriptor recibe mensajes del tema de tu repositorio. Los suscriptores completan tareas, como envío de notificaciones de eventos, registros del sistema y comunicación entre aplicaciones.

Las suscripciones se pueden configurar para que usen un modelo de envío o un modelo de extracción.

Sigue los pasos a continuación para crear una suscripción:

Console

  1. Ve a la página de temas de Pub/Sub en Cloud Console.

    Ir a la página de Cloud Pub/Sub

  2. Haz clic en el tema de tu proyecto.

  3. Haz clic en Crear suscripción.

  4. Ingresa un nombre de suscripción.

    projects/[PROJECT-ID]/subscriptions/[SUBSCRIPTION-NAME]
        

    Configura el tipo de entrega como extracción.

  5. Haz clic en Crear.

gcloud

Desde el sistema en el que se envían 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.

Configura permisos de Pub/Sub

Puedes usar el control de acceso de Pub/Sub a fin de configurar los permisos para tu proyecto y tus recursos. Los controles de acceso mantienen tu repositorio seguro y te permiten administrar los permisos de usuario mediante el acceso basado en roles.

Puedes configurar los controles de acceso de Pub/Sub en la página de IAM de Cloud Console o a través de la API de IAM.

  • Para configurar los permisos de publicación, usa cualquiera de las siguientes funciones: propietario, editor, pubsub.admin, pubsub.editor, pubsub.publisher.

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

Ejemplos de notificaciones

Las notificaciones se envían como strings con formato JSON. A continuación, se incluyen ejemplos de lo que puedes esperar cuando recibes notificaciones de Container Registry desde Pub/Sub.

Cuando se envía una imagen a Container Registry, la carga útil de la notificación podría verse así:

{
      "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 podría verse así:

{
      "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 relevante mediante una tecla digest o tag.

Cuando se borra una etiqueta de Container Registry, la carga útil de la notificación podría verse así:

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

El mensaje podría contener DELETE o INSERT como valores para la clave action.

Qué sigue