Créer des dépôts virtuels

Cette page explique comment créer des applications virtuelles pour Artifact Registry des dépôts.

Les dépôts virtuels servent de point d'accès unique pour télécharger, installer ou déployer des artefacts dans le même format à partir d'un ou de plusieurs dépôts en amont. Un dépôt en amont peut être un dépôt Artifact Registry standard ou distant un dépôt de clés.

Les autres modes de dépôt sont les suivants:

  • Standard: mode de dépôt par défaut. Vous importez ou publiez des artefacts tels que des packages privés directement dans des dépôts standards. Bien que vous puissiez télécharger directement à partir de dépôts standards individuels, accéder à des groupes de dépôts via un dépôt virtuel simplifie configuration de l'outil.
  • Remote (dépôts de packages de langage uniquement): une extraction pour les artefacts dans des dépôts publics tels que Maven Central ou PyPI. Il agit comme un proxy pour les référentiels publics, ce qui vous permet de mieux contrôler sur vos dépendances externes.

Pour en savoir plus sur le fonctionnement des dépôts virtuels, consultez la Présentation du dépôt virtuel

Avant de commencer

Activez Artifact Registry. y compris l'activation de l'API Artifact Registry et en installant la dernière version de la Google Cloud CLI.

Rôles requis

Pour obtenir les autorisations dont vous avez besoin pour gérer les dépôts, demandez à votre administrateur de vous accorder le rôles IAM suivants:

Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.

Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.

Si les dépôts en amont se trouvent dans d'autres projets, un administrateur les projets comportant des dépôts en amont doivent être autorisés à gérer l'accès à ces dépôts.

Créer des dépôts en amont

Avant de configurer un dépôt virtuel, créez les dépôts en amont que que vous souhaitez mettre à disposition avec le dépôt virtuel.

  1. Créer les dépôts en amont dans le même environnement Google Cloud la région dans laquelle vous prévoyez de créer le dépôt virtuel.

  2. Les dépôts virtuels utilisent l'agent de service Artifact Registry pour s'authentifier auprès des dépôts en amont. Vous devez accorder au service un accès en lecture aux dépôts en amont.

    Vous pouvez attribuer le rôle "Lecteur Artifact Registry" Agent de service Artifact Registry au niveau du projet afin de ne pas avoir à accorder l'accès à chaque utilisateur des dépôts.

    Dans chaque projet comportant des dépôts en amont, exécutez la commande suivante:

    gcloud projects add-iam-policy-binding UPSTREAM_PROJECT_ID \
        --member serviceAccount:service-VIRTUAL-REPO-PROJECT_NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com \
        --role roles/artifactregistry.reader
    

    • UPSTREAM_PROJECT_ID est l'ID du projet Google Cloud. avec le dépôt en amont.
    • VIRTUAL_REPO_PROJECT_NUMBER est le numéro du projet Google Cloud pour dans votre dépôt virtuel.

    Si vous souhaitez attribuer un rôle au champ d'application plus restreint au service ajoutez l'autorisation artifactregistry.repositories.readViaVirtualRepository à un rôle personnalisé puis attribuez ce rôle à l'agent de service.

    Pour en savoir plus sur l'octroi d'autorisations, consultez la Contrôle des accès.

Créer un dépôt virtuel

Lorsque vous créez un dépôt, vous devez configurer les paramètres suivants : ne peut pas être modifiée après la création du dépôt:

  • Format de l'artefact.
  • Mode du dépôt, si plusieurs modes sont disponibles pour le format sélectionné.
  • Emplacement du dépôt.
  • Chiffrement à l'aide de clés appartenant ou gérées à Google clés de chiffrement gérées par le client. Artifact Registry utilise Clés détenues et gérées par Google par défaut.

Artifact Registry applique des contraintes liées aux règles d'administration qui nécessitent une clé CMEK pour chiffrer les ressources ou limiter Cloud KMS peuvent être utilisées pour la protection CMEK.

