Auf dieser Seite wird beschrieben, wie Sie ein Artifact Registry-Remote-Repository einrichten und verwenden. Das ist ein Repository, das als Caching-Proxy für ein externes öffentliches Artefakt-Repository dient.
Hinweis
Installieren und initialisieren Sie die Google Cloud CLI. Aktualisieren Sie bei einer vorhandenen Installation die Komponenten der Google Cloud CLI mit dem folgenden Befehl:
gcloud components update
Führen Sie den folgenden Befehl aus, um Ihre Version der gcloud CLI zu prüfen:
gcloud version
Aktivieren Sie die Artifact Registry API, falls sie noch nicht aktiviert ist. Ersetzen Sie PROJECT_ID durch die ID Ihres Google Cloud-Projekts.
gcloud services enable artifactregistry.googleapis.com \ --project=PROJECT_ID
Wenn sich Artifact Registry in einem Dienstperimeter für VPC Service Controls befindet, aktivieren Sie die Access Context Manager API, falls sie noch nicht aktiviert ist.
gcloud services enable accesscontextmanager.googleapis.com \ --project=PROJECT_ID
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zu gewähren, um die Berechtigungen zu erhalten, die Sie zum Verwalten von Repositories benötigen:
-
Erstellen Sie Remote-Repositories und gewähren Sie Zugriff auf einzelne Repositories:
Artifact Registry-Administrator (
roles/artifactregistry.admin
) für das Projekt -
Zugriff auf vorgelagerte Quellen außerhalb eines Dienstperimeters für VPC Service Controls gewähren:
Access Context Manager-Editor (
roles/accesscontextmanager.policyEditor
) für das Projekt, den Ordner oder die Organisation, auf die die Zugriffsrichtlinie angewendet wird
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Überblick
Ein Remote-Repository ist ein Repository-Typ, der Artefakte aus externen Quellen wie Docker Hub oder PyPI speichert. Sie dient als Proxy für die externe Quelle, sodass Sie mehr Kontrolle über Ihre externen Abhängigkeiten haben. Wenn Sie eine Version eines Pakets zum ersten Mal anfordern, wird das Paket von Artifact Registry heruntergeladen und im Remote-Repository im Cache gespeichert. Wenn Sie das nächste Mal dieselbe Paketversion anfordern, stellt Artifact Registry die im Cache gespeicherte Kopie bereit.
Die anderen Repository-Modi sind:
- Standard: Der Standard-Repository-Modus. Artefakte wie private Pakete werden direkt in Standard-Repositories hochgeladen oder veröffentlicht. Sie können zwar direkt aus einzelnen Standard-Repositories herunterladen, aber der Zugriff auf Gruppen von Repositories mit einem virtuellen Repository vereinfacht die Toolkonfiguration.
- Virtual: Ein Repository, das als einzelner Zugangspunkt für mehrere vorgelagerte Repositories fungiert, einschließlich Remote- und Standard-Repositories.
Remote-Repositories bieten mehrere Vorteile:
- Schnellerer, zuverlässigerer Zugriff auf Artefakte
- Durch das Speichern von im Cache gespeicherten Kopien Ihrer öffentlichen Abhängigkeiten in Artifact Registry wird die Latenz verringert, wenn andere Google Cloud-Dienste Images abrufen. Im Cache gespeicherte Artefakte sind auch weiterhin verfügbar, wenn das externe öffentliche Repository aufgrund eines Ausfalls oder eines anderen Problems offline ist.
- Sicherere Auflösung
Verwenden Sie Remote-Repositories zusammen mit virtuellen Repositories, um Risiken zu minimieren, die mit öffentlichen Abhängigkeiten verbunden sind. Einige Tools bieten keine Möglichkeit, die Suchreihenfolge zu steuern, wenn im Client eine Mischung aus privaten und öffentlichen Repositories konfiguriert ist. Diese Art von Konfiguration ist anfällig für einen Abhängigkeitskonflikt, bei dem jemand eine neue Version eines Pakets mit fehlerhaftem Code in ein öffentliches Repository hochlädt, um Clients zur Auswahl der fehlerhaften Version zu bewegen.
Anstatt Clients direkt für die Suche in mehreren Repositories zu konfigurieren, können Sie virtuelle Repositories so konfigurieren, dass Ihre privaten Repositories gegenüber Remote-Repositories priorisiert werden.
Wenn sich Artifact Registry in einem VPC Service Controls-Perimeter befindet, wird der Zugriff auf vorgelagerte Quellen außerhalb des Perimeters standardmäßig verweigert. Informationen dazu, wie Sie Remote-Repositories an einem bestimmten Standort den Zugriff auf ihre konfigurierten externen Quellen außerhalb des Perimeters erlauben, finden Sie in der Anleitung zur VPC Service Controls-Konfiguration.
Weitere Best Practices für das Abhängigkeitsmanagement finden Sie unter Abhängigkeitsmanagement.
Aktualisierungen von Paketindexen und -metadaten
Änderbare Artefakte wie Paketindexe und Metadaten werden aus der übergeordneten Quelle aktualisiert, wenn sie älter als 72 Stunden sind.
Unterstützte Formate
Sie können Remote-Repositories für die folgenden Artifact Registry-Repository-Formate und die entsprechende Upstream-Quelle erstellen:
- Docker: für öffentliche Images in Docker Hub
- Maven: Für öffentliche Pakete in Maven Central.
- npm: für öffentliche Pakete in der npm-Registry.
- Python: für öffentliche Pakete im Python-Paketindex (PyPI).
Während der Vorschau werden andere vorgelagerte Quellen nicht unterstützt.
Die Einrichtung ähnelt der Einrichtung eines Standard-Repositorys.
Remote-Repository erstellen
Beim Erstellen eines Repositorys müssen Sie die folgenden Einstellungen konfigurieren, die nach dem Erstellen des Repositorys nicht mehr geändert werden können:
- Artefaktformat.
- Repository-Modus, wenn für das ausgewählte Format mehrere Modi verfügbar sind.
- Speicherort des Repositorys
- Verschlüsselung mit von Google verwalteten oder vom Kunden verwalteten Verschlüsselungsschlüsseln. Artifact Registry verwendet standardmäßig von Google verwaltete Verschlüsselungsschlüssel.
Artifact Registry erzwingt Einschränkungen für Organisationsrichtlinien, die verlangen, dass CMEK Ressourcen verschlüsseln oder einschränken kann, welche Cloud KMS-Schlüssel für den CMEK-Schutz verwendet werden können.
Remote-Repository mit der Google Cloud Console erstellen
Öffnen Sie in der Google Cloud Console die Seite Repositories.
Klicken Sie auf Repository erstellen.
Geben Sie den Repository-Namen an. Repository-Namen können für jeden Repository-Speicherort in einem Projekt nur einmal vorkommen.
Wählen Sie das Repository-Format aus.
Wählen Sie unter Repository-Modus die Option Remote aus.
Wählen Sie unter Standorttyp den Speicherort für das Repository aus:
Wählen Sie als Speicherort „Region“ oder „Mehrere Regionen“ aus. Die Liste der Speicherorte ändert sich entsprechend Ihrer Auswahl.
Wählen Sie in der Liste Region oder Mehrere Regionen einen Speicherort aus.
Informationen zu Standorttypen und unterstützten Standorten finden Sie unter Repository-Standorte.
Fügen Sie eine Beschreibung für das Repository hinzu. Beschreibungen helfen dabei, den Zweck des Repositorys und die darin enthaltenen Artefakte zu ermitteln.
Geben Sie keine sensiblen Daten an, da Repository-Beschreibungen nicht verschlüsselt sind.
Wenn Sie Ihre Repositories mithilfe von Labels organisieren möchten, klicken Sie auf Label hinzufügen und geben Sie das Schlüssel/Wert-Paar für das Label ein. Sie können Labels hinzufügen, bearbeiten oder entfernen, nachdem Sie das Repository erstellt haben.
Wählen Sie im Abschnitt Verschlüsselung den Verschlüsselungsmechanismus für das Repository aus.
- Von Google verwalteter Schlüssel: Verschlüsselung des Repository-Inhalts mit einem von Google verwalteten Verschlüsselungsschlüssel.
- Vom Kunden verwalteter Schlüssel: Verschlüsselung des Repository-Inhalts mit einem Schlüssel, den Sie über Cloud Key Management Service steuern. Eine grundlegende Einrichtungsanleitung finden Sie unter Vom Kunden verwalteten Schlüssel für Repositories einrichten.
Klicken Sie auf Erstellen.
Artifact Registry erstellt das Repository und fügt es der Liste der Repositories hinzu.
Nachdem Sie das Repository erstellt haben:
- Gewähren Sie Zugriff auf das Repository.
Docker, Paketmanager und andere Drittanbieterclients für die Authentifizierung bei Repositories konfigurieren
Remote-Repository mit der gcloud CLI erstellen
Führen Sie zum Erstellen eines Repositorys den Befehl für das entsprechende Repository-Format aus:
Docker
gcloud artifacts repositories create REMOTE-REPOSITORY-NAME \
--project=PROJECT_ID \
--repository-format=docker \
--location=LOCATION \
--description="DESCRIPTION" \
--mode=remote-repository \
--remote-repo-config-desc="REMOTE-REPOSITORY-DESCRIPTION" \
--remote-docker-repo=DOCKER-HUB
Dabei gilt:
REMOTE-REPOSITORY-NAME
ist der Name des Repositorys. Für jeden Repository-Standort in einem Projekt müssen Repository-Namen eindeutig sein.PROJECT_ID
ist die Projekt-ID. Wenn dieses Flag nicht angegeben ist, wird das aktuelle Projekt oder das Standardprojekt verwendet.LOCATION
ist der regionale oder multiregionale Standort für das Repository. Sie können dieses Flag weglassen, wenn Sie einen Standard-Speicherort festgelegt haben. Führen Sie den Befehlgcloud artifacts locations list
aus, um eine Liste der unterstützten Standorte aufzurufen.DESCRIPTION
ist eine optionale Beschreibung des Repositorys. Geben Sie keine sensiblen Daten an, da Repository-Beschreibungen nicht verschlüsselt sind.REMOTE-REPOSITORY-DESCRIPTION
ist eine Beschreibung der Konfiguration des externen Repositorys für dieses Remote-Repository.
Mit dem folgenden Befehl wird beispielsweise ein Remote-Repository mit dem Namen my-repo
in der Region us-east1
im Google Cloud-Projekt my-project
erstellt.
gcloud artifacts repositories create my-repo \
--project=my-project \
--repository-format=docker \
--location=us-east1 \
--description="Remote Docker repository" \
--mode=remote-repository \
--remote-repo-config-desc="Docker Hub" \
--remote-docker-repo=DOCKER-HUB
Maven
gcloud artifacts repositories create REMOTE-REPOSITORY-NAME \
--project=PROJECT_ID \
--repository-format=maven \
--location=LOCATION \
--description="DESCRIPTION" \
--mode=remote-repository \
--remote-repo-config-desc="REMOTE-REPOSITORY-DESCRIPTION" \
--remote-mvn-repo=MAVEN-CENTRAL
Dabei gilt:
REMOTE-REPOSITORY-NAME
ist der Name des Repositorys. Für jeden Repository-Standort in einem Projekt müssen Repository-Namen eindeutig sein.PROJECT_ID
ist die Projekt-ID. Wenn dieses Flag nicht angegeben ist, wird das aktuelle Projekt oder das Standardprojekt verwendet.LOCATION
ist der regionale oder multiregionale Standort für das Repository. Sie können dieses Flag weglassen, wenn Sie einen Standard-Speicherort festgelegt haben. Führen Sie den Befehlgcloud artifacts locations list
aus, um eine Liste der unterstützten Standorte aufzurufen.DESCRIPTION
ist eine optionale Beschreibung des Repositorys. Geben Sie keine sensiblen Daten an, da Repository-Beschreibungen nicht verschlüsselt sind.REMOTE-REPOSITORY-DESCRIPTION
ist eine Beschreibung der Konfiguration des externen Repositorys für dieses Remote-Repository.
Mit dem folgenden Befehl wird beispielsweise ein Remote-Repository mit dem Namen my-repo
in der Region us-east1
im Google Cloud-Projekt my-project
erstellt.
gcloud artifacts repositories create my-repo \
--project=my-project \
--repository-format=maven \
--location=us-east1 \
--description="Remote Maven repository" \
--mode=remote-repository \
--remote-repo-config-desc="Maven Central" \
--remote-mvn-repo=MAVEN-CENTRAL
npm
gcloud artifacts repositories create REMOTE-REPOSITORY-NAME \
--project=PROJECT_ID \
--repository-format=npm \
--location=LOCATION \
--description="DESCRIPTION" \
--mode=remote-repository \
--remote-repo-config-desc="REMOTE-REPOSITORY-DESCRIPTION" \
--remote-npm-repo=NPMJS
Dabei gilt:
REMOTE-REPOSITORY-NAME
ist der Name des Repositorys. Für jeden Repository-Standort in einem Projekt müssen Repository-Namen eindeutig sein.PROJECT_ID
ist die Projekt-ID. Wenn dieses Flag nicht angegeben ist, wird das aktuelle Projekt oder das Standardprojekt verwendet.LOCATION
ist der regionale oder multiregionale Standort für das Repository. Sie können dieses Flag weglassen, wenn Sie einen Standard-Speicherort festgelegt haben. Führen Sie den Befehlgcloud artifacts locations list
aus, um eine Liste der unterstützten Standorte aufzurufen.DESCRIPTION
ist eine optionale Beschreibung des Repositorys. Geben Sie keine sensiblen Daten an, da Repository-Beschreibungen nicht verschlüsselt sind.REMOTE-REPOSITORY-DESCRIPTION
ist eine Beschreibung der Konfiguration des externen Repositorys für dieses Remote-Repository.
Mit dem folgenden Befehl wird beispielsweise ein Remote-Repository mit dem Namen my-repo
in der Region us-east1
im Google Cloud-Projekt my-project
erstellt.
gcloud artifacts repositories create my-repo \
--project=my-project \
--repository-format=npm \
--location=us-east1 \
--description="Remote npm repository" \
--mode=remote-repository \
--remote-repo-config-desc="Public npm registry" \
--remote-npm-repo=NPMJS
Python
gcloud artifacts repositories create REMOTE-REPOSITORY-NAME \
--project=PROJECT_ID \
--repository-format=python \
--location=LOCATION \
--description="DESCRIPTION" \
--mode=remote-repository \
--remote-repo-config-desc="REMOTE-REPOSITORY-DESCRIPTION" \
--remote-python-repo=PYPI
Dabei gilt:
REMOTE-REPOSITORY-NAME
ist der Name des Repositorys. Für jeden Repository-Standort in einem Projekt müssen Repository-Namen eindeutig sein.PROJECT_ID
ist die Projekt-ID. Wenn dieses Flag nicht angegeben ist, wird das aktuelle Projekt oder das Standardprojekt verwendet.LOCATION
ist der regionale oder multiregionale Standort für das Repository. Sie können dieses Flag weglassen, wenn Sie einen Standard-Speicherort festgelegt haben. Führen Sie den Befehlgcloud artifacts locations list
aus, um eine Liste der unterstützten Standorte aufzurufen.DESCRIPTION
ist eine optionale Beschreibung des Repositorys. Geben Sie keine sensiblen Daten an, da Repository-Beschreibungen nicht verschlüsselt sind.REMOTE-REPOSITORY-DESCRIPTION
ist eine Beschreibung der Konfiguration des externen Repositorys für dieses Remote-Repository.
Mit dem folgenden Befehl wird beispielsweise ein Remote-Repository mit dem Namen my-repo
in der Region us-east1
im Google Cloud-Projekt my-project
erstellt.
gcloud artifacts repositories create my-repo \
--project=my-project \
--repository-format=python \
--location=us-east1 \
--description="Remote Python repository" \
--mode=remote-repository \
--remote-repo-config-desc="PyPI" \
--remote-python-repo=PYPI
Ihr Repository wird mit Artifact Registry erstellt. Führen Sie den folgenden Befehl aus, um eine Beschreibung des Repositorys anzusehen:
gcloud artifacts repositories describe REMOTE-REPOSITORY-NAME \
--location=LOCATION
- Gewähren Sie Zugriff auf das Repository.
Docker, Paketmanager und andere Drittanbieterclients für die Authentifizierung bei Repositories konfigurieren
Repository-Beschreibungen bearbeiten
Sie können die Repository-Beschreibung über die Google Cloud Console oder die gcloud CLI ändern.
Console
Öffnen Sie in der Google Cloud Console die Seite Repositories.
Wählen Sie in der Repository-Liste das Repository aus und klicken Sie auf Repository bearbeiten.
Bearbeiten Sie die Repository-Beschreibung und klicken Sie auf Speichern.
gcloud
Führen Sie den folgenden Befehl aus, um die Repository-Beschreibung zu aktualisieren:
gcloud artifacts repositories update REPOSITORY \
--project=PROJECT] \
--location=LOCATION \
--description="DESCRIPTION"
Ersetzen Sie die folgenden Werte:
- REPOSITORY ist der Name des Repositorys. Wenn Sie ein Standard-Repository konfiguriert haben, wird bei Weglassen des Flags dieses Standard-Repository verwendet.
- PROJECT ist die Google Cloud-Projekt-ID. Wenn dieses Flag nicht angegeben ist, wird das aktuelle Projekt oder das Standardprojekt verwendet.
- LOCATION ist ein regionaler oder multiregionaler Speicherort. Verwenden Sie dieses Flag, um Repositories an einem bestimmten Speicherort aufzurufen. Wenn Sie einen Standard-Speicherort konfiguriert haben, wird bei Weglassen dieses Flags dieser Standardwert verwendet.
- DESCRIPTION ist eine Beschreibung für das Repository.
Zugriff auf vorgelagerte Quellen in einem Dienstperimeter
Dienste in einem Dienstperimeter von VPC Service Controls haben eingeschränkten Zugriff auf Ressourcen außerhalb des Perimeters.
Sie können Zugriff auf vorgelagerte Quellen innerhalb eines bestimmten Google Cloud-Projekts und -Standorts zulassen oder ablehnen.
Standardmäßig wird der Zugriff auf Upstream-Quellen von Artifact Registry verweigert, wenn Sie den Zugriff nicht explizit gewährt haben.
Für Artifact Registry ist die erforderliche Rolle der Artifact Registry-Administrator (roles/artifactregistry.admin
).
Einstellungen für vorgelagerte Quellen ansehen
Führen Sie den folgenden Befehl aus, um die Konfiguration für eine bestimmte Projekt-Standort-Kombination aufzurufen:
gcloud artifacts vpcsc-config describe \
--project=PROJECT_ID \
--location=LOCATION
Verwenden Sie beispielsweise den folgenden Befehl, um die Einstellungen für Remote-Repositories in us-east1
im Projekt my-project
aufzurufen:
gcloud artifacts vpcsc-config describe \
--project=my-project \
--location=us-east1
Zugriff auf Upstream-Quellen erlauben
Führen Sie den folgenden Befehl aus, um den Zugriff auf Upstream-Quellen an einem bestimmten Speicherort zu erlauben:
gcloud artifacts vpcsc-config allow \
--project=PROJECT_ID \
--location=LOCATION
Verwenden Sie beispielsweise den folgenden Befehl, um allen Remote-Repositories in us-east1
im Projekt my-project
den Zugriff auf ihre vorgelagerten Quellen außerhalb des Perimeters zu erlauben:
gcloud artifacts vpcsc-config allow \
--project=my-project \
--location=us-east1
Zugriff auf vorgelagerte Quellen ablehnen
Wenn Sie den Zugriff auf vorgelagerte Quellen ablehnen, sind vorhandene im Cache gespeicherte Artefakte in Remote-Repositories weiterhin verfügbar.
Führen Sie den folgenden Befehl aus, um den Zugriff auf Upstream-Quellen an einem bestimmten Speicherort zu verweigern:
gcloud artifacts vpcsc-config deny \
--project=PROJECT_ID \
--location=LOCATION
Verwenden Sie beispielsweise den folgenden Befehl, um den Zugriff auf vorgelagerte Quellen außerhalb des Perimeters für alle Remote-Repositories in us-west1
im Projekt my-project
zu blockieren:
gcloud artifacts vpcsc-config deny \
--project=my-project \
--location=us-west1