Remote-Repositories erstellen

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

Remote-Repositories speichern Artefakte aus voreingestellten externen Quellen wie Docker Hub, Maven Central, dem Python Package Index (PyPI), Debian oder CentOS sowie benutzerdefinierte Quellen für unterstützte Formate. Ein Remote-Repository fungiert als Proxy für die externe Quelle, sodass Sie mehr Kontrolle über Ihre externen Abhängigkeiten haben. Wenn Sie zum ersten Mal eine Version eines Pakets anfordern, wird das Paket von Artifact Registry heruntergeladen und im Remote-Repository 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 standardmäßige Repository-Modus. Sie laden Artefakte wie private Pakete direkt in Standard-Repositories hoch oder veröffentlichen sie. Obwohl Sie Inhalte direkt aus einzelnen Standard-Repositories herunterladen können, vereinfacht der Zugriff auf Gruppen von Repositories mit einem virtuellen Repository die Toolkonfiguration.
  • Virtuell: Ein Repository, das als einzelner Zugangspunkt für mehrere Upstream-Repositories dient, einschließlich Remote- und Standard-Repositories.

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

Hinweise

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

    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
    

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
  • Speichern Sie die Anmeldedaten Ihres Upstream-Repositorys in einer Secret-Version: Secret Manager Admin (roles/secretmanager.admin) für das Projekt
  • Gewähren Sie Zugriff auf Upstream-Quellen außerhalb eines VPC Service Controls-Dienstperimeters: Access Context Manager-Bearbeiter (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.

Möglicherweise können Sie 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:

Artifact Registry erzwingt Einschränkungen für Organisationsrichtlinien, die erfordern, dass CMEK Ressourcen verschlüsselt oder begrenzt, 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 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 Abschnitt Format das Repository-Format aus.

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

  6. Wählen Sie im Abschnitt Remote-Repository-Quelle entweder Voreinstellung für Upstream oder Benutzerdefiniert aus, wenn Sie für den Upstream eine benutzerdefinierte URL verwenden möchten.

  7. Optional. Wenn Sie einen benutzerdefinierten Upstream verwenden, geben Sie im Feld Benutzerdefiniertes Repository die URL des benutzerdefinierten Repositorys ein. Die URL kann nach dem Erstellen des Repositorys nicht mehr geändert werden.

  8. Wählen Sie im Authentifizierungsmodus des Remote-Repositorys eine der folgenden Optionen aus:

    • Authentifiziert: Geben Sie Ihren Nutzernamen und Ihr Secret zur Authentifizierung bei Ihrem Upstream-Repository ein.
    • Nicht authentifiziert: Die Authentifizierung beim Upstream-Repository wird übersprungen.
  9. Optional. 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 nach dem Erstellen des Repositorys bearbeiten. Weitere Informationen zur Authentifizierung bei Remote-Repository-Upstreams finden Sie unter Authentifizierung bei Remote-Repository-Upstreams konfigurieren.

  10. Wählen Sie im Abschnitt Standorttyp den Standort 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 Speicherorten finden Sie unter Repository-Standorte.

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

  12. Wenn Sie Labels zum Organisieren Ihrer Repositories verwenden 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.

  13. 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.
  14. 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-username=USERNAME \
    --remote-password-secret-version=SECRET_VERSION \
    --remote-docker-repo=UPSTREAM

Ersetzen Sie Folgendes:

  • REMOTE-REPOSITORY-NAME durch den Namen des Repositorys. Für jeden Repository-Speicherort in einem Projekt müssen Repository-Namen eindeutig sein.
  • 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 des Repositorys. 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 durch eine optionale Beschreibung des Repositorys. Geben Sie keine sensiblen Daten an, da Repository-Beschreibungen nicht verschlüsselt sind.

  • REMOTE-REPOSITORY-DESCRIPTION durch eine Beschreibung der externen Repository-Konfiguration 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 Ihres Upstream-Repositorys enthält.

  • UPSTREAM durch den Voreinstellungsnamen oder die benutzerdefinierte URL des Upstream-Repositorys. Informationen zu verfügbaren voreingestellten Upstreams und unterstützten benutzerdefinierten Upstreams finden Sie unter Unterstützte Formate.

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

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 Remote-Repository-Authentifizierung bei 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" \
    --remote-username=USERNAME \
    --remote-password-secret-version=SECRET_VERSION \
    --remote-mvn-repo=UPSTREAM

Ersetzen Sie Folgendes:

  • REMOTE-REPOSITORY-NAME durch den Namen des Repositorys. Für jeden Repository-Speicherort in einem Projekt müssen Repository-Namen eindeutig sein.
  • 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 des Repositorys. 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 durch eine optionale Beschreibung des Repositorys. Geben Sie keine sensiblen Daten an, da Repository-Beschreibungen nicht verschlüsselt sind.

  • REMOTE-REPOSITORY-DESCRIPTION durch eine Beschreibung der externen Repository-Konfiguration 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 Ihres Upstream-Repositorys enthält.

  • UPSTREAM durch den Voreinstellungsnamen oder die benutzerdefinierte URL des Upstream-Repositorys. Informationen zu verfügbaren voreingestellten Upstreams und unterstützten benutzerdefinierten Upstreams finden Sie unter Unterstützte Formate.

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

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" \
    --remote-username=USERNAME \
    --remote-password-secret-version=SECRET_VERSION \
    --remote-npm-repo=UPSTREAM

Ersetzen Sie Folgendes:

  • REMOTE-REPOSITORY-NAME durch den Namen des Repositorys. Für jeden Repository-Speicherort in einem Projekt müssen Repository-Namen eindeutig sein.
  • 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 des Repositorys. 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 durch eine optionale Beschreibung des Repositorys. Geben Sie keine sensiblen Daten an, da Repository-Beschreibungen nicht verschlüsselt sind.

  • REMOTE-REPOSITORY-DESCRIPTION durch eine Beschreibung der externen Repository-Konfiguration 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 Ihres Upstream-Repositorys enthält.

  • UPSTREAM durch den Voreinstellungsnamen oder die benutzerdefinierte URL des Upstream-Repositorys. Informationen zu verfügbaren voreingestellten Upstreams und unterstützten benutzerdefinierten Upstreams finden Sie unter Unterstützte Formate.

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

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" \
    --remote-username=USERNAME \
    --remote-password-secret-version=SECRET_VERSION \
    --remote-python-repo=UPSTREAM

Ersetzen Sie Folgendes:

  • REMOTE-REPOSITORY-NAME durch den Namen des Repositorys. Für jeden Repository-Speicherort in einem Projekt müssen Repository-Namen eindeutig sein.
  • 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 des Repositorys. 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 durch eine optionale Beschreibung des Repositorys. Geben Sie keine sensiblen Daten an, da Repository-Beschreibungen nicht verschlüsselt sind.

  • REMOTE-REPOSITORY-DESCRIPTION durch eine Beschreibung der externen Repository-Konfiguration 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 Ihres Upstream-Repositorys enthält.

  • UPSTREAM durch den Voreinstellungsnamen oder die benutzerdefinierte URL des Upstream-Repositorys. Informationen zu verfügbaren voreingestellten Upstreams und unterstützten benutzerdefinierten Upstreams finden Sie unter Unterstützte Formate.

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

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 (Vorabversion)

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. Für jeden Repository-Speicherort in einem Projekt müssen Repository-Namen eindeutig sein.
  • 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 des Repositorys. 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 durch eine optionale Beschreibung des Repositorys. Geben Sie keine sensiblen Daten an, da Repository-Beschreibungen unverschlüsselt sind.
  • REMOTE_REPOSITORY_DESCRIPTION durch eine optionale Beschreibung der externen Repository-Konfiguration für dieses Remote-Repository.
  • APT_REPOSITORY_BASE durch einen der unterstützten Repository-Basisnamen, die in den unterstützten Upstreams des Betriebssystempakets für Apt-Remote-Repositories aufgeführt sind.
  • APT_REPOSITORY_PATH durch den Rest der URL des Upstream-Repositorys, das Sie nach der Repository-Basis in Ihrem Remote-Repository im Cache speichern 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 Google Cloud-Projekt my-project im Cache zu speichern. Die vollständige URL des Upstream-Repositorys lautet 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"

Lecker (Vorabversion)

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. Für jeden Repository-Speicherort in einem Projekt müssen Repository-Namen eindeutig sein.
  • 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 des Repositorys. 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 durch eine optionale Beschreibung des Repositorys. Geben Sie keine sensiblen Daten an, da Repository-Beschreibungen unverschlüsselt sind.
  • REMOTE_REPOSITORY_DESCRIPTION durch eine optionale Beschreibung der externen Repository-Konfiguration für dieses Remote-Repository.
  • YUM_REPOSITORY_BASE durch einen der unterstützten Repository-Basisnamen, die in den unterstützten Upstreams des Betriebssystempakets für Yum-Remote-Repositories aufgeführt sind.
  • YUM_REPOSITORY_PATH durch den Rest der URL des Upstream-Repositorys, das Sie nach der Repository-Basis in Ihrem Remote-Repository im Cache speichern möchten.

Mit dem folgenden Befehl wird beispielsweise ein Remote-Repository für Yum-Pakete namens my-repo in der Region us-east1 im Google Cloud-Projekt my-project für das Upstream-Repository centos/8-stream/BaseOs/x86_64/os erstellt.

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 \
    --remote-yum-repo-path="centos/8-stream/BaseOs/x86_64/os"

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

gcloud artifacts repositories describe REMOTE_REPOSITORY_NAME \
    --location=LOCATION

Nachdem Sie das Repository erstellt haben, gehen Sie so vor:

Remote-Repository mit Terraform erstellen

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

Wenn Sie Terraform für Google Cloud noch nicht verwenden, 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"
    }
  }
}

