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 para configurar las notificaciones de Artifact Analysis para actividades como resultados nuevos de análisis de vulnerabilidades, consulta la documentación de Artifact Analysis.
Crea un tema de Pub/Sub
Cuando activas la API de Container Registry en un proyecto de Google Cloud,
Container Registry crea automáticamente Pub/Sub
con el ID del tema gcr
.
Si el tema gcr
se borró por accidente o no se encuentra disponible, puedes agregarlo tú mismo. Por ejemplo, el tema podría no estar disponible si tu cuenta de Google Cloud
organización tiene una restricción de política de la organización que requiere
con claves de encriptación administradas por el cliente (CMEK). Cuando
La API de Pub/Sub está en la lista de denegación de esta restricción.
los servicios no pueden crear temas automáticamente con claves de encriptación administradas por Google.
Para crear el tema gcr
con claves de encriptación administradas por Google, haz lo siguiente:
Console
Ve a la página de temas de Pub/Sub en la consola de Google Cloud.
Haz clic en Crear tema.
Ingresa el ID del tema
gcr
.Haz clic en Crear tema.
gcloud
Ejecuta el siguiente comando:
gcloud pubsub topics create gcr --project=PROJECT-ID
Reemplaza PROJECT-ID por el ID del proyecto de Google Cloud. Si omites la marca --project
, el comando
usa 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 encriptación CMEK, consulta Pub/Sub
instrucciones para encriptar temas.
Después de crear el tema gcr
o verificar que existe, puedes
Crea una suscripción al tema.
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
Ve a la página de temas de Pub/Sub en la consola de Google Cloud.
Haz clic en el tema de tu proyecto.
Haz clic en Crear suscripción.
Ingresa un nombre de suscripción.
projects/[PROJECT-ID]/subscriptions/[SUBSCRIPTION-NAME]
Configura el tipo de entrega como extracción.
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
Usar el control de acceso de Pub/Sub para configurar los permisos del proyecto y los 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 Página de IAM de la consola de Google Cloud 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. Las principales que envían imágenes o las borran del registro deben tener el permiso
pubsub.topics.publish
para publicar un mensaje en Pub/Sub.Si quieres configurar permisos para la suscripción, usa cualquiera de las siguientes opciones roles: 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?
- Lee la documentación de Pub/Sub.
- Para obtener una explicación detallada de Pub/Sub, consulta ¿Qué es Pub/Sub?
- Obtén más información sobre las funciones de control de acceso de Pub/Sub.