Cette page explique comment créer des dépôts virtuels Artifact Registry.
Les dépôts virtuels servent de point d'accès unique pour télécharger, installer ou déployer des artefacts au 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 standard ou distant Artifact Registry.
Les autres modes de dépôt sont les suivants:
- Standard: mode de dépôt par défaut. Vous mettez en ligne 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, l'accès à des groupes de dépôts avec un dépôt virtuel simplifie la configuration de l'outil.
- À distance (dépôts de packages de langage uniquement): cache pull through pour les artefacts dans des dépôts publics tels que Maven Central ou PyPI. Il agit comme un proxy pour les dépôts publics afin que vous ayez plus de contrôle sur vos dépendances externes.
Pour en savoir plus sur le fonctionnement des dépôts virtuels, consultez la section Présentation des dépôts virtuels.
Avant de commencer
Activez Artifact Registry, ce qui inclut l'activation de l'API Artifact Registry et l'installation de la dernière version de Google Cloud CLI.
Rôles requis
Pour obtenir les autorisations nécessaires pour gérer les dépôts, demandez à votre administrateur de vous accorder les rôles IAM suivants:
-
Créer des dépôts virtuels et accorder l'accès à des dépôts individuels : Administrateur Artifact Registry (
roles/artifactregistry.admin
) sur le projet Google Cloud -
Accorder l'accès aux dépôts au niveau du projet :
Administrateur de projet IAM (
roles/resourcemanager.projectIamAdmin
) sur le projet Google Cloud -
Accorder l'accès aux dépôts au niveau du dossier :
Administrateur de dossier (
roles/resourcemanager.folderAdmin
) dans le dossier -
Accorder l'accès aux dépôts au niveau de l'organisation :
Administrateur de l'organisation (
roles/resourcemanager.organizationAdmin
) sur l' Google Cloud organisation
Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.
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 des projets contenant des dépôts en amont doit disposer des autorisations nécessaires pour 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 vous souhaitez mettre à disposition avec le dépôt virtuel.
Créez les dépôts en amont dans la même région Google Cloudque celle où vous prévoyez de créer le dépôt virtuel.
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 à l'agent de service un accès en lecture aux dépôts en amont.
Vous pouvez attribuer le rôle de lecteur Artifact Registry à l'agent de service Artifact Registry au niveau du projet afin de ne pas avoir à accorder l'accès à des dépôts en amont individuels.
Dans chaque projet avec 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
Où
- UPSTREAM_PROJECT_ID correspond à l'ID du projet Google Cloud avec le dépôt en amont.
- VIRTUAL_REPO_PROJECT_NUMBER est le numéro de projet du projet Google Cloud pour votre dépôt virtuel.
Si vous souhaitez attribuer un rôle plus restreint à l'agent de 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 documentation sur le 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, qui ne peuvent pas être modifiés une fois le dépôt créé:
- Format de l'artefact.
- Mode dépôt, si plusieurs modes sont disponibles pour le format sélectionné.
- Emplacement du dépôt.
- Chiffrement avec des appartenant à Google et gérées par Google fournies par Google Cloud ou des clés de chiffrement gérées par le client. Par défaut, Artifact Registry utilise des clés de chiffrementappartenant à Google et gérées par Google .
Artifact Registry applique les contraintes liées aux règles d'administration qui exigent que CMEK chiffre les ressources ou limite les clés Cloud KMS utilisables pour la protection CMEK.
Créer un dépôt virtuel à l'aide de la console Google Cloud
Ouvrez la page Dépôts de la console Google Cloud.
Cliquez sur Créer un dépôt.
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.
Sélectionnez le format du dépôt.
Sous Mode de dépôt, sélectionnez Virtuel.
Sous Éléments en amont du dépôt virtuel, cliquez sur Ajouter un élément 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 virtuel, mais peut se trouver dans un projet Google Cloud différent.
- Un dépôt en amont doit avoir le même format d'artefact que le dépôt virtuel.
Spécifiez une priorité et un nom de règle pour chaque dépôt en amont. Les valeurs de priorité plus élevée prévalent sur les valeurs de priorité inférieure. Laissez un espace entre les valeurs de priorité afin de pouvoir ajouter des dépôts en amont avec des priorités situées entre les valeurs existantes.
Sous Type d'emplacement, sélectionnez l'emplacement du dépôt :
Choisissez le type d'emplacement : régional ou multirégional. La liste des emplacements change pour refléter votre sélection.
Dans la liste Région ou Multirégional, sélectionnez un emplacement.
Pour en savoir plus sur les types d'emplacement et les emplacements compatibles, consultez la section Emplacements des dépôts.
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 ne sont pas chiffrées.
Si vous souhaitez utiliser des libellés pour organiser vos dépôts, cliquez sur Ajouter un libellé et saisissez la paire clé-valeur du libellé. Vous pouvez ajouter, modifier ou supprimer des libellés après avoir créé le dépôt.
Dans la section Chiffrement, choisissez le mécanisme de chiffrement du dépôt.
- Google-managed encryption key : chiffrez le contenu du dépôt avec un Google-owned and Google-managed encryption key.
- 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.
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éé:
- Accordez l'accès au dépôt.
Configurez Docker, les gestionnaires de paquets et d'autres clients tiers pour qu'ils s'authentifient auprès des dépôts.
Créer un dépôt virtuel à l'aide de la gcloud CLI
Pour créer un dépôt virtuel, vous devez définir vos dépôts en amont dans un fichier de règles, puis créer le dépôt à l'aide de ce fichier.
Créez un fichier de stratégie 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 dépôt en amont de la règle doit disposer d'un ID de règle unique.UPSTREAM_REPO_RESOURCE_NAME
est le nom du dépôt 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 virtuel, mais peut se trouver dans un projet Google Cloud différent.
- Un dépôt en amont doit avoir le même format d'artefact que le dépôt virtuel.
PRIORITY
est un entier indiquant la priorité du dépôt en amont. Les valeurs de priorité plus élevée prévalent sur les valeurs de priorité inférieure.
L'exemple suivant présente un fichier de règles nommé
policies.json
avec quatre dépôts en amont.upstream1
a la valeur la plus élevée pourpriority
. Artifact Registry le recherche donc en premier.upstream-test
a la valeurpriority
la plus faible. Artifact Registry l'examinera donc en dernier.upstream2
etupstream3
ont la même priorité. Si Artifact Registry trouve un package demandé dans des dépôts ayant la même priorité, il peut le diffuser à partir de l'un ou de l'autre.[{ "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 écarts permettent d'ajouter des dépôts en amont avec des priorités situées entre les valeurs existantes. Par exemple, vous pouvez ajouter un dépôt
upstream-3
avec une priorité de70
afin qu'Artifact Registry le recherche avantupstream-test
.Envisagez de stocker votre fichier de règles en amont dans votre système de contrôle des sources afin de pouvoir le réutiliser ultérieurement pour modifier les paramètres du dépôt en amont et suivre l'historique des modifications.
Dans le répertoire contenant votre fichier de règles en amont, exécutez la commande suivante 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 du dépôt virtuel.PROJECT_ID
est l'ID du projet dans lequel vous créez le 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 valeurs suivantes sont disponibles :apt
(version bêta privée)docker
maven
npm
python
yum
(version bêta privée)
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 dépôts ne sont pas chiffrées.UPSTREAM_POLICY_FILE
est un chemin d'accès au fichier de stratégie en amont.
Par exemple, la commande suivante crée un dépôt virtuel nommé
virtual-repo
pour les paquets Python dans la régionus-west1
avec des paramètres danspolicies.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
Utilisez la ressource google_artifact_registry_repository pour créer des dépôts.
La version 5.0.0
ou ultérieure de terraform-provider-google
est requise.
Si vous débutez avec Terraform pour Google Cloud, consultez la page Premiers pas avec Google Cloud sur le site Web de HashiCorp.
L'exemple suivant définit le fournisseur, un dépôt virtuel avec le nom de ressource Terraform my-repo
et un dépôt en amont avec le nom de ressource Terraform 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
}
}
}
Où
- PROJECT-ID est l' Google Cloud ID de projet.
- UPSTREAM_LOCATION est l'emplacement du dépôt en amont. Notez que le dépôt virtuel et le dépôt en amont doivent se trouver dans la même région ou être multirégionaux.
- UPSTREAM_REPOSITORY_ID est l'ID du dépôt en amont.
- UPSTREAM_REPOSITORY_DESCRIPTION est la description facultative du dépôt en amont.
- LOCATION correspond à l'emplacement du dépôt virtuel.
- REPOSITORY_ID est l'ID du dépôt virtuel.
- DESCRIPTION est la description facultative du dépôt virtuel. N'incluez pas de données sensibles, car les descriptions de 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. Omettez cet argument pour utiliser le paramètre par défaut,à savoir les clés de chiffrement appartenant à Google et gérées par Google .
- PRIORITY est la valeur de priorité facultative. La priorité la plus élevée est 1. Les entrées ayant une valeur de priorité plus élevée prévalent dans l'ordre de pull.
Maven
Si vous ne spécifiez pas de stratégie de version, Artifact Registry crée un dépôt Maven qui stocke à la fois les versions d'instantané et de version 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
}
}
}
Où
- PROJECT-ID est l' Google Cloud ID de projet.
- UPSTREAM_LOCATION est l'emplacement du dépôt en amont. Notez que le dépôt virtuel et le dépôt en amont doivent se trouver dans la même région ou être multirégionaux.
- UPSTREAM_REPOSITORY_ID est l'ID du dépôt en amont.
- UPSTREAM_REPOSITORY_DESCRIPTION est la description facultative du dépôt en amont.
- LOCATION correspond à l'emplacement du dépôt virtuel.
- REPOSITORY_ID est l'ID du dépôt virtuel.
- DESCRIPTION est la description facultative du dépôt virtuel. N'incluez pas de données sensibles, car les descriptions de 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. Omettez cet argument pour utiliser le paramètre par défaut,à savoir les clés de chiffrement appartenant à Google et gérées par Google .
- PRIORITY est la valeur de priorité facultative. La priorité la plus élevée est 1. Les entrées ayant une valeur de priorité plus élevée prévalent dans l'ordre de pull.
Pour stocker des versions d'instantanés et de versions dans différents dépôts, spécifiez une stratégie de version pour le dépôt à l'aide d'un bloc maven_config
. Ce bloc accepte les paramètres suivants:
version_policy
définit la stratégie de version sur l'une des valeurs suivantes :VERSION_POLICY_UNSPECIFIED
: stocke les instantanés et les packages de publication. Il s'agit du paramètre par défaut.- VERSION: Packages de version du Play Store uniquement.
- SNAPSHOT: stocke uniquement les packages d'instantanés.
allow_snapshot_overwrites
configure un dépôt avec une règle de versionSNAPSHOT
pour accepter les instantanés non uniques qui écrasent les versions existantes du dépôt.
L'exemple suivant définit un dépôt Maven avec une stratégie de version de publication.
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
}
}
}
Où
- PROJECT-ID est l' Google Cloud ID de projet.
- UPSTREAM_LOCATION est l'emplacement du dépôt en amont. Notez que le dépôt virtuel et le dépôt en amont doivent se trouver dans la même région ou être multirégionaux.
- UPSTREAM_REPOSITORY_ID est l'ID du dépôt en amont.
- UPSTREAM_REPOSITORY_DESCRIPTION est la description facultative du dépôt en amont.
- LOCATION correspond à l'emplacement du dépôt virtuel.
- REPOSITORY_ID est l'ID du dépôt virtuel.
- DESCRIPTION est la description facultative du dépôt virtuel. N'incluez pas de données sensibles, car les descriptions de 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. Omettez cet argument pour utiliser le paramètre par défaut,à savoir les clés de chiffrement appartenant à Google et gérées par Google .
- PRIORITY est la valeur de priorité facultative. La priorité la plus élevée est 1. Les entrées ayant une valeur de priorité plus élevée prévalent dans l'ordre de pull.
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
}
}
}
Où
- PROJECT-ID est l' Google Cloud ID de projet.
- UPSTREAM_LOCATION est l'emplacement du dépôt en amont. Notez que le dépôt virtuel et le dépôt en amont doivent se trouver dans la même région ou être multirégionaux.
- UPSTREAM_REPOSITORY_ID est l'ID du dépôt en amont.
- UPSTREAM_REPOSITORY_DESCRIPTION est la description facultative du dépôt en amont.
- LOCATION correspond à l'emplacement du dépôt virtuel.
- REPOSITORY_ID est l'ID du dépôt virtuel.
- DESCRIPTION est la description facultative du dépôt virtuel. N'incluez pas de données sensibles, car les descriptions de 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. Omettez cet argument pour utiliser le paramètre par défaut,à savoir les clés de chiffrement appartenant à Google et gérées par Google .
- PRIORITY est la valeur de priorité facultative. La priorité la plus élevée est 1. Les entrées ayant une valeur de priorité plus élevée prévalent dans l'ordre de pull.
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éé:
- Accordez l'accès au dépôt.
Configurez Docker, les gestionnaires de paquets et d'autres clients tiers pour qu'ils s'authentifient auprès des dépôts.
Mettre à jour les dépôts en amont
Vous pouvez modifier la liste des dépôts en amont ou ajuster leur priorité.
Console
Ouvrez la page Dépôts de la console Google Cloud.
Dans la liste des dépôts, sélectionnez le dépôt virtuel, puis cliquez sur Modifier le dépôt.
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 leur priorité dans la liste.
Cliquez sur Enregistrer.
gcloud
Modifiez votre fichier de règles en amont. Par exemple, vous pouvez 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 règles doit contenir un ensemble de dépôts vide.
[]
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 au fichier de règles en amont.Pour en savoir plus sur cette commande, consultez la documentation de référence sur gcloud artifacts repositories update.
Modifier les descriptions des dépôts
Vous pouvez modifier la description du dépôt à partir de la console Google Cloud ou de gcloud CLI.
Console
Ouvrez la page Dépôts de la console Google Cloud.
Dans la liste des dépôts, sélectionnez le dépôt, puis cliquez sur Modifier le dépôt.
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 omettre cet indicateur pour utiliser le dépôt par défaut.PROJECT
: ID du Google Cloudprojet. Si cette option est ignorée, le projet en cours ou par défaut est utilisé.-
LOCATION
est l'emplacement régional ou multirégional du dépôt. Utilisez cette option pour afficher les dépôts dans un emplacement spécifique. Si vous avez configuré un emplacement par défaut, vous pouvez omettre cette option pour utiliser la valeur par défaut. DESCRIPTION
: description du dépôt.