Remote-Repositories erstellen

Auf dieser Seite wird beschrieben, wie Sie Artifact Registry-Remote-Repositories erstellen.

In Remote-Repositories werden Artefakte aus den folgenden Upstream-Quellen gespeichert:

  • Standard-Artifact Registry-Repositories.
  • Externe Quellen wie die folgenden:
    • CentOS
    • Debian
    • Docker Hub
    • GitHub Container Registry (ghcr.io)
    • Maven Central
    • Der Python Package Index (PyPI)

Ein Remote-Repository fungiert als Proxy für die Upstream-Quelle, sodass Sie mehr Kontrolle über Ihre Abhängigkeiten haben. Wenn Sie zum ersten Mal eine Version eines Pakets anfordern, lädt Artifact Registry das Paket herunter und speichert es im Remote-Repository. Wenn Sie das nächste Mal dieselbe Paketversion anfordern, wird die im Cache gespeicherte Kopie von Artifact Registry bereitgestellt.

Wenn Sie ein Artefakt aus einer Upstream-Quelle anfordern, das nicht vorhanden ist oder nicht die von Ihnen angegebene Version enthält, schlägt die Anfrage fehl.

Die anderen Repository-Modi sind:

  • Standard: Der Standard-Repository-Modus. Sie laden Artefakte wie private Pakete direkt in Standard-Repositories hoch oder veröffentlichen sie dort. Sie können zwar direkt aus einzelnen Standard-Repositories herunterladen, der Zugriff auf Repository-Gruppen über ein virtuelles Repository vereinfacht jedoch die Toolkonfiguration.
  • Virtuell: Ein Repository, das als einzelner Zugriffspunkt für mehrere Upstream-Repositories dient, einschließlich Remote- und Standard-Repositories.

Weitere Informationen zur Funktionsweise von Remote-Repositories finden Sie unter Remote-Repository – Übersicht.

Hinweise

  1. Aktivieren Sie Artifact Registry sowie die Artifact Registry API und installieren Sie die Google Cloud CLI.
  2. Optional: Standardeinstellungen für die gcloud CLI-Befehle konfigurieren.
  3. Wenn Sie vom Kunden verwaltete Verschlüsselungsschlüssel (CMEK) zum Verschlüsseln von Repository-Inhalten benötigen, müssen Sie in Cloud KMS einen Schlüssel für das Repository erstellen und aktivieren.
  4. Wenn Sie sich bei einem Upstream-Repository authentifizieren möchten, aktivieren Sie die Secret Manager API.

    gcloud services enable secretmanager.googleapis.com \
        --project=PROJECT_ID
    
  5. Wenn sich Artifact Registry in einem VPC Service Controls-Dienstperimeter befindet, aktivieren Sie die Access Context Manager API, falls sie noch nicht aktiviert ist.

    gcloud services enable accesscontextmanager.googleapis.com \
        --project=PROJECT_ID
    
  6. Wenn Sie ein Artifact Registry-Repository als Upstream festlegen möchten und es sich in einem anderen Projekt als Ihr Remote-Repository befindet, müssen Sie dem Dienstkonto für das Remote-Repository-Projekt Zugriff auf das Upstream-Repository-Projekt gewähren, bevor Sie das Remote-Repository erstellen.

    Dienst-Agent-Rolle zuweisen

    Für Remote-Repositories wird der Artifact Registry-Dienst-Agent verwendet, um sich bei Artifact Registry-Upstream-Repositories zu authentifizieren. Sie müssen dem Agent des Remote-Repository-Dienstes Lesezugriff auf das Upstream-Repository gewähren.

    Führen Sie den folgenden Befehl aus, um dem Dienst-Agent des Remote-Repositorys die Rolle „Artifact Registry-Dienst-Agent“ für das Upstream-Repository zuzuweisen:

    
      gcloud projects add-iam-policy-binding UPSTREAM_REPOSITORY \
          --member serviceAccount:service-REMOTE_PROJECT_NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com \
          --location=REGION \
          --project=UPSTREAM_PROJECT_ID \
          --role roles/artifactregistry.serviceAgent
      

    Ersetzen Sie Folgendes:

    • UPSTREAM_REPOSITORY ist die ID des Upstream-Repositorys. Artifact Registry-Upstream-Repositories müssen Standardmodus-Repositories sein.
    • REMOTE_PROJECT_NUMBER ist die Projektnummer des Google Cloud Projekts für Ihr Remote-Repository.
    • REMOTE_PROJECT_ID ist die ID des Google Cloud-Projekts für Ihr Remote-Repository.
    • REGION ist die Region, in der Sie Ihr Remote-Repository erstellen möchten.
    • UPSTREAM_PROJECT_ID ist die ID des Google Cloud-Projekts mit dem Upstream-Repository.

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zur Verwaltung von Repositories benötigen:

  • Remote-Repositories erstellen und Zugriff auf einzelne Repositories gewähren: Artifact Registry-Administrator (roles/artifactregistry.admin) für das Projekt
  • Anmeldedaten für das Upstream-Repository in einer Secret-Version speichern: Secret Manager Admin (roles/secretmanager.admin) für das Projekt
  • Zugriff auf Upstream-Quellen außerhalb eines VPC Service Controls-Dienstperimeters gewähren: Access Context Manager-Bearbeiter (roles/accesscontextmanager.policyEditor) für das Projekt, den Ordner oder die Organisation, in der die Zugriffsrichtlinie angewendet wird

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

Remote-Repository erstellen

Wenn Sie ein Remote-Repository erstellen, müssen Sie die folgenden Einstellungen konfigurieren, die nach dem Erstellen des Repositorys nicht mehr geändert werden können:

In Artifact Registry werden Einschränkungen für Organisationsrichtlinien erzwungen, die CMEK zum Verschlüsseln von Ressourcen erfordern oder einschränken, welche Cloud KMS-Schlüssel für den CMEK-Schutz verwendet werden können.

