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 der im OCI-Format verpackten Helm 3-Diagramme.
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 Aktivitäten wie 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:
- Erstellen Sie ein Thema namens
gcr
im Projekt mit Artifact Registry. - Erstellen Sie ein Abo für das Thema.
- Richten Sie Ihre Abonnentenanwendung ein, um Nachrichten zu Repository-Änderungen zu erhalten.
- 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 zum Veröffentlichen von Nachrichten dasselbe Thema verwenden.
Wenn das Thema gcr
versehentlich gelöscht wurde oder fehlt, können Sie es selbst hinzufügen. Beispielsweise kann das Thema fehlen, wenn Ihre Google Cloud-Organisation eine Einschränkung der Organisationsrichtlinie hat, die die Verschlüsselung mit vom Kunden verwalteten Verschlüsselungsschlüsseln (CMEKs) erfordert. Wenn sich die Pub/Sub API in der Sperrliste dieser Einschränkung befindet, können Dienste nicht automatisch Themen mit von Google verwalteten und von Google verwalteten Schlüsseln erstellen.
Wenn Sie eine Liste der vorhandenen Themen aufrufen möchten, können Sie die Seite mit den 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 Google-eigenen und von Google verwalteten Schlüsseln:
Console
Rufen Sie in der Google Cloud Console die Seite mit den Pub/Sub-Themen auf.
Klicken Sie auf Thema erstellen.
Geben Sie die Themen-ID
gcr
ein.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 überprüft haben, ob es existiert, 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
Rufen Sie in der Google Cloud Console die Seite mit den Pub/Sub-Themen auf.
Klicken Sie auf das Thema Ihres Projekts.
Klicken Sie auf Abo erstellen.
Geben Sie einen Namen für das Abo ein:
projects/PROJECT/subscriptions/[SUBSCRIPTION-NAME]
Belassen Sie den Zustellungstyp bei Pull.
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 per Push oder Löschung sendet, werden die folgenden Schritte ausgeführt:
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 Berechtigungpubsub.topics.publish
, damit 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 Berechtigungpubsub.topics.publish
haben, um die Nachricht erfolgreich zu veröffentlichen.Pub/Sub leitet die Nachricht vom Thema an Ihr Abo weiter.
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
- Lesen Sie die Pub/Sub-Dokumentation.
- Ausführliche Erläuterungen zu Pub/Sub finden Sie unter Was ist Pub/Sub?.
- Weitere Informationen zu Pub/Sub-Zugriffssteuerungsrollen