Puoi ricevere notifiche da Pub/Sub per le modifiche a un repository Docker. Le notifiche si applicano a qualsiasi immagine container memorizzata nel repository, inclusi i grafici Helm 3 pacchettizzati in formato OCI.
Pub/Sub pubblica messaggi sui tuoi repository in risorse denominate argomenti. Le applicazioni che si abbonano agli argomenti Pub/Sub ricevono questi messaggi e notifiche quando lo stato di un repository cambia.
Artifact Registry pubblica messaggi per le seguenti modifiche:
- Caricamento di immagini
- Nuovi tag aggiunti alle immagini
- Eliminazione dell'immagine
Inoltre, puoi configurare ruoli e autorizzazioni per la pubblicazione o l'iscrizione alle notifiche.
Per informazioni sulla configurazione delle notifiche di Artifact Analysis per attività come i nuovi risultati dell'analisi delle vulnerabilità, consulta la documentazione di Artifact Analysis.Panoramica
Artifact Registry pubblica messaggi sulle modifiche ai repository in un
argomento denominato gcr.
Per ricevere le notifiche, devi:
- Crea un argomento denominato
gcrnel progetto con Artifact Registry. - Crea una sottoscrizione all'argomento.
- Configura l'applicazione di sottoscrizione per ricevere messaggi sulle modifiche al repository.
- Se opportuno, configura le autorizzazioni per controllare l'accesso all'argomento e all'abbonamento.
Creazione dell'argomento Artifact Registry
Per creare l'argomento gcr con chiavi di crittografia basate su Google Cloud :
Console
Vai alla pagina Argomenti Pub/Sub nella console Google Cloud .
Fai clic su Crea argomento.
Inserisci l'ID argomento
gcr.Fai clic su Crea argomento.
gcloud
Esegui questo comando:
gcloud pubsub topics create gcr --project=PROJECT-ID
Sostituisci PROJECT-ID con l'ID progetto Google Cloud. Se ometti il flag --project, il comando
utilizza il progetto corrente.
Per saperne di più sul comando gcloud pubsub topics, consulta la
documentazione di topics.
Per creare l'argomento gcr con la crittografia CMEK, consulta le
istruzioni per la crittografia degli argomenti di Pub/Sub.
Dopo aver creato l'argomento gcr o verificato che esista, puoi
creare una sottoscrizione all'argomento.
Creare un abbonamento
Dopo aver creato un argomento per le modifiche al repository, puoi configurare una sottoscrizione che utilizzi la distribuzione push o la distribuzione pull. Consigliamo di utilizzare la distribuzione pull poiché i sistemi CI/CD possono generare numerose modifiche agli artefatti archiviati e la distribuzione pull è più efficace per un volume elevato di messaggi.
Per creare un abbonamento con la pubblicazione pull:
Console
Vai alla pagina Argomenti Pub/Sub nella console Google Cloud .
Fai clic su un argomento del progetto.
Fai clic su Crea sottoscrizione.
Inserisci un nome per la sottoscrizione:
projects/PROJECT/subscriptions/[SUBSCRIPTION-NAME]Lascia Tipo di consegna impostato su Pull.
Fai clic su Crea.
gcloud
Esegui questo comando:
gcloud pubsub subscriptions create SUBSCRIPTION-NAME --topic=gcr
Sostituisci SUBSCRIPTION-NAME con un nome per l'abbonamento.
Per saperne di più sul comando gcloud pubsub subscriptions, consulta la
documentazione di subscriptions.
Ora hai una sottoscrizione all'argomento gcr. Il passaggio successivo consiste nel
configurare le autorizzazioni per le identità che attivano le modifiche
nei repository.
Configurazione dell'applicazione sottoscrittore
Dopo aver creato un argomento e una sottoscrizione a quell'argomento, puoi configurare l'applicazione sottoscrittore, ovvero l'applicazione che riceve messaggi sulle modifiche ai repository. Le applicazioni di sottoscrizione svolgono attività come notifiche di eventi, registrazione del sistema e comunicazione tra le applicazioni.
Quando un utente del repository esegue il push o elimina un'immagine, si verificano i seguenti passaggi:
Il account di servizio Artifact Registry pubblica la modifica nell'argomento
gcr. Il account di servizio è service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com, dove PROJECT-NUMBER è il tuo Google Cloud numero di progetto. Il account di servizio Artifact Registry dispone dell'autorizzazionepubsub.topics.publishper impostazione predefinita, in modo da poter pubblicare le modifiche all'argomento.Se un amministratore ha revocato le autorizzazioni
pubsub.topics.publishper il account di servizio Artifact Registry, Artifact Registry tenta di pubblicare il messaggio come utente del repository. In questa situazione, l'account dell'utente del repository deve disporre dell'autorizzazionepubsub.topics.publishper pubblicare il messaggio.Pub/Sub inoltra il messaggio dall'argomento alla sottoscrizione.
Quando l'applicazione sottoscrittore effettua una richiesta di messaggi, recupera il nuovo messaggio dalla sottoscrizione.
L'identità che recupera i messaggi per conto dell'abbonato deve disporre delle autorizzazioni per accedere all'abbonamento. Puoi utilizzare il ruolo Sottoscrittore Pub/Sub per concedere questa autorizzazione.
Per scoprire come configurare un abbonato per ricevere messaggi da una sottoscrizione con la distribuzione pull, consulta Ricevere messaggi utilizzando pull.
Configurazione delle autorizzazioni
Puoi utilizzare le autorizzazioni Pub/Sub per controllare l'accesso ai tuoi argomenti e alle tue sottoscrizioni.
Per saperne di più sulle autorizzazioni Pub/Sub e sulla concessione dell'accesso a argomenti e sottoscrizioni, consulta la documentazione sul controllo dell'accesso di Pub/Sub.
Esempi di notifiche
Pub/Sub invia le notifiche come stringhe formattate in JSON. Esamina i seguenti esempi per scoprire cosa aspettarti quando ricevi notifiche di Artifact Registry da Pub/Sub.
Quando viene eseguito il push di un'immagine in Artifact Registry, il payload della notifica potrebbe avere il seguente aspetto:
{
"action":"INSERT",
"digest":"us-west1-docker.pkg.dev/my-project/my-repo/hello-world@sha256:6ec128e26cd5..."
}
Quando viene eseguito il push di un nuovo tag immagine in Artifact Registry, il payload della notifica ha il seguente aspetto:
{
"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"
}
Il messaggio identifica l'immagine pertinente utilizzando una chiave digest o tag.
Quando un tag immagine viene eliminato da Artifact Registry, il payload della notifica potrebbe avere il seguente aspetto:
{
"action":"DELETE",
"tag":"us-west1-docker.pkg.dev/my-project/my-repo/hello-world:1.1"
}
Il messaggio potrebbe contenere DELETE o INSERT come valori per la chiave action.
Passaggi successivi
- Leggi la documentazione di Pub/Sub.
- Per una spiegazione approfondita di Pub/Sub, consulta Che cos'è Pub/Sub?
- Scopri di più sui ruolicontrollo dell'accessoo Pub/Sub.