Console

  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 im Bereich Format das Repository-Format aus.

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

  6. Wählen Sie im Abschnitt Quell-Repository eine der folgenden Möglichkeiten aus, um die URL Ihres Upstream-Repositorys einzugeben:

    • Wählen Sie die aufgeführte vorausgewählte Upstream-Quelle für Ihren Formattyp aus.
    • Wählen Sie Benutzerdefiniert aus, um die vollständige URL zu einem öffentlichen oder privaten Repository für unterstützte Formate anzugeben.
    • Wählen Sie Artifact Registry-Repository aus, um ein Standard-Artifact Registry-Repository auszuwählen.
  7. Wenn Sie Benutzerdefiniert ausgewählt haben, geben Sie im Feld Benutzerdefiniertes Repository die vollständige Repository-URL ein. Die URL kann nach dem Erstellen des Repositorys nicht mehr geändert werden.

    Beispiele für einige gängige Upstream-URLs finden Sie unter Benutzerdefinierte Upstreams.

  8. Wenn Sie Artifact Registry-Repository ausgewählt haben:

    1. Geben Sie im Feld Artifact Registry-Repository den vollständigen Namen des Repositorys ein, das Sie als Upstream verwenden möchten, oder klicken Sie auf Durchsuchen, um eine Liste der Repositorys aufzurufen, auf die Sie Zugriff haben. Es werden nur Repositories mit demselben Format wie Ihr Remote-Repository aufgeführt.
    2. Klicken Sie auf den Namen des Repositorys, das Sie als Upstream verwenden möchten.
    3. Klicken Sie auf Auswählen.
  9. Wenn Sie einen der voreingestellten Upstreams ausgewählt oder über die Schaltfläche Benutzerdefiniert eine vollständige URL eingegeben haben, wählen Sie im Authentifizierungsmodus für Remote-Repository eine der folgenden Optionen aus:

    • Authentifiziert: Geben Sie Ihren Nutzernamen und Ihr Secret für die Authentifizierung in Ihrem Upstream-Repository ein.
    • Nicht authentifiziert: Die Authentifizierung für das Upstream-Repository wird übersprungen.
  10. Wenn Sie Authentifiziert ausgewählt haben, geben Sie Folgendes ein:

    • Geben Sie im Feld Nutzername Ihren Nutzernamen für das Upstream-Repository ein.
    • Geben Sie im Feld Secret die Secret-Version ein, in der Sie Ihr Passwort für das Upstream-Repository gespeichert haben.

    Sie können diese Werte bearbeiten, nachdem Sie das Repository erstellt haben. Weitere Informationen zur Authentifizierung bei Upstreams von Remote-Repositories finden Sie unter Authentifizierung bei Upstreams von Remote-Repositories konfigurieren.

  11. Wählen Sie im Bereich 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 Typen von Speicherorten und unterstützten Speicherorten finden Sie unter Repository-Speicherorte.

  12. 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 vertraulichen Daten an, da Repository-Beschreibungen nicht verschlüsselt werden.

  13. Wenn Sie Ihre Repositories mit 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.

  14. Wählen Sie im Abschnitt Verschlüsselung den Verschlüsselungsmechanismus für das Repository aus.

    • Google-managed encryption key – Repository-Inhalte mit einem Google-owned and Google-managed encryption keyverschlüsseln.
    • 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.
  15. Wenn Sie Bereinigungsrichtlinien zum Löschen nicht verwendeter Artefakte verwenden möchten, gehen Sie im Abschnitt Bereinigungsrichtlinien so vor:

    1. Wählen Sie Probelauf aus, um die Richtlinie zu testen, bevor Sie sie anwenden.
    2. Klicken Sie auf Richtlinie hinzufügen, um Ihrem Repository eine Aufbewahrungs- oder Löschrichtlinie hinzuzufügen.
    3. Geben Sie im Feld Name einen aussagekräftigen Namen für die Bereinigungsrichtlinie ein.
    4. Wählen Sie im Bereich Richtlinientyp eine der folgenden Optionen aus:

      • Bedingtes Löschen: Artefakte werden basierend auf von Ihnen definierten Bedingungen gelöscht.
      • Bedingte Aufbewahrung: Artefakte werden auf Grundlage von Bedingungen aufbewahrt, die Sie definieren.
      • Neueste Versionen beibehalten: Behält eine bestimmte Anzahl der neuesten Versionen pro Paket bei.

      Weitere Informationen zu Bereinigungsrichtlinien finden Sie unter Bereinigungsrichtlinien konfigurieren.

  16. Wählen Sie im Abschnitt Artifact Analysis (Artefaktanalyse) die Einstellungen für das Scannen auf Sicherheitslücken aus:

    • Aktiviert: Das Scannen in diesem Repository ist zulässig. Die Container Scanning API muss für Ihr Projekt aktiviert sein.

      Wenn Sie die Container Scanning API aktivieren, beginnt die Abrechnung sofort. Nachdem Sie die Container Scanning API für ein Projekt aktiviert haben, wird das Scannen auf Sicherheitslücken für alle neuen und vorhandenen Repositories aktiviert. Wenn Sie ein Image in Artifact Registry hochladen, wird es automatisch von der Artefaktanalyse gescannt.

    • Deaktiviert: Das Scannen in diesem Repository wird verhindert. Wenn die Container Scanning API in Ihrem Projekt aktiviert ist, wird das Scannen in anderen Repositorys fortgesetzt. Dieses Repository wird ausgeschlossen.

      Weitere Informationen zu den Optionen für das Scannen auf Sicherheitslücken finden Sie unter Automatisches Scannen aktivieren und deaktivieren.

  17. Klicken Sie auf Erstellen.

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

gcloud-CLI

Führen Sie den Befehl für das entsprechende Repository-Format aus, um ein Repository zu erstellen:

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" \
    --disable-vulnerability-scanning \
    --remote-docker-repo=UPSTREAM

Optionale Flags für die Authentifizierung beim Upstream-Repository:

  • --remote-username=USERNAME
  • --remote-password-secret-version=SECRET_VERSION

Ersetzen Sie Folgendes:

  • REMOTE-REPOSITORY-NAME durch den Namen des Repositorys. Repository-Namen können für jeden Repository-Speicherort in einem Projekt nur einmal vorkommen.
  • PROJECT_ID durch die Projekt-ID. Wenn dieses Flag nicht angegeben ist, wird das aktuelle Projekt oder das Standardprojekt verwendet.
  • LOCATION durch den regionalen oder multiregionalen 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 Speicherorte aufzurufen.
  • DESCRIPTION mit einer optionalen Beschreibung des Repositorys. Geben Sie keine vertraulichen Daten an, da Repository-Beschreibungen nicht verschlüsselt werden.
  • REMOTE-REPOSITORY-DESCRIPTION durch eine Beschreibung der Konfiguration des externen Repositorys für dieses Remote-Repository.
  • USERNAME – optional, wenn Sie die Authentifizierung verwenden, mit Ihrem Nutzernamen für die Authentifizierung beim Upstream-Repository.
  • SECRET_VERSION optional, wenn Sie die Authentifizierung verwenden, mit der Secret-Version, die das Passwort für Ihr Upstream-Repository enthält.
  • UPSTREAM durch den voreingestellten Upstream-Namen, den Artifact Registry-Repositorypfad oder die benutzerdefinierte URL des Upstream-Repositorys.

    Für Artifact Registry-Upstream-Repositories formatieren Sie den Repository-Pfad so: projects/UPSTREAM_PROJECT_ID/locations/REGION/repositories/UPSTREAM_REPOSITORY.

    Informationen zu den verfügbaren voreingestellten Upstreams und den unterstützten benutzerdefinierten Upstreams finden Sie unter Unterstützte Formate.

  • --disable-vulnerability-scanning: ist ein optionales Flag, mit dem Sie das automatische Scannen auf Sicherheitslücken für Ihr Repository deaktivieren können.

  • --allow-vulnerability-scanning: ist ein optionales Flag, das Ihr Repository so konfiguriert, dass das automatische Scannen auf Sicherheitslücken zulässig ist. Weitere Informationen finden Sie unter Automatisches Scannen aktivieren oder deaktivieren.