Créer un dépôt virtuel à l'aide de la console Google Cloud

  1. Ouvrez la page Dépôts de la console Google Cloud.

    Ouvrir la page "Dépôts"

  2. Cliquez sur Créer un dépôt.

  3. Spécifiez le nom du dépôt. Pour chaque emplacement de dépôt d'un projet, les noms de dépôt doivent être uniques.

  4. Sélectionnez le format du dépôt.

  5. Sous Mode Dépôt, sélectionnez Virtuel.

  6. Sous Virtual Repository Upstreams (En amont du dépôt virtuel), cliquez sur Add Upstream (Ajouter en amont) pour ajouter un dépôt en amont.

    • Un dépôt en amont peut être un dépôt standard, distant ou virtuel.
    • Un dépôt en amont doit se trouver au même emplacement que le dépôt mais elles peuvent aussi se trouver dans un autre projet Google Cloud.
    • Un dépôt en amont doit avoir le même format d'artefact que le dépôt virtuel un dépôt de clés.

    Spécifiez une priorité et un nom de règle pour chaque flux en amont un dépôt de clés. Les valeurs de priorité supérieure prévalent sur les valeurs inférieures. Laissez un espace entre les valeurs de priorité afin de pouvoir ajouter aux dépôts en amont dont les priorités sont comprises entre les valeurs existantes.

  7. Sous Type d'emplacement, sélectionnez l'emplacement du dépôt :

    1. Choisissez le type d'emplacement : régional ou multirégional. La liste des emplacements change pour refléter votre sélection.

    2. Dans la liste Région ou Multirégional, sélectionnez un emplacement.

    Pour en savoir plus sur les types d'emplacements et les emplacements pris en charge, consultez la page Emplacements des dépôts

  8. Ajoutez une description pour le dépôt. Les descriptions aident à identifier l'objectif du dépôt et le type d'artefacts qu'il contient.

    N'incluez pas de données sensibles, car les descriptions de dépôts non chiffrées.

  9. Si vous souhaitez utiliser des libellés pour organiser vos cliquez sur Ajouter une étiquette, puis saisissez la paire clé-valeur libellé. Vous pouvez ajouter, modifier ou supprimer des libellés après avoir créé le un dépôt de clés.

  10. Dans la section Chiffrement, choisissez le mécanisme de chiffrement du dépôt.

    • Clé gérée par Google : chiffrez le contenu du dépôt à l'aide d'une Clé appartenant à Google et gérée par Google.
    • Clé gérée par le client : chiffre le contenu du dépôt à l'aide d'une clé que vous contrôlez via Cloud Key Management Service. Pour obtenir des instructions sur la configuration de la clé, consultez la page Configurer des CMEK pour les dépôts.
  11. Cliquez sur Créer.

Artifact Registry crée le dépôt et l'ajoute à la liste des dépôts.

Une fois le dépôt créé:

Créer un dépôt virtuel à l'aide de gcloud CLI

