Configurazione delle notifiche Pub/Sub

Puoi ricevere notifiche da Pub/Sub per le modifiche a un repository Docker. Le notifiche si applicano a qualsiasi immagine container archiviata nel repository, inclusi i grafici Helm 3 confezionati in formato OCI.

Pub/Sub pubblica messaggi sui 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 la sottoscrizione 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:

  1. Crea un argomento denominato gcr nel progetto con Artifact Registry.
  2. Crea una sottoscrizione all'argomento.
  3. Configura l'applicazione del sottoscrittore per ricevere messaggi sulle modifiche del repository.
  4. Se necessario, configura le autorizzazioni per controllare l'accesso all'argomento e alla sottoscrizione.

Creazione dell'argomento Artifact Registry

Per creare l'argomento gcr con di proprietà di Google e gestite da Google basate su Google Cloud:

Console

  1. Vai alla pagina degli argomenti Pub/Sub nella Google Cloud console.

    Vai alla pagina degli argomenti Pub/Sub

  2. Fai clic su Crea argomento.

  3. Inserisci l'ID argomento gcr.

  4. Fai clic su Crea argomento.

gcloud

Esegui questo comando:

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

Sostituisci PROJECT-ID con il tuo Google Cloud ID progetto. Se ometti il flag --project, il comando utilizza il progetto corrente.

Per saperne di più sul comando gcloud pubsub topics, consulta la topics documentazione.

Per creare l'argomento gcr con la crittografia CMEK, consulta le istruzioni di Pub/Sub per la crittografia degli argomenti.

Dopo aver creato l'argomento gcr o aver verificato che esista, puoi creare una sottoscrizione all'argomento.

Creazione di una sottoscrizione

Dopo aver creato un argomento per le modifiche del repository, puoi configurare una sottoscrizione che utilizzi la consegna push o pull. Ti consigliamo di utilizzare la consegna pull, poiché i sistemi CI/CD possono generare numerose modifiche agli artefatti archiviati e la consegna pull è più efficace per un volume elevato di messaggi.

Per creare una sottoscrizione con consegna pull:

Console

  1. Vai alla pagina degli argomenti Pub/Sub nella Google Cloud console.

    Vai alla pagina degli argomenti Pub/Sub

  2. Fai clic su un argomento del progetto.

  3. Fai clic su Crea sottoscrizione.

  4. Inserisci un nome per la sottoscrizione:

    projects/PROJECT/subscriptions/[SUBSCRIPTION-NAME]
    

    Lascia Tipo di consegna impostato su Pull.

  5. Fai clic su Crea.

gcloud

Esegui questo comando:

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

Sostituisci SUBSCRIPTION-NAME con un nome per la sottoscrizione.

Per saperne di più sul comando gcloud pubsub subscriptions, consulta la subscriptions documentazione.

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 del sottoscrittore

Dopo aver creato un argomento e una sottoscrizione all'argomento, puoi configurare l'applicazione del sottoscrittore, ovvero l'applicazione che riceve i messaggi sulle modifiche ai repository. Le applicazioni del sottoscrittore svolgono attività come le notifiche degli eventi, la registrazione di sistema e la comunicazione tra le applicazioni.

Quando un utente del repository esegue il push o elimina un'immagine, si verificano i seguenti passaggi:

  1. Il account di servizio di 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 numero del progetto Google Cloud . Per impostazione predefinita, il account di servizio di Artifact Registry dispone dell'autorizzazione pubsub.topics.publish, in modo che possa pubblicare le modifiche nell'argomento.

    Se un amministratore ha revocato le autorizzazioni pubsub.topics.publish per il account di servizio di 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'autorizzazione pubsub.topics.publish per pubblicare correttamente il messaggio.

  2. Pub/Sub inoltra il messaggio dall'argomento alla sottoscrizione.

  3. Quando l'applicazione del sottoscrittore effettua una richiesta di messaggi, estrae il nuovo messaggio dalla sottoscrizione.

    L'identità che estrae i messaggi per conto del sottoscrittore deve disporre delle autorizzazioni per accedere alla sottoscrizione. Puoi utilizzare il ruolo Sottoscrittore Pub/Sub per concedere questa autorizzazione.

Per scoprire come configurare un sottoscrittore per ricevere messaggi da una sottoscrizione con consegna pull, consulta Ricezione di messaggi utilizzando la modalità pull.

Configurazione delle autorizzazioni

Puoi utilizzare le autorizzazioni Pub/Sub per controllare l'accesso agli argomenti e alle sottoscrizioni.

Per saperne di più sulle autorizzazioni Pub/Sub e sulla concessione dell'accesso ad argomenti e sottoscrizioni, consulta la documentazione sul controllo degli accessi di Pub/Sub.

Esempi di notifiche

Pub/Sub invia le notifiche come stringhe in formato JSON. Esamina gli esempi seguenti per scoprire cosa aspettarti quando ricevi le notifiche di Artifact Registry da Pub/Sub.

Quando viene eseguito il push di un'immagine in Artifact Registry, il payload della notifica potrebbe essere simile al seguente:

{
  "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 è simile al seguente:

{
  "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 essere simile al seguente:

{
  "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