Artifact Registry es el servicio recomendado para administrar las imágenes de contenedor. Container Registry aún es compatible, pero solo recibirá correcciones de seguridad críticas. Obtén más información sobre la transición a Artifact Registry.

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.

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

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

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 de tu 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 URI:

    projects/[PROJECT-ID]/topics/gcr
    

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

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