Mit dem folgenden Befehl wird beispielsweise ein Remote-Repository namens my-repo in der Region us-east1 im Projekt Google Cloud my-project erstellt. Die Authentifizierung beim Upstream-Repository kann mit dem Nutzernamen my-username und der Secret-Version projects/my-project/secrets/my-secret/versions/1 erfolgen.

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-username=my-username \
    --remote-password-secret-version=projects/my-project/secrets/my-secret/versions/1 \
    --remote-docker-repo=DOCKER-HUB

Weitere Informationen zur Authentifizierung bei Docker Hub-Upstream-Repositories finden Sie unter Authentifizierung für Remote-Repositories für Docker Hub konfigurieren.

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" \
    --disable-vulnerability-scanning \
    --remote-mvn-repo=UPSTREAM

Optionale Flags für die Authentifizierung beim Upstream-Repository:

  • --remote-username=USERNAME
  • --remote-password-secret-version=SECRET_VERSION

Ersetzen Sie Folgendes:

  • REMOTE-REPOSITORY-NAME durch den Namen des Repositorys. Repository-Namen können für jeden Repository-Speicherort in einem Projekt nur einmal vorkommen.
  • PROJECT_ID durch die Projekt-ID. Wenn dieses Flag nicht angegeben ist, wird das aktuelle Projekt oder das Standardprojekt verwendet.
  • LOCATION durch den regionalen oder multiregionalen 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 Speicherorte aufzurufen.
  • DESCRIPTION mit einer optionalen Beschreibung des Repositorys. Geben Sie keine vertraulichen Daten an, da Repository-Beschreibungen nicht verschlüsselt werden.
  • REMOTE-REPOSITORY-DESCRIPTION durch eine Beschreibung der Konfiguration des externen Repositorys für dieses Remote-Repository.
  • USERNAME – optional, wenn Sie die Authentifizierung verwenden, mit Ihrem Nutzernamen für die Authentifizierung beim Upstream-Repository.
  • SECRET_VERSION optional, wenn Sie die Authentifizierung verwenden, mit der Secret-Version, die das Passwort für Ihr Upstream-Repository enthält.
  • UPSTREAM durch den voreingestellten Upstream-Namen, den Artifact Registry-Repositorypfad oder die benutzerdefinierte URL des Upstream-Repositorys.

    Für Artifact Registry-Upstream-Repositories formatieren Sie den Repository-Pfad so: projects/UPSTREAM_PROJECT_ID/locations/REGION/repositories/UPSTREAM_REPOSITORY.

    Informationen zu den verfügbaren voreingestellten Upstreams und den unterstützten benutzerdefinierten Upstreams finden Sie unter Unterstützte Formate.

  • --disable-vulnerability-scanning: ist ein optionales Flag, mit dem Sie das automatische Scannen auf Sicherheitslücken für Ihr Repository deaktivieren können.

  • --allow-vulnerability-scanning: ist ein optionales Flag, das Ihr Repository so konfiguriert, dass das automatische Scannen auf Sicherheitslücken zulässig ist. Weitere Informationen finden Sie unter Automatisches Scannen aktivieren oder deaktivieren.

Mit dem folgenden Befehl wird beispielsweise ein Remote-Repository namens my-repo in der Region us-east1 im Projekt Google Cloud my-project erstellt. Die Authentifizierung beim Upstream-Repository kann mit dem Nutzernamen my-username und der Secret-Version projects/my-project/secrets/my-secret/versions/1 erfolgen.

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-username=my-username \
    --remote-password-secret-version=projects/my-project/secrets/my-secret/versions/1 \
    --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" \
    --disable-vulnerability-scanning \
    --remote-npm-repo=UPSTREAM

Optionale Flags für die Authentifizierung beim Upstream-Repository:

  • --remote-username=USERNAME
  • --remote-password-secret-version=SECRET_VERSION

Ersetzen Sie Folgendes:

  • REMOTE-REPOSITORY-NAME durch den Namen des Repositorys. Repository-Namen können für jeden Repository-Speicherort in einem Projekt nur einmal vorkommen.
  • PROJECT_ID durch die Projekt-ID. Wenn dieses Flag nicht angegeben ist, wird das aktuelle Projekt oder das Standardprojekt verwendet.
  • LOCATION durch den regionalen oder multiregionalen 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 Speicherorte aufzurufen.
  • DESCRIPTION mit einer optionalen Beschreibung des Repositorys. Geben Sie keine vertraulichen Daten an, da Repository-Beschreibungen nicht verschlüsselt werden.
  • REMOTE-REPOSITORY-DESCRIPTION durch eine Beschreibung der Konfiguration des externen Repositorys für dieses Remote-Repository.
  • USERNAME – optional, wenn Sie die Authentifizierung verwenden, mit Ihrem Nutzernamen für die Authentifizierung beim Upstream-Repository.
  • SECRET_VERSION optional, wenn Sie die Authentifizierung verwenden, mit der Secret-Version, die das Passwort für Ihr Upstream-Repository enthält.
  • UPSTREAM durch den voreingestellten Upstream-Namen, den Artifact Registry-Repositorypfad oder die benutzerdefinierte URL des Upstream-Repositorys.

    Für Artifact Registry-Upstream-Repositories formatieren Sie den Repository-Pfad so: projects/UPSTREAM_PROJECT_ID/locations/REGION/repositories/UPSTREAM_REPOSITORY.

    Informationen zu den verfügbaren voreingestellten Upstreams und den unterstützten benutzerdefinierten Upstreams finden Sie unter Unterstützte Formate.

  • --disable-vulnerability-scanning: ist ein optionales Flag, mit dem Sie das automatische Scannen auf Sicherheitslücken für Ihr Repository deaktivieren können.

  • --allow-vulnerability-scanning: ist ein optionales Flag, das Ihr Repository so konfiguriert, dass das automatische Scannen auf Sicherheitslücken zulässig ist. Weitere Informationen finden Sie unter Automatisches Scannen aktivieren oder deaktivieren.

