Configurer les notifications Pub/Sub

Lorsque des modifications sont apportées à votre dépôt Container Registry, par exemple lorsque des images sont stockées, taguées ou supprimées, vous pouvez recevoir des notifications via Pub/Sub.

Pub/Sub publie des messages concernant votre dépôt dans des ressources identifiées appelées sujets. Ces messages sont reçus par les applications abonnées aux sujets Pub/Sub. Les applications d'abonnés envoient des notifications lorsque l'état du dépôt change.

En outre, vous pouvez configurer des rôles et des autorisations pour vos sujets Pub/Sub afin de contrôler la manière dont les utilisateurs interagissent avec votre dépôt.

Pour permettre le passage de Container Registry à Artifact Registry, Artifact Registry publie des messages dans le même sujet que Container Registry.

Pour en savoir plus sur la configuration des notifications Artifact Analysis pour des activités telles que les nouveaux résultats d'analyse des failles, consultez la documentation d'Artifact Analysis.

Créer un sujet Pub/Sub

Lorsque vous activez l'API Container Registry dans un projet Google Cloud, Container Registry crée automatiquement un sujet Pub/Sub avec l'ID de sujet gcr.

Si le sujet gcr a été accidentellement supprimé ou est manquant, vous pouvez l'ajouter vous-même. Par exemple, le sujet peut être manquant si votre organisation Google Cloud a une contrainte de règle d'administration qui nécessite un chiffrement à l'aide de clés de chiffrement gérées par le client (CMEK). Lorsque l'API Pub/Sub figure dans la liste de refus de cette contrainte, les services ne peuvent pas créer automatiquement de sujets avec des clés de chiffrement gérées par Google.

Pour créer le sujet gcr avec des clés de chiffrement gérées par Google:

Console

  1. Accédez à la page "Sujets Pub/Sub" dans la console Google Cloud.

    Accéder à la page "Sujets Pub/Sub"

  2. Cliquez sur Créer un sujet.

  3. Saisissez l'ID du thème gcr.

  4. Cliquez sur Créer un sujet.

gcloud

Exécutez la commande suivante :

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

Remplacez PROJECT-ID par l'ID de votre projet Google Cloud. Si vous omettez l'option --project, la commande utilise le projet en cours.

Pour en savoir plus sur la commande gcloud pubsub topics, consultez la documentation sur topics.

Pour créer le sujet gcr avec un chiffrement CMEK, consultez les instructions Pub/Sub sur le chiffrement des sujets.

Après avoir créé le sujet gcr ou vérifié son existence, vous pouvez créer un abonnement au sujet.

Créer un abonnement Pub/Sub

Chaque sujet Pub/Sub doit être associé à un abonnement.

Une application d'abonné reçoit des messages en provenance du sujet de votre dépôt. Les abonnés accomplissent des tâches telles que les notifications d'événements, la journalisation système et la communication entre les applications.

Les abonnements peuvent être configurés pour utiliser un modèle push ou un modèle pull.

Pour créer un abonnement :

Console

  1. Accédez à la page "Sujets Pub/Sub" dans la console Google Cloud.

    Accéder à la page "Sujets Pub/Sub"

  2. Cliquez sur le sujet de votre projet.

  3. Cliquez sur Créer un abonnement.

  4. Entrez un nom d'abonnement :

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

    Laissez le type de distribution défini sur "Retrait".

  5. Cliquez sur Créer.

gcloud

À partir du système dans lequel les images Docker sont stockées ou taguées, exécutez la commande suivante :

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

Pour en savoir plus sur la commande gcloud pubsub subscriptions, consultez la documentation sur subscriptions.

Configurer les autorisations Pub/Sub

Utilisez le contrôle des accès Pub/Sub pour configurer les autorisations de votre projet et de vos ressources. Les contrôles des accès sécurisent votre dépôt et vous permettent de gérer les autorisations des utilisateurs à l'aide d'un accès basé sur les rôles.

Vous pouvez configurer les contrôles d'accès de Pub/Sub sur la page IAM de la console Google Cloud ou via l'API IAM.

  • Pour configurer les autorisations de publication, utilisez l'un des rôles suivants: propriétaire, éditeur, pubsub.admin, pubsub.editor, pubsub.publisher. Les comptes principaux qui transfèrent des images ou les suppriment du registre doivent disposer de l'autorisation pubsub.topics.publish pour publier un message sur Pub/Sub.

  • Pour configurer les autorisations d'abonnement, utilisez l'un des rôles suivants: propriétaire, éditeur, pubsub.admin, pubsub.editor, pubsub.subscriber.

Exemples de notifications

Les notifications sont envoyées sous forme de chaînes au format JSON. Vous trouverez ci-dessous des exemples de notifications Container Registry envoyées par Pub/Sub.

Lorsqu'une image est stockée dans Container Registry, le contenu de la notification peut ressembler à ceci :

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

Lorsqu'un nouveau tag est stocké dans Container Registry, le contenu de la notification peut ressembler à ceci :

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

Le message identifie l'image pertinente à l'aide d'une clé digest ou tag.

Lorsqu'un tag est supprimé de Container Registry, le contenu de la notification peut ressembler à ceci :

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

Le message peut contenir les valeurs DELETE ou INSERT pour la clé action.

Étapes suivantes