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 Container-Image im Repository gespeichert, einschließlich Helm 3-Diagrammen im OCI-Format verpackt sind.

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 Artefaktanalyse-Benachrichtigungen für wie z. B. die Ergebnisse des Scans auf Sicherheitslücken, Dokumentation zur Artefaktanalyse

Übersicht

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, Artifact Registry erstellt automatisch ein Pub/Sub Thema mit der Themen-ID gcr. Wenn Container Registry im selben Google Cloud-Projekt zu erstellen, ist das Thema möglicherweise bereits vorhanden, da beide Registry- -Dienste verwenden dasselbe Thema, um Nachrichten zu veröffentlichen.

Wenn das Thema gcr versehentlich gelöscht wurde oder fehlt, können Sie es hinzufügen selbst. Das Thema kann z. B. fehlen, wenn Ihr Google Cloud-Team für die Organisation eine Einschränkung der Organisationsrichtlinie gilt, die Folgendes erfordert: Verschlüsselung mit vom Kunden verwalteten Verschlüsselungsschlüsseln (CMEKs) Wenn der Parameter Die Pub/Sub API befindet sich in der Ablehnungsliste dieser Einschränkung, -Dienste können Themen mit von Google gehörenden und von Google verwalteten Schlüsseln nicht automatisch erstellen.

Eine Liste der vorhandenen Themen finden Sie auf der Seite mit Pub/Sub-Themen in der Google Cloud Console oder führen Sie den folgenden Befehl aus:

gcloud pubsub topics list

So erstellen Sie das Thema gcr mit Google-eigenen und von Google verwalteten Schlüsseln:

Console

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

    Zur Seite "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 den Pub/Sub- Anleitung zum Verschlüsseln von Themen

Nachdem Sie das Thema gcr erstellt oder überprüft haben, ob es existiert, können Sie ein Abonnement 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 "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 folgenden 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 per Push oder Löschung sendet, 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. Die Artifact Registry-Dienstkonto hat die pubsub.topics.publish Berechtigung, um Änderungen an Ihrem Thema zu veröffentlichen.

    Wenn ein Administrator die pubsub.topics.publish-Berechtigungen für Artifact Registry-Dienstkonto verknüpft ist, versucht Artifact Registry, als Repository-Nutzer. In diesem Fall hat der Nutzer des Repositorys Konto muss die Berechtigung pubsub.topics.publish haben, um veröffentlichen Sie die Nachricht.

  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