Mit dem folgenden Befehl wird beispielsweise ein Remote-Repository namens my-repo in der Region us-east1 im Projekt Google Cloud my-project erstellt. Die Authentifizierung beim Upstream-Repository kann mit dem Nutzernamen my-username und der Secret-Version projects/my-project/secrets/my-secret/versions/1 erfolgen.

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-username=my-username \
    --remote-password-secret-version=projects/my-project/secrets/my-secret/versions/1 \
    --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" \
    --disable-vulnerability-scanning \
    --remote-python-repo=UPSTREAM

Optionale Flags für die Authentifizierung beim Upstream-Repository:

  • --remote-username=USERNAME
  • --remote-password-secret-version=SECRET_VERSION

Ersetzen Sie Folgendes:

  • REMOTE-REPOSITORY-NAME durch den Namen des Repositorys. Repository-Namen können für jeden Repository-Speicherort in einem Projekt nur einmal vorkommen.
  • PROJECT_ID durch die Projekt-ID. Wenn dieses Flag nicht angegeben ist, wird das aktuelle Projekt oder das Standardprojekt verwendet.
  • LOCATION durch den regionalen oder multiregionalen 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 Speicherorte aufzurufen.
  • DESCRIPTION mit einer optionalen Beschreibung des Repositorys. Geben Sie keine vertraulichen Daten an, da Repository-Beschreibungen nicht verschlüsselt werden.
  • REMOTE-REPOSITORY-DESCRIPTION durch eine Beschreibung der Konfiguration des externen Repositorys für dieses Remote-Repository.
  • USERNAME – optional, wenn Sie die Authentifizierung verwenden, mit Ihrem Nutzernamen für die Authentifizierung beim Upstream-Repository.
  • SECRET_VERSION optional, wenn Sie die Authentifizierung verwenden, mit der Secret-Version, die das Passwort für Ihr Upstream-Repository enthält.
  • UPSTREAM durch den voreingestellten Upstream-Namen, den Artifact Registry-Repositorypfad oder die benutzerdefinierte URL des Upstream-Repositorys.

    Für Artifact Registry-Upstream-Repositories formatieren Sie den Repository-Pfad so: projects/UPSTREAM_PROJECT_ID/locations/REGION/repositories/UPSTREAM_REPOSITORY.

    Informationen zu den verfügbaren voreingestellten Upstreams und den unterstützten benutzerdefinierten Upstreams finden Sie unter Unterstützte Formate.

  • --disable-vulnerability-scanning: ist ein optionales Flag, mit dem Sie das automatische Scannen auf Sicherheitslücken für Ihr Repository deaktivieren können.

  • --allow-vulnerability-scanning: ist ein optionales Flag, das Ihr Repository so konfiguriert, dass das automatische Scannen auf Sicherheitslücken zulässig ist. Weitere Informationen finden Sie unter Automatisches Scannen aktivieren oder deaktivieren.

Mit dem folgenden Befehl wird beispielsweise ein Remote-Repository namens my-repo in der Region us-east1 im Projekt Google Cloud my-project erstellt. Die Authentifizierung beim Upstream-Repository kann mit dem Nutzernamen my-username und der Secret-Version projects/my-project/secrets/my-secret/versions/1 erfolgen.

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-username=my-username \
    --remote-password-secret-version=projects/my-project/secrets/my-secret/versions/1 \
    --remote-python-repo=PYPI

Apt (Vorschau)

gcloud artifacts repositories create REMOTE_REPOSITORY_NAME \
    --project=PROJECT_ID \
    --repository-format=apt \
    --location=LOCATION \
    --description="DESCRIPTION" \
    --mode=remote-repository \
    --remote-repo-config-desc="REMOTE_REPOSITORY_DESCRIPTION" \
    --remote-apt-repo=APT_REPOSITORY_BASE \
    --remote-apt-repo-path="APT_REPOSITORY_PATH"

Ersetzen Sie Folgendes:

  • REMOTE_REPOSITORY_NAME durch den Namen des Repositorys. Repository-Namen können für jeden Repository-Speicherort in einem Projekt nur einmal vorkommen.
  • PROJECT_ID durch die Projekt-ID. Wenn dieses Flag nicht angegeben ist, wird das aktuelle Projekt oder das Standardprojekt verwendet.
  • LOCATION durch den regionalen oder multiregionalen 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 Speicherorte aufzurufen.
  • DESCRIPTION mit einer optionalen Beschreibung des Repositorys. Geben Sie keine vertraulichen Daten an, da Repository-Beschreibungen nicht verschlüsselt werden.
  • REMOTE_REPOSITORY_DESCRIPTION mit einer optionalen Beschreibung für die Konfiguration des externen Repositorys für dieses Remote-Repository.
  • Ersetzen Sie APT_REPOSITORY_BASE durch einen der unterstützten Repository-Basisnamen, die in den unterstützten Upstreams für Betriebssystempakete für Apt-Remote-Repositories aufgeführt sind.
  • APT_REPOSITORY_PATH mit dem Rest der URL des Upstream-Repositorys, das Sie nach der Repository-Basis in Ihrem Remote-Repository zwischenspeichern möchten.

Mit dem folgenden Befehl wird beispielsweise ein Remote-Repository mit dem Namen my-repo erstellt, um das Debian Buster-Repository in der Region us-east1 im Projekt Google Cloud my-project zu cachen. Die vollständige URL des Upstream-Repositorys ist http://deb.debian.org/debian/dists/buster.

gcloud artifacts repositories create my-repo \
    --project=my-project \
    --repository-format=apt \
    --location=us-east1 \
    --description="Apt remote repository" \
    --mode=remote-repository \
    --remote-repo-config-desc="Debian buster distribution" \
    --remote-apt-repo=DEBIAN \
    --remote-apt-repo-path="debian/dists/buster"

Yum (Vorschau)

gcloud artifacts repositories create REMOTE_REPOSITORY_NAME \
    --project=PROJECT_ID \
    --repository-format=yum \
    --location=LOCATION \
    --description="DESCRIPTION" \
    --mode=remote-repository \
    --remote-repo-config-desc="REMOTE_REPOSITORY_DESCRIPTION" \
    --remote-yum-repo=YUM_REPOSITORY_BASE \
    --remote-yum-repo-path="YUM_REPOSITORY_PATH"

