Configurazione delle notifiche Pub/Sub

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

Pub/Sub pubblica messaggi relativi ai tuoi repository in risorse denominate argomenti. Le applicazioni che si sottoscrivono agli argomenti Pub/Sub ricevono questi messaggi e ricevono notifiche quando lo stato di un repository cambia.

Artifact Registry pubblica messaggi per le seguenti modifiche:

  • Caricamenti di immagini
  • Nuovi tag aggiunti alle immagini
  • Eliminazione di immagini

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à, ad esempio i risultati di nuove analisi di 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 abbonato per ricevere messaggi sulle modifiche al repository.
  4. Se opportuno, configura le autorizzazioni per controllare l'accesso all'argomento e alla sottoscrizione.

Creazione dell'argomento Artifact Registry

Quando attivi l'API Artifact Registry in un progetto Google Cloud, Artifact Registry crea automaticamente un argomento Pub/Sub con l'ID argomento gcr. Se Container Registry è abilitato nello stesso progetto Google Cloud, l'argomento potrebbe già esistere poiché entrambi i servizi di registry utilizzano lo stesso argomento per pubblicare messaggi.

Se l'argomento gcr è stato eliminato per errore o non è presente, puoi aggiungerlo manualmente. Ad esempio, l'argomento potrebbe non essere presente se la tua organizzazione Google Cloud ha un vincolo del criterio dell'organizzazione che richiede la crittografia con chiavi di crittografia gestite dal cliente (CMEK). Se l'API Pub/Sub si trova nell'elenco di tipi non consentiti di questo vincolo, i servizi non possono creare automaticamente argomenti con chiavi di crittografia gestite da Google.

Per visualizzare un elenco degli argomenti esistenti, puoi consultare la pagina degli argomenti Pub/Sub nella console Google Cloud o eseguire questo comando:

gcloud pubsub topics list

Per creare l'argomento gcr con chiavi di crittografia gestite da Google:

Console

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

    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 l'ID progetto Google Cloud. Se ometti il flag --project, il comando utilizza il progetto attuale.

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 di Pub/Sub per la crittografia degli argomenti.

Dopo aver creato l'argomento gcr o averne verificato l'esistenza, puoi creare una sottoscrizione per l'argomento.

Creazione di una sottoscrizione

Dopo aver creato un argomento per le modifiche al repository, puoi configurarne una sottoscrizione che utilizzi la consegna push o la consegna pull. Consigliamo di utilizzare la distribuzione 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 console Google Cloud.

    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 l'abbonamento

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

Ora disponi di una sottoscrizione all'argomento gcr. Il passaggio successivo consiste nella configurazione delle autorizzazioni per le identità che attivano le modifiche nei repository.

Configurazione dell'applicazione per abbonati

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

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

  1. L'account di servizio Artifact Registry pubblica la modifica nell'argomento gcr. L'account di servizio è service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com, dove PROJECT-NUMBER è il numero di progetto Google Cloud. L'account di servizio Artifact Registry dispone dell'autorizzazione pubsub.topics.publish per impostazione predefinita per poter pubblicare modifiche all'argomento.

    Se un amministratore ha revocato le autorizzazioni pubsub.topics.publish per l'account di servizio Artifact Registry, Artifact Registry tenta di pubblicare il messaggio come utente del repository. In questo caso, 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 tua sottoscrizione.

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

    L'identità che esegue il pull dei 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 di più su come configurare un abbonato in modo che riceva i messaggi da una sottoscrizione con la consegna pull, vedi Ricezione di messaggi mediante la modalità Pull.

Configurazione delle autorizzazioni

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

Per ulteriori informazioni 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 notifiche come stringhe in formato JSON. Esamina i seguenti esempi per scoprire cosa aspettarti quando ricevi le notifiche di Artifact Registry da Pub/Sub.

Quando viene eseguito il push di un'immagine ad Artifact Registry, il payload di notifica potrebbe essere simile a questo:

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

Quando viene eseguito il push di un nuovo tag immagine ad Artifact Registry, il payload della notifica ha il seguente aspetto:

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

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-east1-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