Pour créer un dépôt virtuel, vous devez définir vos dépôts en amont dans un puis créer le dépôt à l'aide de ce fichier.

  1. Créez un fichier de règle en amont au format JSON avec les paramètres suivants:

    [{
    "id" : "POLICY_ID",
    "repository" : "UPSTREAM_REPOSITORY_RESOURCE_NAME",
    "priority" : PRIORITY
    }, {...}]
    
    • POLICY_ID est le nom de la règle. Chaque en amont de la stratégie doit avoir un ID de stratégie unique.
    • UPSTREAM_REPO_RESOURCE_NAME est le nom de la campagne en amont. au format suivant:

      projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY
      
      • Un dépôt en amont peut être un dépôt standard, distant ou virtuel.
      • Un dépôt en amont doit se trouver au même emplacement que le dépôt mais elles peuvent aussi se trouver dans un autre projet Google Cloud.
      • Un dépôt en amont doit avoir le même format d'artefact que le dépôt virtuel un dépôt de clés.
    • PRIORITY est un entier qui indique la priorité pour le dépôt en amont. Priorité plus élevée les valeurs sont prioritaires sur les valeurs inférieures.

    L'exemple suivant montre un fichier de stratégie nommé policies.json contenant quatre en amont. upstream1 a la valeur la plus élevée pour priority, Artifact Registry va donc d'abord l'explorer. upstream-test a le la valeur priority la plus faible. Artifact Registry la recherche donc en dernier. upstream2 et upstream3 ont la même priorité. Si Artifact Registry trouve le package demandé dans les dépôts avec le même priorité, il peut diffuser le package à partir de l'un ou l'autre des dépôts.

    [{
    "id" : "upstream1",
    "repository" : "projects/myproject/locations/us-west1/repositories/python-repo1",
    "priority" : 100
    }, {
    "id" : "upstream2",
    "repository" : "projects/myproject/locations/us-west1/repositories/python-repo2",
    "priority" : 80
    }, {
    "id" : "upstream3",
    "repository" : "projects/myproject/locations/us-west1/repositories/python-repo2",
    "priority" : 80
    }, {
    "id" : "upstream-test",
    "repository" : "projects/myproject/locations/us-west1/repositories/python-test-repo",
    "priority" : 20
    }]
    

    Cet exemple laisse également un espace entre les valeurs de priorité. Ces lacunes offrent la flexibilité nécessaire pour ajouter des dépôts en amont dont les priorités sont entre les valeurs existantes. Par exemple, vous pouvez ajouter un upstream-3 avec une priorité de 70, de sorte qu'Artifact Registry recherche avant le upstream-test.

    Envisagez de stocker votre fichier de stratégie en amont dans votre système de contrôle du code source afin pour pouvoir le réutiliser plus tard pour modifier les paramètres du dépôt en amont et suivre l'historique des modifications.

  2. Exécutez la commande suivante dans le répertoire contenant votre fichier de règle en amont : pour créer le dépôt virtuel:

    gcloud artifacts repositories create VIRTUAL-REPOSITORY-NAME \
        --project=PROJECT_ID \
        --repository-format=FORMAT \
        --mode=virtual-repository \
        --location=LOCATION \
        --description="DESCRIPTION" \
        --upstream-policy-file=UPSTREAM_POLICY_FILE
    

    Remplacez les éléments suivants :

    • VIRTUAL-REPOSITORY-NAME est le nom de l'instance un dépôt de clés.
    • PROJECT_ID est l'ID du projet dans lequel vous vous trouvez. à la création du dépôt virtuel. Si cette option est ignorée, le projet en cours ou par défaut est utilisé.
    • FORMAT est le format du dépôt. Les éléments suivants : sont disponibles:
      • apt (aperçu privé)
      • docker
      • maven
      • npm
      • python
      • yum (aperçu privé)
    • LOCATION est l'emplacement régional ou multirégional du dépôt. Vous pouvez ignorer cette option si vous définissez une valeur par défaut. Pour afficher la liste des emplacements acceptés, exécutez la commande suivante :

      gcloud artifacts locations list
      
    • DESCRIPTION est une description facultative du dépôt. N'incluez pas de données sensibles, car les descriptions de référentiel ne sont pas chiffrées.

    • UPSTREAM_POLICY_FILE est un chemin d'accès à la règle en amont .

    Par exemple, la commande suivante crée un dépôt virtuel nommé virtual-repo pour les packages Python de la région us-west1 avec les paramètres dans policies.json

    gcloud artifacts repositories create virtual-repo \
    --repository-format=python \
    --mode=virtual-repository \
    --location=us-west1 \
    --description="Python virtual repository" \
    --upstream-policy-file=policies.json
    

Artifact Registry crée le dépôt virtuel.

Créer un dépôt virtuel à l'aide de Terraform

Utiliser la ressource google_artifact_registry_repository pour créer des dépôts. Version de terraform-provider-google Veuillez indiquer une version ultérieure de 5.0.0.

Si vous débutez avec Terraform pour Google Cloud, consultez le la page Get Started - Google Cloud (Premiers pas - Google Cloud) de la Site Web HashiCorp.

L'exemple suivant définit le fournisseur, un dépôt virtuel avec le rôle le nom de ressource Terraform my-repo et un dépôt en amont avec le fichier nom de ressource my-repo-upstream.

Docker

provider "google" {
    project = "PROJECT-ID"
}
resource "google_artifact_registry_repository" "my-repo-upstream" {
  location      = "UPSTREAM_LOCATION"
  repository_id = "UPSTREAM_REPOSITORY_ID"
  description   = "UPSTREAM_REPOSITORY_DESCRIPTION"
  format        = "docker"
}