Dabei gilt:

  • 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 sensiblen 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_DESCRIPTION ist die optionale Beschreibung der Remote-Quelle.

Maven

Wenn Sie keine Versionsrichtlinie angeben, erstellt Artifact Registry ein Maven-Repository, in dem standardmäßig sowohl Snapshot- als auch Release-Versionen 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"
    }
  }
}

Dabei gilt:

  • 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 sensiblen 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_DESCRIPTION ist die optionale Beschreibung der Remote-Quelle.

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

  • version_policy legt die Versionsrichtlinie auf einen der folgenden Werte fest:
    • VERSION_POLICY_UNSPECIFIED: Snapshot- und Release-Pakete speichern Das ist die Standardeinstellung.
    • RELEASE: Nur Release-Pakete speichern.
    • SNAPSHOT: Nur Snapshot-Pakete speichern.
  • allow_snapshot_overwrites konfiguriert ein Repository mit einer Versionsrichtlinie SNAPSHOT, 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"
    }
  }
}

Dabei gilt:

  • 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 sensiblen 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_DESCRIPTION ist die optionale Beschreibung der Remote-Quelle.

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"
    }
  }
}

Dabei gilt:

  • 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 sensiblen 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_DESCRIPTION ist die optionale Beschreibung der Remote-Quelle.

