Vous pouvez recevoir des notifications de Pub/Sub pour vous informer des modifications apportées à un dépôt Docker. Les notifications s'appliquent à toute image de conteneur stockée dans le dépôt, y compris les graphiques Helm 3 empaquetés au format OCI.
Pub/Sub publie des messages concernant 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 reçoivent des notifications lorsque l'état d'un dépôt change.
Artifact Registry publie des messages concernant les modifications suivantes :
- Importations d'image
- De nouveaux tags ont été ajoutés aux images
- Suppression d'image
Vous pouvez également configurer des rôles et des autorisations pour la publication ou l'abonnement à des notifications.
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.
Présentation
Artifact Registry publie des messages concernant les modifications apportées aux dépôts dans un sujet nommé gcr
.
Pour recevoir des notifications, vous devez :
- Créez un sujet nommé
gcr
dans le projet à l'aide d'Artifact Registry. - Créez un abonnement associé au sujet.
- Configurez votre application d'abonné pour recevoir des messages concernant les modifications du dépôt.
- Le cas échéant, configurez les autorisations pour contrôler l'accès à votre sujet et à votre abonnement.
Créer le sujet Artifact Registry
Lorsque vous activez l'API Artifact Registry dans un projet Google Cloud, Artifact Registry crée automatiquement un sujet Pub/Sub avec l'ID de sujet gcr
. Si Container Registry est activé dans le même projet Google Cloud, le sujet peut déjà exister déjà, car les deux services de registre utilisent le même sujet pour publier des messages.
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 afficher la liste des sujets existants, vous pouvez consulter la page des sujets Pub/Sub dans la console Google Cloud ou exécuter la commande suivante:
gcloud pubsub topics list
Pour créer le sujet gcr
avec des clés de chiffrement gérées par Google:
Console
Accédez à la page "Sujets Pub/Sub" dans la console Google Cloud.
Cliquez sur Créer un sujet.
Saisissez l'ID du thème
gcr
.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
Après avoir créé un sujet pour les modifications du dépôt, vous pouvez y configurer un abonnement qui utilise la distribution push ou la distribution pull. Nous vous recommandons d'utiliser la distribution pull, car les systèmes CI/CD peuvent générer de nombreuses modifications des artefacts stockés. La distribution pull est plus efficace pour un grand volume de messages.
Pour créer un abonnement avec la distribution pull, procédez comme suit :
Console
Accédez à la page "Sujets Pub/Sub" dans la console Google Cloud.
Cliquez sur le sujet de votre projet.
Cliquez sur Créer un abonnement.
Entrez un nom d'abonnement :
projects/PROJECT/subscriptions/[SUBSCRIPTION-NAME]
Laissez le type de distribution défini sur Retrait.
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 à celui-ci, vous pouvez configurer votre application d'abonné, qui reçoit les messages concernant les modifications apportées aux dépôts. Elles effectuent des tâches telles que les notifications d'événements, la journalisation système et la communication entre les applications.
Lorsqu'un utilisateur de dépôt transfère ou supprime une image, voici ce qui se produit:
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 correspond au numéro de votre projet Google Cloud. Le compte de service Artifact Registry dispose de l'autorisationpubsub.topics.publish
par défaut, ce qui lui permet de publier des modifications dans 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'autorisationpubsub.topics.publish
pour publier le message.Pub/Sub transfère le message du sujet vers votre abonnement.
Lorsque votre application d'abonné envoie une requête de messages, elle extrait le nouveau message de l'abonnement.
L'identité qui extrait les messages pour le compte de l'abonné doit être autorisée à accéder à l'abonnement. Pour accorder cette autorisation, utilisez le rôle Abonné Pub/Sub.
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 sur l'attribution 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-east1-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-east1-docker.pkg.dev/my-project/my-repo/hello-world@sha256:6ec128e26cd5...",
"tag":"us-east1-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-east1-docker.pkg.dev/my-project/my-repo/hello-world:1.1"
}
Le message peut contenir les valeurs DELETE
ou INSERT
pour la clé action
.
Étapes suivantes
- Consultez la documentation sur Pub/Sub.
- Pour obtenir une présentation détaillée de Pub/Sub, consultez la page Qu'est-ce que Pub/Sub ?.
- Apprenez-en plus sur les rôles de contrôle des accès Pub/Sub.