resource "google_artifact_registry_repository" "my-repo" {
  depends_on    = []
  location      = "LOCATION"
  repository_id = "REPOSITORY_ID"
  description   = "VIRTUAL_REPOSITORY_DESCRIPTION"
  format        = "docker"
  kms_key_name = "KEY"
  mode          = "VIRTUAL_REPOSITORY"
  virtual_repository_config {
    upstream_policies {
      id          = "UPSTREAM_REPOSITORY_ID"
      repository  = google_artifact_registry_repository.my-repo-upstream.id
      priority    = PRIORITY
    }
  }
}

  • PROJECT-ID est l'ID du projet Google Cloud.
  • UPSTREAM_LOCATION est l'emplacement du dépôt en amont. Notez que le dépôt virtuel et en amont doivent se trouver dans la même région ou un emplacement multirégional.
  • UPSTREAM_REPOSITORY_ID est l'ID du dépôt en amont.
  • UPSTREAM_REPOSITORY_DESCRIPTION correspond à la description facultative. du dépôt en amont.
  • LOCATION est l'emplacement du dépôt virtuel.
  • REPOSITORY_ID est l'ID du dépôt virtuel.
  • DESCRIPTION est la description facultative de l'instance un dépôt de clés. N'incluez pas de données sensibles, car les descriptions des dépôts ne sont pas chiffrées.
  • KEY est le nom de la clé Cloud Key Management Service si vous utilisez des clés de chiffrement gérées par le client (CMEK) pour le chiffrement. Omettre cet argument pour utiliser le paramètre par défaut, à savoir les clés détenues et gérées par Google.
  • PRIORITY est la valeur de priorité facultative. Priorité la plus élevée est égal à 1. Les entrées ayant une valeur de priorité supérieure sont prioritaires lors de l'extraction commande.

Maven

Si vous ne spécifiez pas de stratégie de version, Artifact Registry crée un dépôt Maven qui stocke instantanés et versions des packages par défaut.

provider "google" {
    project = "PROJECT-ID"
}
resource "google_artifact_registry_repository" "my-repo-upstream" {
  location      = "UPSTREAM_LOCATION"
  repository_id = "UPSTREAM_REPOSITORY_ID"
  description   = "UPSTREAM_REPOSITORY_DESCRIPTION"
  format        = "maven"
}

resource "google_artifact_registry_repository" "my-repo" {
  depends_on    = []
  location      = "LOCATION"
  repository_id = "REPOSITORY_ID"
  description   = "VIRTUAL_REPOSITORY_DESCRIPTION"
  format        = "maven"
  kms_key_name = "KEY"
  mode          = "VIRTUAL_REPOSITORY"
  virtual_repository_config {
    upstream_policies {
      id          = "UPSTREAM_REPOSITORY_ID"
      repository  = google_artifact_registry_repository.my-repo-upstream.id
      priority    = PRIORITY
    }
  }
}

  • PROJECT-ID est l'ID du projet Google Cloud.
  • UPSTREAM_LOCATION est l'emplacement du dépôt en amont. Notez que le dépôt virtuel et en amont doivent se trouver dans la même région ou un emplacement multirégional.
  • UPSTREAM_REPOSITORY_ID est l'ID du dépôt en amont.
  • UPSTREAM_REPOSITORY_DESCRIPTION correspond à la description facultative. du dépôt en amont.
  • LOCATION est l'emplacement du dépôt virtuel.
  • REPOSITORY_ID est l'ID du dépôt virtuel.
  • DESCRIPTION est la description facultative de l'instance un dépôt de clés. N'incluez pas de données sensibles, car les descriptions des dépôts ne sont pas chiffrées.
  • KEY est le nom de la clé Cloud Key Management Service si vous utilisez des clés de chiffrement gérées par le client (CMEK) pour le chiffrement. Omettre cet argument pour utiliser le paramètre par défaut, à savoir les clés détenues et gérées par Google.
  • PRIORITY est la valeur de priorité facultative. Priorité la plus élevée est égal à 1. Les entrées ayant une valeur de priorité supérieure sont prioritaires lors de l'extraction commande.

