Configurer les notifications Pub/Sub

Les notifications Pub/Sub vous permettent de suivre les modifications apportées à vos dépôts Docker Artifact Registry, y compris les charts Helm 3 empaquetés au format OCI. Vous pouvez abonner des applications à ces notifications pour déclencher des événements automatisés, consigner l'activité du dépôt ou communiquer entre les services lorsque des images sont importées, taguées ou supprimées.

Présentation

Pub/Sub publie des messages sur vos dépôts dans des ressources nommées appelées sujets. Les applications qui s'abonnent aux sujets Pub/Sub reçoivent ces messages et des notifications lorsque l'état d'un dépôt change.

Artifact Registry publie des messages dans un sujet nommé gcr pour les modifications suivantes :

  • Importations d'image
  • Nouvelles balises ajoutées aux images
  • Suppression d'images

Vous pouvez également configurer des rôles et des autorisations pour publier des notifications ou s'y abonner.

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.

Pour recevoir des notifications, vous devez :

  1. Créez un sujet nommé gcr dans le projet avec Artifact Registry.
  2. Créez un abonnement associé au sujet.
  3. Configurez votre application d'abonné pour recevoir des messages concernant les modifications apportées au dépôt.
  4. Si nécessaire, configurez les autorisations pour contrôler l'accès à votre sujet et à votre abonnement.

Créer le sujet Artifact Registry

Pour créer le sujet gcr avec des clés de chiffrement basées sur Google Cloud  :

Console

  1. Accédez à la page des sujets Pub/Sub dans la console Google Cloud .

    Accéder à la page des sujets Pub/Sub

  2. Cliquez sur Créer un sujet.

  3. Saisissez l'ID de sujet 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 actuel.

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

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

Après avoir créé le sujet gcr ou vérifié qu'il existe, vous pouvez créer un abonnement au sujet.

Créer un abonnement

Après avoir créé un sujet pour les modifications du dépôt, vous pouvez configurer un abonnement à ce sujet qui utilise la distribution push ou la distribution pull. Nous vous recommandons d'utiliser la distribution par extraction, car les systèmes CI/CD peuvent générer de nombreuses modifications des artefacts stockés, et la distribution par extraction est plus efficace pour un grand volume de messages.

Pour créer un abonnement avec la distribution pull, procédez comme suit :

Console

  1. Accédez à la page des sujets Pub/Sub dans la console Google Cloud .

    Accéder à la page des 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/subscriptions/[SUBSCRIPTION-NAME]
    

    Laissez le type de distribution défini sur Retrait.

  5. Cliquez sur Créer.

gcloud

Exécutez la commande suivante :

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

Remplacez SUBSCRIPTION-NAME par le nom de l'abonnement.

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

Vous disposez désormais d'un abonnement au sujet gcr. L'étape suivante consiste à configurer les autorisations pour les identités qui déclenchent des modifications dans les dépôts.

Configurer votre application d'abonné

Après avoir créé un sujet et un abonnement à ce sujet, vous pouvez configurer votre application d'abonné, c'est-à-dire l'application qui reçoit les messages concernant les modifications apportées aux dépôts. Les applications d'abonné effectuent des tâches telles que les notifications d'événements, la journalisation du système et la communication entre les applications.

Lorsqu'un utilisateur du dépôt transfère ou supprime une image, les étapes suivantes se produisent :

  1. Le compte de service Artifact Registry publie la modification dans votre sujet gcr. Le compte de service est service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com, où PROJECT-NUMBER est votre Google Cloud numéro de projet. Le compte de service Artifact Registry dispose de l'autorisation pubsub.topics.publish par défaut, ce qui lui permet de publier les modifications apportées à votre sujet.

    Si un administrateur a révoqué les autorisations pubsub.topics.publish pour le compte de service Artifact Registry, Artifact Registry tente de publier le message en tant qu'utilisateur du dépôt. Dans ce cas, le compte de l'utilisateur du dépôt doit disposer de l'autorisation pubsub.topics.publish pour publier le message.

  2. Pub/Sub transfère le message du sujet vers votre abonnement.

  3. Lorsque votre application d'abonné demande des messages, elle extrait le nouveau message de l'abonnement.

    L'identité qui extrait les messages pour le compte de l'abonné doit disposer des autorisations nécessaires pour accéder à l'abonnement. Vous pouvez utiliser le rôle d'abonné Pub/Sub pour accorder cette autorisation.

Pour en savoir plus sur la configuration d'un abonnement pour recevoir des messages dans le cadre d'un abonnement avec la distribution pull, consultez la page Recevoir des messages en mode pull.

Configurer des autorisations

Vous pouvez utiliser les autorisations Pub/Sub pour contrôler l'accès à vos sujets et abonnements.

Pour en savoir plus sur les autorisations Pub/Sub et l'octroi d'accès aux sujets et aux abonnements, consultez la documentation sur le contrôle des accès de Pub/Sub.

Exemples de notifications

Pub/Sub envoie des notifications sous forme de chaînes au format JSON. Consultez les exemples suivants pour savoir à quoi vous attendre lorsque vous recevez des notifications Artifact Registry de Pub/Sub.

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

{
  "action":"INSERT",
  "digest":"us-west1-docker.pkg.dev/my-project/my-repo/hello-world@sha256:6ec128e26cd5..."
}

Lorsqu'un nouveau tag d'image est transféré vers Artifact Registry, la charge utile de notification se présente comme suit :

{
  "action":"INSERT",
  "digest":"us-west1-docker.pkg.dev/my-project/my-repo/hello-world@sha256:6ec128e26cd5...",
  "tag":"us-west1-docker.pkg.dev/my-project/my-repo/hello-world:1.1"
}

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

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

{
  "action":"DELETE",
  "tag":"us-west1-docker.pkg.dev/my-project/my-repo/hello-world:1.1"
}

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

Étape suivante