Remote-Repositories erstellen

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

  1. 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
    
  2. 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
    
  3. 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:

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:

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

  1. Öffnen Sie in der Google Cloud Console die Seite Repositories.

    Zur Seite „Repositories“

  2. Klicken Sie auf Repository erstellen.

  3. Geben Sie den Repository-Namen an. Repository-Namen können für jeden Repository-Speicherort in einem Projekt nur einmal vorkommen.

  4. Wählen Sie das Repository-Format aus.

  5. Wählen Sie unter Repository-Modus die Option Remote aus.

  6. Wählen Sie unter Standorttyp den Speicherort für das Repository aus:

    1. Wählen Sie als Speicherort „Region“ oder „Mehrere Regionen“ aus. Die Liste der Speicherorte ändert sich entsprechend Ihrer Auswahl.

    2. 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.

  7. 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.

  8. 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.

  9. 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.
  10. Klicken Sie auf Erstellen.

Artifact Registry erstellt das Repository und fügt es der Liste der Repositories hinzu.

Nachdem Sie das Repository erstellt haben:

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 Befehl gcloud 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 Befehl gcloud 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 Befehl gcloud 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 Befehl gcloud 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

Repository-Beschreibungen bearbeiten

Sie können die Repository-Beschreibung über die Google Cloud Console oder die gcloud CLI ändern.

Console

  1. Öffnen Sie in der Google Cloud Console die Seite Repositories.

    Zur Seite „Repositories“

  2. Wählen Sie in der Repository-Liste das Repository aus und klicken Sie auf Repository bearbeiten.

  3. 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