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 plus d'informations sur la configuration des notifications Artifact Analysis pour les 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 thème gcr
a été supprimé par accident ou est manquant, vous pouvez l'ajouter vous-même. Par exemple, le sujet peut être manquant si votre organisation Google Cloud est soumise à une contrainte de règle d'organisation qui nécessite le chiffrement avec des 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
Accédez à la page des sujets Pub/Sub dans la console Google Cloud.
Cliquez sur Créer un sujet.
Saisissez l'ID du sujet
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 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 les sujets.
Une fois que vous avez créé le sujet gcr
ou vérifié qu'il existe, vous pouvez créer un abonnement à ce 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
Accédez à la page des 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-ID]/subscriptions/[SUBSCRIPTION-NAME]
Laissez le type de distribution défini sur "Retrait".
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, administrateur pubsub, éditeur pubsub (pour les modifications), éditeur pubsub (pour les publications). Les principaux qui transfèrent des images ou en suppriment dans le registre doivent disposer de l'autorisation
pubsub.topics.publish
pour publier un message dans Pub/Sub.Pour configurer les autorisations d'abonnement, utilisez l'un des rôles suivants: propriétaire, éditeur, administrateur pubsub, éditeur pubsub (pour les modifications), éditeur pubsub (pour les publications).
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
.
Étape suivante
- 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.