Pub/Sub-Benachrichtigungen konfigurieren

Es können Ihnen Benachrichtigungen von Pub/Sub zu Änderungen an einem Docker-Repository zugesandt werden. Benachrichtigungen gelten für jedes im Repository gespeicherte Container-Image, einschließlich Helm 3-Diagrammen im OCI-Format.

Pub/Sub veröffentlicht Nachrichten zu Ihren Repositories in benannten Ressourcen, die als Themen bezeichnet werden. Anwendungen, die Pub/Sub-Themen abonnieren, erhalten diese Nachrichten und Benachrichtigungen, wenn sich der Status eines Repositorys ändert.

Artifact Registry veröffentlicht Nachrichten bei folgenden Änderungen:

  • Es werden Images hochgeladen.
  • Es werden neue Tags zu Images hinzugefügt.
  • Es wird ein Image gelöscht.

Darüber hinaus können Sie Rollen und Berechtigungen für das Veröffentlichen oder Abonnieren von Benachrichtigungen konfigurieren.

Informationen zum Konfigurieren von Artefaktanalysebenachrichtigungen für Aktivitäten, z. B. neue Ergebnisse des Scans auf Sicherheitslücken, finden Sie in der Dokumentation zur Artefaktanalyse.

Überblick

Artifact Registry veröffentlicht Nachrichten zu Änderungen an Repositories in einem Thema namens gcr.

Um Benachrichtigungen zu erhalten, müssen Sie Folgendes ausführen:

  1. Erstellen Sie ein Thema namens gcr im Projekt mit Artifact Registry.
  2. Erstellen Sie ein Abo für das Thema.
  3. Richten Sie Ihre Abonnentenanwendung ein, um Nachrichten zu Repository-Änderungen zu erhalten.
  4. Konfigurieren Sie gegebenenfalls Berechtigungen, um den Zugriff auf Ihr Thema und Ihr Abo zu steuern.

Artifact Registry-Thema erstellen

Wenn Sie die Artifact Registry API in einem Google Cloud-Projekt aktivieren, erstellt Artifact Registry automatisch ein Pub/Sub-Thema mit der Themen-ID gcr. Wenn Container Registry im selben Google Cloud-Projekt aktiviert ist, ist das Thema möglicherweise bereits vorhanden, da beide Registry-Dienste dasselbe Thema zum Veröffentlichen von Nachrichten verwenden.

Wenn das Thema gcr versehentlich gelöscht wurde oder fehlt, können Sie es selbst hinzufügen. Das Thema fehlt beispielsweise, wenn Ihre Google Cloud-Organisation eine Einschränkung für Organisationsrichtlinien hat, die die Verschlüsselung mit vom Kunden verwalteten Verschlüsselungsschlüsseln (CMEK) erfordert. Wenn sich die Pub/Sub API auf der Ablehnungsliste dieser Einschränkung befindet, können Dienste nicht automatisch Themen mit von Google verwalteten Verschlüsselungsschlüsseln erstellen.

Wenn Sie eine Liste der vorhandenen Themen aufrufen möchten, können Sie die Seite „Pub/Sub-Themen“ in der Google Cloud Console aufrufen oder den folgenden Befehl ausführen:

gcloud pubsub topics list

So erstellen Sie das Thema gcr mit von Google verwalteten Verschlüsselungsschlüsseln:

Console

  1. Rufen Sie in der Google Cloud Console die Seite mit den Pub/Sub-Themen auf.

    Zur Seite mit Pub/Sub-Themen

  2. Klicken Sie auf Thema erstellen.

  3. Geben Sie die Themen-ID gcr ein.

  4. Klicken Sie auf Thema erstellen.

gcloud

Führen Sie dazu diesen Befehl aus:

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

Ersetzen Sie PROJECT-ID durch Ihre Google Cloud-Projekt-ID. Wenn Sie das Flag --project weglassen, verwendet der Befehl das aktuelle Projekt.

Weitere Informationen zum Befehl gcloud pubsub topics finden Sie in der topics-Dokumentation.

Informationen zum Erstellen des Themas gcr mit CMEK-Verschlüsselung finden Sie in der Pub/Sub-Anleitung zum Verschlüsseln von Themen.

Nachdem Sie das Thema gcr erstellt oder bestätigt haben, dass es vorhanden ist, können Sie ein Abo für das Thema erstellen.

Abo erstellen

Nachdem Sie für Repository-Änderungen ein Thema erstellt haben, können Sie dafür ein Abo konfigurieren, das entweder Push-Zustellung oder Pull-Zustellung verwendet. Es wird empfohlen, die Pull-Zustellung zu nutzen, da CI-/CD-Systeme potenziell viele Änderungen für gespeicherte Artefakte generieren und eine Pull-Zustellung für eine große Anzahl an Nachrichten effektiver ist.