Ersetzen Sie Folgendes:

  • REMOTE_REPOSITORY_NAME durch den Namen des Repositorys. Repository-Namen können für jeden Repository-Speicherort in einem Projekt nur einmal vorkommen.
  • PROJECT_ID durch die Projekt-ID. Wenn dieses Flag nicht angegeben ist, wird das aktuelle Projekt oder das Standardprojekt verwendet.
  • LOCATION durch den regionalen oder multiregionalen 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 Speicherorte aufzurufen.
  • DESCRIPTION mit einer optionalen Beschreibung des Repositorys. Geben Sie keine vertraulichen Daten an, da Repository-Beschreibungen nicht verschlüsselt werden.
  • REMOTE_REPOSITORY_DESCRIPTION mit einer optionalen Beschreibung für die Konfiguration des externen Repositorys für dieses Remote-Repository.
  • Ersetzen Sie YUM_REPOSITORY_BASE durch einen der unterstützten Repository-Basisnamen, die in den unterstützten Upstreams für Betriebssystempakete für Yum-Remote-Repositories aufgeführt sind.
  • YUM_REPOSITORY_PATH mit dem Rest der URL des Upstream-Repositorys, das Sie nach der Repository-Basis in Ihrem Remote-Repository zwischenspeichern möchten.

Mit dem folgenden Befehl wird beispielsweise ein Remote-Repository für Yum-Pakete mit dem Namen my-repo in der Region us-east1 im Projekt Google Cloud my-project für das Upstream-Repository 9-stream/BaseOs/x86_64/os erstellt. Die vollständige URL des Repositorys lautet https://mirror.stream.centos.org/9-stream/BaseOS/x86_64/os.

gcloud artifacts repositories create my-repo \
    --project=my-project \
    --repository-format=yum \
    --location=us-east1 \
    --description="Yum remote repository" \
    --mode=remote-repository \
    --remote-repo-config-desc="CentOS 8 x86" \
    --remote-yum-repo=CENTOS_STREAM \
    --remote-yum-repo-path="9-stream/BaseOs/x86_64/os"

Go

Artifact Registry-Go-Remote-Repositories unterstützen nur den öffentlichen Upstream https://proxy.golang.

gcloud artifacts repositories create REMOTE-REPOSITORY-NAME \
    --project=PROJECT_ID \
    --repository-format=go \
    --location=LOCATION \
    --description="DESCRIPTION" \
    --mode=remote-repository \
    --remote-repo-config-desc="REMOTE-REPOSITORY-DESCRIPTION" \
    --remote-go-repo=https://proxy.golang.org

Ersetzen Sie Folgendes:

  • REMOTE-REPOSITORY-NAME ist der Name des Repositorys. Repository-Namen können für jeden Repository-Speicherort in einem Projekt nur einmal vorkommen.
  • 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 Speicherorte aufzurufen.

  • DESCRIPTION ist eine optionale Beschreibung des Repositorys. Geben Sie keine vertraulichen 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 Projekt Google Cloud my-project erstellt.

gcloud artifacts repositories create my-repo \
    --project=my-project \
    --repository-format=go \
    --location=us-east1 \
    --description="Remote Go repository" \
    --mode=remote-repository \
    --remote-repo-config-desc="Go proxy" \
    --remote-go-repo=https://proxy.golang.org

Artifact Registry erstellt das Repository. Führen Sie den folgenden Befehl aus, um eine Beschreibung des Repositorys aufzurufen:

gcloud artifacts repositories describe REMOTE_REPOSITORY_NAME \
    --location=LOCATION

Terraform

Verwenden Sie die Ressource google_artifact_registry_repository, um Repositories zu erstellen. Die Version 5.0.0 oder höher von terraform-provider-google ist erforderlich.

Wenn Sie Terraform für Google Cloudnoch nicht kennen, lesen Sie die Seite Erste Schritte: Google Cloud auf der HashiCorp-Website.

Im folgenden Beispiel werden der Anbieter und ein Remote-Repository mit dem Terraform-Ressourcennamen my-repo definiert.

Docker

provider "google" {
    project = "PROJECT-ID"
}

resource "google_artifact_registry_repository" "my-repo" {
  location      = "LOCATION"
  repository_id = "REPOSITORY_ID"
  description   = "DESCRIPTION"
  format        = "docker"
  kms_key_name = "KEY"
  mode          = "REMOTE_REPOSITORY"
  remote_repository_config {
    description = "CONFIG_DESCRIPTION"
    docker_repository {
      public_repository = "DOCKER_HUB"
    }
  }
  cleanup_policy_dry_run = DRY_RUN_STATUS
  cleanup_policies {
    id     = "POLICY_NAME"
    action = "DELETE"
    condition {
      tag_state    = "TAG_STATE"
      tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"]
      older_than   = "TIME_SINCE_UPLOAD"
    }
  }
  cleanup_policies {
    id     = "POLICY_NAME"
    action = "KEEP"
    condition {
      tag_state             = "TAG_STATE"
      tag_prefixes          = ["TAG_PREFIX", "TAG_PREFIX_N"]
      package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"]
    }
  }
  cleanup_policies {
    id     = "POLICY_NAME"
    action = "KEEP"
    most_recent_versions {
      package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"]
      keep_count            = KEEP_COUNT
    }
  }
}

Wo

  • PROJECT-IDist die Google Cloud Projekt-ID.
  • LOCATION ist der Speicherort des Repositorys.
  • REPOSITORY_ID ist die Repository-ID.
  • DESCRIPTION ist die optionale Beschreibung für das Repository. Geben Sie keine vertraulichen Daten an, da Repository-Beschreibungen nicht verschlüsselt sind.
  • KEY ist der Name des Cloud Key Management Service-Schlüssels, wenn Sie für die Verschlüsselung vom Kunden verwaltete Verschlüsselungsschlüssel (Customer-Managed Encryption Keys, CMEK) verwenden. Lassen Sie dieses Argument aus, um die von Google verwaltete Standardeinstellung zu verwenden.
  • CONFIG_DESCRIPTIONist die optionale Beschreibung der Remotequelle.
  • Mit DRY_RUN_STATUS wird festgelegt, ob Artefakte durch Bereinigungsrichtlinien gelöscht werden oder ob nur protokolliert wird, welche Artefakte gelöscht würden, wenn Bereinigungsrichtlinien für das Repository festgelegt werden. Lassen Sie das Feld weg, wenn Sie dem Repository keine Bereinigungsrichtlinien hinzufügen möchten. * true: Legt die Richtlinien fest, die im Probelaufmodus ausgeführt werden sollen. Im Probelaufmodus werden keine Artefakte gelöscht. * false: wendet die Bereinigungsrichtlinien an. Artefakte werden je nach Richtlinie gelöscht oder beibehalten. Weitere Informationen zu Bereinigungsrichtlinien finden Sie unter Bereinigungsrichtlinien konfigurieren.
    • POLICY_NAME ist der Name der Bereinigungsrichtlinie.
    • TAG_STATE ist der Tag-Status, auf den die Richtlinie angewendet werden soll. Gültige Werte sind tagged, untagged und any. any gilt sowohl für getaggte als auch für nicht getaggte Artefakte. Wenn für ein Repository unveränderliche Tags aktiviert sind, können getaggte Artefakte nicht gelöscht werden.
    • TAG_PREFIX und TAG_PREFIX_N sind Tag-Präfixe, auf die die Richtlinie angewendet werden soll.
    • PKG_PREFIX und PKG_PREFIX_N sind Paketpräfixe, auf die die Richtlinie angewendet werden soll.
    • TIME_SINCE_UPLOAD ist die Zeit seit dem Hochladen einer Artefaktversion in das Repository, angegeben als Dauer. Sie können die Dauer in Sekunden, Minuten, Stunden oder Tagen angeben, indem Sie s, m, h oder d anhängen.
    • KEEP_COUNT ist die Anzahl der Versionen pro Paket eines Artefakts, die in Ihrem Repository beibehalten werden sollen.