Pour stocker les versions de l'instantané et des versions dans différentes des dépôts, spécifiez une stratégie de version pour à l'aide d'un bloc maven_config. Ce bloc est compatible avec les paramètres suivants:

  • version_policy définit la stratégie de version avec l'une des valeurs suivantes:
    • VERSION_POLICY_UNSPECIFIED: stocker les instantanés et les packages de version Ce est le paramètre par défaut.
    • VERSION: stocker uniquement les packages de version.
    • SNAPSHOT: stocker uniquement les packages d'instantané.
  • allow_snapshot_overwrites configure un dépôt avec un SNAPSHOT. pour accepter les instantanés qui ne sont pas uniques et écrasent les données existantes dans le dépôt.

L'exemple suivant définit un dépôt Maven avec une version .

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

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

location = "us-central1"
repository_id = "my-repo"
description = "Maven repository"
format = "MAVEN"
maven_config {
  version_policy = "RELEASE"
}
}

npm

provider "google" {
    project = "PROJECT-ID"
}
resource "google_artifact_registry_repository" "my-repo-upstream" {
  location      = "UPSTREAM_LOCATION"
  repository_id = "UPSTREAM_REPOSITORY_ID"
  description   = "UPSTREAM_REPOSITORY_DESCRIPTION"
  format        = "npm"
}

resource "google_artifact_registry_repository" "my-repo" {
  depends_on    = []
  location      = "LOCATION"
  repository_id = "REPOSITORY_ID"
  description   = "VIRTUAL_REPOSITORY_DESCRIPTION"
  format        = "npm"
  kms_key_name = "KEY"
  mode          = "VIRTUAL_REPOSITORY"
  virtual_repository_config {
    upstream_policies {
      id          = "UPSTREAM_REPOSITORY_ID"
      repository  = google_artifact_registry_repository.my-repo-upstream.id
      priority    = PRIORITY
    }
  }
}

  • PROJECT-ID est l'ID du projet Google Cloud.
  • UPSTREAM_LOCATION est l'emplacement du dépôt en amont. Notez que le dépôt virtuel et en amont doivent se trouver dans la même région ou un emplacement multirégional.
  • UPSTREAM_REPOSITORY_ID est l'ID du dépôt en amont.
  • UPSTREAM_REPOSITORY_DESCRIPTION correspond à la description facultative. du dépôt en amont.
  • LOCATION est l'emplacement du dépôt virtuel.
  • REPOSITORY_ID est l'ID du dépôt virtuel.
  • DESCRIPTION est la description facultative de l'instance un dépôt de clés. N'incluez pas de données sensibles, car les descriptions des dépôts ne sont pas chiffrées.
  • KEY est le nom de la clé Cloud Key Management Service si vous utilisez des clés de chiffrement gérées par le client (CMEK) pour le chiffrement. Omettre cet argument pour utiliser le paramètre par défaut, à savoir les clés détenues et gérées par Google.
  • PRIORITY est la valeur de priorité facultative. Priorité la plus élevée est égal à 1. Les entrées ayant une valeur de priorité supérieure sont prioritaires lors de l'extraction commande.

Python

provider "google" {
    project = "PROJECT-ID"
}
resource "google_artifact_registry_repository" "my-repo-upstream" {
  location      = "UPSTREAM_LOCATION"
  repository_id = "UPSTREAM_REPOSITORY_ID"
  description   = "UPSTREAM_REPOSITORY_DESCRIPTION"
  format        = "python"
}