Apt (Vorabversion)

  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"
      }
    }
  }
}

Dabei gilt:

  • 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 sensiblen Daten an, da Repository-Beschreibungen nicht verschlüsselt sind.
  • CONFIG_DESCRIPTION ist die optionale Beschreibung der Remote-Quelle.
  • REPOSITORY_BASE ist die voreingestellte öffentliche Repository-Basis für Apt. Mögliche Werte sind DEBIAN und UBUNTU.
  • REPOSITORY_PATH ist das spezifische Repository 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"
      }
    }
  }
}

Dabei gilt:

  • 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 sensiblen Daten an, da Repository-Beschreibungen nicht verschlüsselt sind.
  • CONFIG_DESCRIPTION ist die optionale Beschreibung der Remote-Quelle.
  • 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 der Basis. Beispiel: "centos/8-stream/BaseOS/x86_64/os.

Artifact Registry erstellt Ihr 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 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 des 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: ein regionaler oder multiregionaler Standort. 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: eine Beschreibung für das Repository.

Zugriff auf Upstream-Quellen in einem Dienstperimeter

Dienste in einem VPC Service Controls-Dienstperimeter haben eingeschränkten Zugriff auf Ressourcen außerhalb des Perimeters.

Sie können den Zugriff auf Upstream-Quellen innerhalb eines bestimmten Google Cloud-Projekts und -Standorts zulassen oder verweigern.

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

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

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 Standort zuzulassen:

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 Upstream-Quellen verweigern

Wenn Sie den Zugriff auf Upstream-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 Standort 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

Nächste Schritte