Maven

Wenn Sie keine Versionsrichtlinie angeben, erstellt Artifact Registry standardmäßig ein Maven-Repository, in dem sowohl Snapshot- als auch Releaseversionen von Paketen gespeichert werden.

provider "google" {
    project = "PROJECT-ID"
}

resource "google_artifact_registry_repository" "my-repo" {
  location      = "LOCATION"
  repository_id = "REPOSITORY_ID"
  description   = "DESCRIPTION"
  format        = "maven"
  kms_key_name = "KEY"
  mode          = "REMOTE_REPOSITORY"
  remote_repository_config {
    description = "CONFIG_DESCRIPTION"
    maven_repository {
      public_repository = "MAVEN_CENTRAL"
    }
  }
  cleanup_policy_dry_run = DRY_RUN_STATUS
  cleanup_policies {
    id     = "POLICY_NAME"
    action = "DELETE"
    condition {
      tag_state    = "TAG_STATE"
      tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"]
      older_than   = "TIME_SINCE_UPLOAD"
    }
  }
  cleanup_policies {
    id     = "POLICY_NAME"
    action = "KEEP"
    condition {
      tag_state             = "TAG_STATE"
      tag_prefixes          = ["TAG_PREFIX", "TAG_PREFIX_N"]
      package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"]
    }
  }
  cleanup_policies {
    id     = "POLICY_NAME"
    action = "KEEP"
    most_recent_versions {
      package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"]
      keep_count            = KEEP_COUNT
    }
  }
}

Wo

  • PROJECT-IDist die Google Cloud Projekt-ID.
  • LOCATION ist der Speicherort des Repositorys.
  • REPOSITORY_ID ist die Repository-ID.
  • DESCRIPTION ist die optionale Beschreibung für das Repository. Geben Sie keine vertraulichen Daten an, da Repository-Beschreibungen nicht verschlüsselt sind.
  • KEY ist der Name des Cloud Key Management Service-Schlüssels, wenn Sie für die Verschlüsselung vom Kunden verwaltete Verschlüsselungsschlüssel (Customer-Managed Encryption Keys, CMEK) verwenden. Lassen Sie dieses Argument aus, um die von Google verwaltete Standardeinstellung zu verwenden.
  • CONFIG_DESCRIPTIONist die optionale Beschreibung der Remotequelle.
  • Mit DRY_RUN_STATUS wird festgelegt, ob Artefakte durch Bereinigungsrichtlinien gelöscht werden oder ob nur protokolliert wird, welche Artefakte gelöscht würden, wenn Bereinigungsrichtlinien für das Repository festgelegt werden. Lassen Sie das Feld weg, wenn Sie dem Repository keine Bereinigungsrichtlinien hinzufügen möchten. * true: Legt die Richtlinien fest, die im Probelaufmodus ausgeführt werden sollen. Im Probelaufmodus werden keine Artefakte gelöscht. * false: wendet die Bereinigungsrichtlinien an. Artefakte werden je nach Richtlinie gelöscht oder beibehalten. Weitere Informationen zu Bereinigungsrichtlinien finden Sie unter Bereinigungsrichtlinien konfigurieren.
    • POLICY_NAME ist der Name der Bereinigungsrichtlinie.
    • TAG_STATE ist der Tag-Status, auf den die Richtlinie angewendet werden soll. Gültige Werte sind tagged, untagged und any. any gilt sowohl für getaggte als auch für nicht getaggte Artefakte. Wenn für ein Repository unveränderliche Tags aktiviert sind, können getaggte Artefakte nicht gelöscht werden.
    • TAG_PREFIX und TAG_PREFIX_N sind Tag-Präfixe, auf die die Richtlinie angewendet werden soll.
    • PKG_PREFIX und PKG_PREFIX_N sind Paketpräfixe, auf die die Richtlinie angewendet werden soll.
    • TIME_SINCE_UPLOAD ist die Zeit seit dem Hochladen einer Artefaktversion in das Repository, angegeben als Dauer. Sie können die Dauer in Sekunden, Minuten, Stunden oder Tagen angeben, indem Sie s, m, h oder d anhängen.
    • KEEP_COUNT ist die Anzahl der Versionen pro Paket eines Artefakts, die in Ihrem Repository beibehalten werden sollen.

Wenn Sie Snapshot- und Releaseversionen in verschiedenen Repositorys speichern möchten, geben Sie mit einem maven_config-Block eine Versionsrichtlinie für das Repository an. Dieser Block unterstützt die folgenden Einstellungen:

  • Mit version_policy wird die Versionsrichtlinie mit einem der folgenden Werte festgelegt:
    • VERSION_POLICY_UNSPECIFIED: Snapshot- und Release-Pakete speichern. Dies ist die Standardeinstellung.
    • RELEASE: Nur Store-Releasepakete.
    • SNAPSHOT: Nur Snapshot-Pakete speichern.
  • Mit allow_snapshot_overwrites wird ein Repository mit einer SNAPSHOT-Versionsrichtlinie konfiguriert, um nicht eindeutige Snapshots zu akzeptieren, die vorhandene Versionen im Repository überschreiben.

Im folgenden Beispiel wird ein Maven-Repository mit einer Richtlinie für Release-Versionen definiert.

provider "google" {
project = "my-project"
}

resource "google_artifact_registry_repository" "my-repo" {
provider = google-beta

location = "LOCATION"
repository_id = "my-repo"
description = "Maven repository"
format = "MAVEN"
mode = "REMOTE_REPOSITORY"
maven_config {
  version_policy = "RELEASE"
}
}

npm

provider "google" {
    project = "PROJECT-ID"
}

