Configurazione delle notifiche Pub/Sub

Quando vengono apportate modifiche al repository di Container Registry, ad esempio quando viene eseguito il push, il tagging o l'eliminazione delle immagini, puoi ricevere le notifiche utilizzando Pub/Sub.

Pub/Sub pubblica messaggi relativi al tuo repository in risorse denominate argomenti. Questi messaggi vengono ricevuti dalle applicazioni sottoscritte agli argomenti Pub/Sub. Le applicazioni dei sottoscrittori inviano notifiche quando lo stato del repository cambia.

Inoltre, puoi configurare ruoli e autorizzazioni per gli argomenti Pub/Sub per controllare in che modo gli utenti interagiscono con il repository.

Per supportare la transizione da Container Registry ad Artifact Registry, Artifact Registry pubblica messaggi nello stesso argomento di Container Registry.

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.

Crea un argomento Pub/Sub

Quando attivi l'API Container Registry in un progetto Google Cloud, Container Registry crea automaticamente un argomento Pub/Sub con ID argomento gcr.

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

Crea una sottoscrizione Pub/Sub

Ogni argomento Pub/Sub deve avere una sottoscrizione.

Un'applicazione abbonato riceve messaggi dall'argomento del repository. I sottoscrittori eseguono attività come le notifiche degli eventi, il logging del sistema e la comunicazione tra le applicazioni.

Le sottoscrizioni possono essere configurate in modo da utilizzare un modello push o un modello pull.

Per creare una sottoscrizione:

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-ID]/subscriptions/[SUBSCRIPTION-NAME]
    

    Lascia il tipo di consegna impostato su Pull.

  5. Fai clic su Crea.

gcloud

Dal sistema in cui viene eseguito il push o il tagging delle immagini Docker, esegui questo comando:

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

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

Configurazione delle autorizzazioni Pub/Sub

Utilizza il controllo dell'accesso Pub/Sub per configurare le autorizzazioni per il progetto e le risorse. I controlli di accesso mantengono protetto il tuo repository e ti consentono di gestire le autorizzazioni degli utenti utilizzando l'accesso basato sui ruoli.

Puoi configurare i controlli dell'accesso Pub/Sub nella pagina IAM della console Google Cloud o tramite l'API IAM.

  • Per configurare le autorizzazioni per la pubblicazione, utilizza uno dei seguenti ruoli: proprietario, editor, pubsub.admin, pubsub.editor, pubsub.publisher. Le entità che eseguono il push delle immagini o eliminano le immagini dal registro devono disporre dell'autorizzazione pubsub.topics.publish per pubblicare un messaggio in Pub/Sub.

  • Per configurare le autorizzazioni per la sottoscrizione, utilizza uno dei seguenti ruoli: proprietario, editor, pubsub.admin, pubsub.editor, pubsub.subscriber.

Esempi di notifiche

Le notifiche vengono inviate come stringhe in formato JSON. Di seguito sono riportati alcuni esempi di cosa aspettarsi quando si ricevono notifiche di Container Registry da Pub/Sub.

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

{
  "action":"INSERT",
  "digest":"gcr.io/my-project/hello-world@sha256:6ec128e26cd5..."
}

Quando viene eseguito il push di un nuovo tag in Container Registry, il payload di notifica potrebbe avere il seguente aspetto:

{
  "action":"INSERT",
  "digest":"gcr.io/my-project/hello-world@sha256:6ec128e26cd5...",
  "tag":"gcr.io/my-project/hello-world:1.1"
}

Il messaggio identifica l'immagine pertinente utilizzando una chiave digest o tag.

Quando un tag viene eliminato da Container Registry, il payload delle notifiche potrebbe avere il seguente aspetto:

{
  "action":"DELETE",
  "tag":"gcr.io/my-project/hello-world:1.1"
}

Il messaggio potrebbe contenere DELETE o INSERT come valori per la chiave action.

Passaggi successivi