resource "google_artifact_registry_repository" "my-repo" {
  depends_on    = []
  location      = "LOCATION"
  repository_id = "REPOSITORY_ID"
  description   = "VIRTUAL_REPOSITORY_DESCRIPTION"
  format        = "python"
  kms_key_name = "KEY"
  mode          = "VIRTUAL_REPOSITORY"
  virtual_repository_config {
    upstream_policies {
      id          = "UPSTREAM_REPOSITORY_ID"
      repository  = google_artifact_registry_repository.my-repo-upstream.id
      priority    = PRIORITY
    }
  }
}

  • PROJECT-ID est l'ID du projet Google Cloud.
  • UPSTREAM_LOCATION est l'emplacement du dépôt en amont. Notez que le dépôt virtuel et en amont doivent se trouver dans la même région ou un emplacement multirégional.
  • UPSTREAM_REPOSITORY_ID est l'ID du dépôt en amont.
  • UPSTREAM_REPOSITORY_DESCRIPTION correspond à la description facultative. du dépôt en amont.
  • LOCATION est l'emplacement du dépôt virtuel.
  • REPOSITORY_ID est l'ID du dépôt virtuel.
  • DESCRIPTION est la description facultative de l'instance un dépôt de clés. N'incluez pas de données sensibles, car les descriptions des dépôts ne sont pas chiffrées.
  • KEY est le nom de la clé Cloud Key Management Service si vous utilisez des clés de chiffrement gérées par le client (CMEK) pour le chiffrement. Omettre cet argument pour utiliser le paramètre par défaut, à savoir les clés détenues et gérées par Google.
  • PRIORITY est la valeur de priorité facultative. Priorité la plus élevée est égal à 1. Les entrées ayant une valeur de priorité supérieure sont prioritaires lors de l'extraction commande.

Artifact Registry crée votre dépôt. Exécutez la commande suivante pour afficher une description du dépôt:

gcloud artifacts repositories describe REPOSITORY \
    --location=LOCATION

Une fois le dépôt créé:

Mettre à jour les dépôts en amont

Vous pouvez modifier la liste des dépôts en amont ou ajuster la priorité en amont.

Console

  1. Ouvrez la page Dépôts de la console Google Cloud.

    Ouvrir la page "Dépôts"

  2. Dans la liste des dépôts, sélectionnez le dépôt virtuel, puis cliquez sur Modifier le dépôt

  3. Dans la liste Virtual Repository Upstream (Dépôt virtuel en amont), apportez les modifications requises. Vous pouvez ajouter et supprimer des dépôts, ou modifier la priorité des dépôts dans la liste

  4. Cliquez sur Enregistrer.

gcloud

  1. Modifiez votre fichier de règles en amont en tenant compte de vos modifications. Par exemple, vous pouvez si vous souhaitez ajouter un dépôt en amont ou ajuster les paramètres de priorité.

    Si vous souhaitez supprimer tous les dépôts en amont, votre fichier de stratégie doit contiennent un ensemble vide de dépôts.

    []
    
  2. Exécutez la commande suivante pour appliquer vos modifications au dépôt virtuel.

    gcloud artifacts repositories update REPOSITORY \
        --upstream-policy-file=UPSTREAM_POLICY_FILE
    

    Remplacez UPSTREAM_POLICY_FILE par le chemin d'accès à l'état en amont. fichier de règles.

    Pour en savoir plus sur cette commande, consultez les Documentation de référence sur gcloud artefacts dépôts update dans la documentation Google Cloud.

Modifier les descriptions du dépôt

Vous pouvez modifier la description du dépôt depuis la console Google Cloud ou gcloud CLI.

Console

  1. Ouvrez la page Dépôts de la console Google Cloud.

    Ouvrir la page "Dépôts"

  2. Dans la liste des dépôts, sélectionnez le dépôt, puis cliquez sur Modifier le dépôt

  3. Modifiez la description du dépôt, puis cliquez sur Enregistrer.

gcloud

Pour mettre à jour la description du dépôt, exécutez la commande suivante:

gcloud artifacts repositories update REPOSITORY \
    --project=PROJECT \
    --location=LOCATION \
    --description="DESCRIPTION"

Remplacez les éléments suivants :

  • REPOSITORY : nom du dépôt Si vous avez configuré un dépôt par défaut, vous pouvez ignorer cette option et utiliser le dépôt par défaut.
  • PROJECT : ID de projet Google Cloud. Si cette option est ignorée, le projet en cours ou par défaut est utilisé.
  • LOCATION: a régional ou multirégional position. Utilisez cette option pour afficher les dépôts dans un emplacement spécifique. Si vous configuré un emplacement par défaut, vous pouvez omettre cet indicateur pour utiliser la valeur par défaut.
  • DESCRIPTION: description du dépôt.