resource "google_artifact_registry_repository" "my-repo" {
  location      = "LOCATION"
  repository_id = "REPOSITORY_ID"
  description   = "DESCRIPTION"
  format        = "npm"
  kms_key_name = "KEY"
  mode          = "REMOTE_REPOSITORY"
  remote_repository_config {
    description = "CONFIG_DESCRIPTION"
    npm_repository {
      public_repository = "NPMJS"
    }
  }
  cleanup_policy_dry_run = DRY_RUN_STATUS
  cleanup_policies {
    id     = "POLICY_NAME"
    action = "DELETE"
    condition {
      tag_state    = "TAG_STATE"
      tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"]
      older_than   = "TIME_SINCE_UPLOAD"
    }
  }
  cleanup_policies {
    id     = "POLICY_NAME"
    action = "KEEP"
    condition {
      tag_state             = "TAG_STATE"
      tag_prefixes          = ["TAG_PREFIX", "TAG_PREFIX_N"]
      package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"]
    }
  }
  cleanup_policies {
    id     = "POLICY_NAME"
    action = "KEEP"
    most_recent_versions {
      package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"]
      keep_count            = KEEP_COUNT
    }
  }
}

Wo

  • PROJECT-IDist die Google Cloud Projekt-ID.
  • LOCATION ist der Speicherort des Repositorys.
  • REPOSITORY_ID ist die Repository-ID.
  • DESCRIPTION ist die optionale Beschreibung für das Repository. Geben Sie keine vertraulichen Daten an, da Repository-Beschreibungen nicht verschlüsselt sind.
  • KEY ist der Name des Cloud Key Management Service-Schlüssels, wenn Sie für die Verschlüsselung vom Kunden verwaltete Verschlüsselungsschlüssel (Customer-Managed Encryption Keys, CMEK) verwenden. Lassen Sie dieses Argument aus, um die von Google verwaltete Standardeinstellung zu verwenden.
  • CONFIG_DESCRIPTIONist die optionale Beschreibung der Remotequelle.
  • Mit DRY_RUN_STATUS wird festgelegt, ob Artefakte durch Bereinigungsrichtlinien gelöscht werden oder ob nur protokolliert wird, welche Artefakte gelöscht würden, wenn Bereinigungsrichtlinien für das Repository festgelegt werden. Lassen Sie das Feld weg, wenn Sie dem Repository keine Bereinigungsrichtlinien hinzufügen möchten. * true: Legt die Richtlinien fest, die im Probelaufmodus ausgeführt werden sollen. Im Probelaufmodus werden keine Artefakte gelöscht. * false: wendet die Bereinigungsrichtlinien an. Artefakte werden je nach Richtlinie gelöscht oder beibehalten. Weitere Informationen zu Bereinigungsrichtlinien finden Sie unter Bereinigungsrichtlinien konfigurieren.
    • POLICY_NAME ist der Name der Bereinigungsrichtlinie.
    • TAG_STATE ist der Tag-Status, auf den die Richtlinie angewendet werden soll. Gültige Werte sind tagged, untagged und any. any gilt sowohl für getaggte als auch für nicht getaggte Artefakte. Wenn für ein Repository unveränderliche Tags aktiviert sind, können getaggte Artefakte nicht gelöscht werden.
    • TAG_PREFIX und TAG_PREFIX_N sind Tag-Präfixe, auf die die Richtlinie angewendet werden soll.
    • PKG_PREFIX und PKG_PREFIX_N sind Paketpräfixe, auf die die Richtlinie angewendet werden soll.
    • TIME_SINCE_UPLOAD ist die Zeit seit dem Hochladen einer Artefaktversion in das Repository, angegeben als Dauer. Sie können die Dauer in Sekunden, Minuten, Stunden oder Tagen angeben, indem Sie s, m, h oder d anhängen.
    • KEEP_COUNT ist die Anzahl der Versionen pro Paket eines Artefakts, die in Ihrem Repository beibehalten werden sollen.

Python

provider "google" {
    project = "PROJECT-ID"
}

resource "google_artifact_registry_repository" "my-repo" {
  location      = "LOCATION"
  repository_id = "REPOSITORY_ID"
  description   = "DESCRIPTION"
  format        = "python"
  kms_key_name = "KEY"
  mode          = "REMOTE_REPOSITORY"
  remote_repository_config {
    description = "CONFIG_DESCRIPTION"
    python_repository {
      public_repository = "PYPI"
    }
  }
  cleanup_policy_dry_run = DRY_RUN_STATUS
  cleanup_policies {
    id     = "POLICY_NAME"
    action = "DELETE"
    condition {
      tag_state    = "TAG_STATE"
      tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"]
      older_than   = "TIME_SINCE_UPLOAD"
    }
  }
  cleanup_policies {
    id     = "POLICY_NAME"
    action = "KEEP"
    condition {
      tag_state             = "TAG_STATE"
      tag_prefixes          = ["TAG_PREFIX", "TAG_PREFIX_N"]
      package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"]
    }
  }
  cleanup_policies {
    id     = "POLICY_NAME"
    action = "KEEP"
    most_recent_versions {
      package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"]
      keep_count            = KEEP_COUNT
    }
  }
}

Wo

  • PROJECT-IDist die Google Cloud Projekt-ID.
  • LOCATION ist der Speicherort des Repositorys.
  • REPOSITORY_ID ist die Repository-ID.
  • DESCRIPTION ist die optionale Beschreibung für das Repository. Geben Sie keine vertraulichen Daten an, da Repository-Beschreibungen nicht verschlüsselt sind.
  • KEY ist der Name des Cloud Key Management Service-Schlüssels, wenn Sie für die Verschlüsselung vom Kunden verwaltete Verschlüsselungsschlüssel (Customer-Managed Encryption Keys, CMEK) verwenden. Lassen Sie dieses Argument aus, um die von Google verwaltete Standardeinstellung zu verwenden.
  • CONFIG_DESCRIPTIONist die optionale Beschreibung der Remotequelle.
  • Mit DRY_RUN_STATUS wird festgelegt, ob Artefakte durch Bereinigungsrichtlinien gelöscht werden oder ob nur protokolliert wird, welche Artefakte gelöscht würden, wenn Bereinigungsrichtlinien für das Repository festgelegt werden. Lassen Sie das Feld weg, wenn Sie dem Repository keine Bereinigungsrichtlinien hinzufügen möchten. * true: Legt die Richtlinien fest, die im Probelaufmodus ausgeführt werden sollen. Im Probelaufmodus werden keine Artefakte gelöscht. * false: wendet die Bereinigungsrichtlinien an. Artefakte werden je nach Richtlinie gelöscht oder beibehalten. Weitere Informationen zu Bereinigungsrichtlinien finden Sie unter Bereinigungsrichtlinien konfigurieren.
    • POLICY_NAME ist der Name der Bereinigungsrichtlinie.
    • TAG_STATE ist der Tag-Status, auf den die Richtlinie angewendet werden soll. Gültige Werte sind tagged, untagged und any. any gilt sowohl für getaggte als auch für nicht getaggte Artefakte. Wenn für ein Repository unveränderliche Tags aktiviert sind, können getaggte Artefakte nicht gelöscht werden.
    • TAG_PREFIX und TAG_PREFIX_N sind Tag-Präfixe, auf die die Richtlinie angewendet werden soll.
    • PKG_PREFIX und PKG_PREFIX_N sind Paketpräfixe, auf die die Richtlinie angewendet werden soll.
    • TIME_SINCE_UPLOAD ist die Zeit seit dem Hochladen einer Artefaktversion in das Repository, angegeben als Dauer. Sie können die Dauer in Sekunden, Minuten, Stunden oder Tagen angeben, indem Sie s, m, h oder d anhängen.
    • KEEP_COUNT ist die Anzahl der Versionen pro Paket eines Artefakts, die in Ihrem Repository beibehalten werden sollen.

