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:
- 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 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
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 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
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 überträgt oder löscht, 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
, 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 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