So erstellen Sie ein Abo mit Pull-Zustellung:

Console

  1. Rufen Sie in der Google Cloud Console die Seite mit den Pub/Sub-Themen auf.

    Zur Seite mit Pub/Sub-Themen

  2. Klicken Sie auf das Thema Ihres Projekts.

  3. Klicken Sie auf Abo erstellen.

  4. Geben Sie einen Namen für das Abo ein:

    projects/PROJECT/subscriptions/[SUBSCRIPTION-NAME]
    

    Belassen Sie den Zustellungstyp bei Pull.

  5. Klicken Sie auf Erstellen.

gcloud

Führen Sie dazu diesen Befehl aus:

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

Ersetzen Sie dabei SUBSCRIPTION-NAME durch einen Namen für das Abo.

Weitere Informationen zum Befehl gcloud pubsub subscriptions finden Sie in der subscriptions-Dokumentation.

Es ist nun ein Abo für das Thema gcr vorhanden. Im nächsten Schritt konfigurieren Sie Berechtigungen für die Identitäten, die Änderungen in Repositories auslösen.

Abonnentenanwendung konfigurieren

Nachdem Sie ein Thema und ein Abo für dieses Thema erstellt haben, können Sie Ihre Abonnentenanwendung einrichten. Das ist die Anwendung, die Nachrichten zu Änderungen an Repositories erhält. Abonnentenanwendungen führen Aufgaben wie Ereignisbenachrichtigung, System-Logging und Gewährleistung der Kommunikation zwischen Anwendungen aus.

Wenn ein Repository-Nutzer ein Image überträgt oder löscht, werden die folgenden Schritte ausgeführt:

  1. Das Artifact Registry-Dienstkonto veröffentlicht die Änderung im Thema gcr. Das Dienstkonto ist service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com, wobei PROJECT-NUMBER Ihre Google Cloud-Projektnummer darstellt. Das Artifact Registry-Dienstkonto hat standardmäßig die Berechtigung pubsub.topics.publish, sodass es Änderungen an Ihrem Thema veröffentlichen kann.

    Wenn ein Administrator die pubsub.topics.publish-Berechtigungen für das Artifact Registry-Dienstkonto widerrufen hat, versucht Artifact Registry, die Nachricht als Repository-Nutzer zu veröffentlichen. In diesem Fall muss das Konto des Repository-Nutzers die Berechtigung pubsub.topics.publish haben, um die Nachricht erfolgreich zu veröffentlichen.

  2. Pub/Sub leitet die Nachricht vom Thema an Ihr Abo weiter.

  3. Wenn Ihre Abonnentenanwendung eine Anfrage für Nachrichten stellt, wird die neue Nachricht aus dem Abo abgerufen.

    Die Identität, die Nachrichten im Auftrag des Abonnenten abruft, muss Zugriff auf das Abo haben. Sie können diese Berechtigung mit der Rolle „Pub/Sub-Abonnent“ erteilen.

Informationen zum Einrichten eines Abonnenten, um Nachrichten von einem Abo mit Pull-Zustellung zu erhalten, finden Sie unter Nachrichten mit Pull empfangen.

Berechtigungen konfigurieren

Mit Pub/Sub-Berechtigungen können Sie den Zugriff auf Ihre Themen und Abos steuern.

Weitere Informationen zu Pub/Sub-Berechtigungen und zum Gewähren des Zugriffs auf Themen und Abos finden Sie in der Pub/Sub-Dokumentation zur Zugriffssteuerung.

Benachrichtigungsbeispiele

Pub/Sub sendet Benachrichtigungen als JSON-formatierte Strings. In den folgenden Beispielen wird gezeigt, was Sie bei Artifact Registry-Benachrichtigungen von Pub/Sub potenziell erhalten.

Wenn ein Image in Artifact Registry hochgeladen wird, kann die Nutzlast der Benachrichtigung in etwa so aussehen:

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

Wenn ein neues Image-Tag in Artifact Registry hochgeladen wird, sieht die Nutzlast der Benachrichtigung in etwa so aus:

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

Die Nachricht identifiziert das relevante Image entweder mit einem digest- oder einem tag-Schlüssel.

Wenn ein Image-Tag in Artifact Registry gelöscht wird, kann die Nutzlast der Benachrichtigung in etwa so aussehen:

{
  "action":"DELETE",
  "tag":"us-east1-docker.pkg.dev/my-project/my-repo/hello-world:1.1"
}

Die Nachricht kann entweder DELETE oder INSERT als Werte für den Schlüssel action enthalten.

Nächste Schritte