Pub/Sub-Benachrichtigungen konfigurieren

Es können Ihnen Benachrichtigungen von Pub/Sub zu Änderungen an einem Docker-Repository zugesandt werden. Benachrichtigungen gelten für alle im Repository gespeicherten Container-Images, einschließlich Helm 3-Diagramme, die 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, wird in Artifact Registry automatisch ein Pub/Sub-Thema mit der Themen-ID gcr erstellt. 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 selbst hinzufügen. Das Thema ist beispielsweise möglicherweise nicht verfügbar, wenn für Ihre Google Cloud-Organisation eine Einschränkung in einer Organisationsrichtlinie gilt, die eine Verschlüsselung mit vom Kunden verwalteten Verschlüsselungsschlüsseln (CMEK) erfordert. Wenn die Pub/Sub API sich in der Sperrliste dieser Einschränkung befindet, können Dienste keine Themen mit von Google verwalteten Schlüsseln 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 „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 gcr-Themas 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 "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 lautet service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com, wobei PROJECT-NUMBER die Projektnummer Ihres Google Cloud-Projekts ist. Das Artifact Registry-Dienstkonto hat standardmäßig die Berechtigung pubsub.topics.publish. Damit können Änderungen im Thema veröffentlicht werden.

    Wenn ein Administrator die pubsub.topics.publish-Berechtigungen für das Artifact Registry-Dienstkonto widerrufen hat, versucht Artifact Registry, die Mitteilung als Repository-Nutzer zu veröffentlichen. 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 aus dem 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