Apt (Vorschau)

  provider "google" {
  project = "PROJECT_ID"
}

resource "google_artifact_registry_repository" "my-repo" {
  location      = "LOCATION"
  repository_id = "REPOSITORY_ID"
  description   = "DESCRIPTION"
  format        = "APT"
  mode          = "REMOTE_REPOSITORY"
  remote_repository_config {
    description = "CONFIG_DESCRIPTION"
    apt_repository {
      public_repository {
        repository_base = "REPOSITORY_BASE"
        repository_path = "REPOSITORY_PATH"
      }
    }
  }
}

Wo

  • PROJECT-ID ist die Google Cloud Projekt-ID.
  • LOCATION ist der Speicherort des Repositorys.
  • REPOSITORY_ID ist die Repository-ID.
  • DESCRIPTION ist die optionale Beschreibung für das Repository. Geben Sie keine vertraulichen Daten an, da Repository-Beschreibungen nicht verschlüsselt werden.
  • CONFIG_DESCRIPTION ist die optionale Beschreibung der Remotequelle.
  • REPOSITORY_BASE ist die voreingestellte öffentliche Repository-Basis für Apt. Mögliche Werte sind DEBIAN und UBUNTU.
  • REPOSITORY_PATH ist das spezifische Repository aus der Basis. Beispiel: debian/dists/buster.

Yum (Vorabversion)

  provider "google" {
  project = "PROJECT_ID"
}

resource "google_artifact_registry_repository" "my-repo" {
  location      = "LOCATION"
  repository_id = "REPOSITORY_ID"
  description   = "DESCRIPTION"
  format        = "YUM"
  mode          = "REMOTE_REPOSITORY"
  remote_repository_config {
    description = "CONFIG_DESCRIPTION"
    yum_repository {
      public_repository {
        repository_base = "REPOSITORY_BASE"
        repository_path = "REPOSITORY_PATH"
      }
    }
  }
}

Wo

  • PROJECT-ID ist die Google Cloud Projekt-ID.
  • LOCATION ist der Speicherort des Repositorys.
  • REPOSITORY_ID ist die Repository-ID.
  • DESCRIPTION ist die optionale Beschreibung für das Repository. Geben Sie keine vertraulichen Daten an, da Repository-Beschreibungen nicht verschlüsselt werden.
  • CONFIG_DESCRIPTION ist die optionale Beschreibung der Remotequelle.
  • REPOSITORY_BASE ist die voreingestellte öffentliche Repository-Basis für Yum. Mögliche Werte sind CENTOS, CENTOS_DEBUG, CENTOS_VAULT, CENTOS_STREAM, ROCKY und EPEL.
  • REPOSITORY_PATH ist das spezifische Repository aus der Basis. Beispiel: "centos/8-stream/BaseOS/x86_64/os.

Artifact Registry erstellt das Repository. Führen Sie den folgenden Befehl aus, um eine Beschreibung des Repositorys aufzurufen:

gcloud artifacts repositories describe REPOSITORY \
    --location=LOCATION

Nachdem Sie das Repository erstellt haben:

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 dann 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 Folgendes:

  • REPOSITORY: der Name des Repositorys. Wenn Sie ein Standard-Repository konfiguriert haben, wird bei Weglassen dieses Flags dieses Standard-Repository verwendet.
  • PROJECT: die Google Cloud Projekt-ID. Wenn dieses Flag nicht angegeben ist, wird das aktuelle Projekt oder das Standardprojekt verwendet.
  • LOCATION ist der regionale oder multiregionale Speicherort des Repositorys. Mit diesem Flag können Sie Repositories an einem bestimmten Speicherort aufrufen. Wenn Sie einen Standard-Speicherort konfiguriert haben, wird bei Weglassen dieses Flags dieser Standardwert verwendet.
  • DESCRIPTION: Eine Beschreibung des Repositorys.

Zugriff auf Upstream-Quellen in einem Dienstperimeter

Für Dienste in einem VPC Service Controls-Serviceperimeter ist der Zugriff auf Ressourcen außerhalb des Perimeters eingeschränkt.

Sie können den Zugriff auf Upstream-Quellen in einem bestimmtenGoogle Cloud -Projekt und an einem bestimmten Standort zulassen oder verweigern.

Standardmäßig verweigert Artifact Registry den Zugriff auf Upstream-Quellen, wenn Sie den Zugriff nicht explizit gewährt haben.

Für Artifact Registry ist die Rolle „Artifact Registry-Administrator“ (roles/artifactregistry.admin) erforderlich.

Einstellungen für Upstream-Quellen ansehen

Führen Sie den folgenden Befehl aus, um die Konfiguration für eine bestimmte Kombination aus Projekt und Standort 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 zuzulassen:

gcloud artifacts vpcsc-config allow \
    --project=PROJECT_ID \
    --location=LOCATION

Mit dem folgenden Befehl können beispielsweise alle Remote-Repositories in us-east1 im Projekt my-project auf ihre Upstream-Quellen außerhalb des Perimeters zugreifen:

gcloud artifacts vpcsc-config allow \
    --project=my-project \
    --location=us-east1

Zugriff auf Upstream-Quellen verweigern

Wenn Sie den Zugriff auf Upstream-Quellen verweigern, sind vorhandene zwischengespeicherte 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

Mit dem folgenden Befehl wird beispielsweise der Zugriff auf Upstream-Quellen außerhalb des Perimeters für alle Remote-Repositories in us-west1 im Projekt my-project blockiert:

gcloud artifacts vpcsc-config deny \
    --project=my-project \
    --location=us-west1

Nächste Schritte