Présentation des dépôts virtuels

Ce document offre un aperçu des dépôts virtuels. Pour savoir comment créer un dépôt virtuel, consultez la section Créer des dépôts virtuels.

Les quotas et limites d'Artifact Registry s'appliquent aux dépôts virtuels.

Fonctionnement des dépôts virtuels

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 standard Artifact Registry ou un dépôt distant.

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 les 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.
  • Remote (dépôts de packages de langage uniquement): extraction du cache pour les artefacts des dépôts publics tels que Maven Central ou PyPI. Il sert de proxy pour les dépôts publics, ce qui vous permet de mieux contrôler vos dépendances externes.

Cas d'utilisation et avantages

Configuration client simplifiée

Pour une tâche qui ne nécessite qu'un accès en lecture aux dépôts, il vous suffit de configurer un seul dépôt Artifact Registry pour accéder aux artefacts stockés dans plusieurs dépôts en amont.

Exemple :

  • Un dépôt virtuel pour les packages Maven peut diffuser des packages Java privés à partir d'un dépôt standard Artifact Registry et des packages Java publics à partir d'un dépôt distant qui met en cache les packages publics de Maven Central.
  • Un dépôt virtuel peut diffuser des packages Python privés à partir de plusieurs dépôts standards en amont appartenant à différentes équipes. Chaque équipe dispose d'un accès en écriture à son dépôt en amont, mais télécharge les packages des autres équipes à l'aide du dépôt virtuel.
Résolution plus sécurisée des dépendances

Vous pouvez attribuer une priorité aux dépôts en amont pour mieux contrôler le dépôt choisi par Artifact Registry lorsqu'un artefact demandé se trouve dans plusieurs dépôts en amont.

Certains outils, tels que l'outil pip de Python, ne permettent pas de contrôler l'ordre de recherche lorsque le client configure à la fois des dépôts privés et publics. Ce type de configuration est vulnérable à une attaque de confiance de dépendance, par laquelle quelqu'un importe une nouvelle version d'un package avec du code incorrect dans un dépôt public pour inciter les clients à choisir la mauvaise version.

Vous pouvez utiliser à la fois des dépôts distants et virtuels pour limiter ce risque:

  1. Créez un dépôt distant en tant que proxy pour le dépôt public.
  2. Créez un dépôt standard pour vos packages privés.
  3. Créez un dépôt virtuel configuré pour donner la priorité à votre dépôt standard si une version du même package existe dans les deux dépôts.
  4. Configurez des gestionnaires de packages et d'autres outils pour qu'ils ne lisent les données qu'à partir du dépôt virtuel, afin que la logique client n'implique pas la sélection du dépôt.

Pour en savoir plus sur les autres bonnes pratiques de gestion des dépendances, consultez la page Gestion des dépendances.

Comment les dépôts virtuels sélectionnent un dépôt en amont

Chaque dépôt en amont doit avoir une priorité configurée. La priorité est un entier qui agit comme une pondération et non comme un classement. Cela signifie que les dépôts avec une valeur de priorité plus élevée sont prioritaires sur les dépôts avec des valeurs de priorité plus faibles.

Lorsque vous demandez un artefact qui se trouve dans plusieurs dépôts en amont, Artifact Registry utilise la logique de priorisation suivante:

  • Le dépôt dont la valeur est la plus élevée est prioritaire. Par exemple, la valeur 10 est considérée comme ayant une priorité plus élevée qu'une valeur 1.
  • Si plusieurs dépôts en amont ont la même priorité, l'artefact peut être diffusé à partir de n'importe lequel de ces dépôts.

Lorsque vous configurez directement un client pour effectuer une recherche dans un dépôt virtuel et des dépôts supplémentaires, le client peut toujours télécharger des artefacts à partir de dépôts extérieurs à Artifact Registry.

Par exemple, si vous configurez l'outil Python pip pour rechercher PyPI et un dépôt virtuel, votre package peut être téléchargé directement à partir de PyPI, car pip choisira toujours la dernière version d'un package, quel que soit le dépôt dont il provient. Si pip est configuré pour n'effectuer des recherches que dans le dépôt virtuel, vous pouvez contrôler la priorité de tous les dépôts en amont, y compris un dépôt distant en amont qui agit comme un proxy de PyPI.

Formats de dépôt compatibles

Vous pouvez créer des dépôts virtuels pour les formats de dépôts Artifact Registry suivants:

Packs de langues:

Packages du système d'exploitation:

Si vous débutez avec Artifact Registry, vous pouvez consulter les guides de démarrage rapide pour apprendre à configurer des dépôts standards pour ces formats.

Limites

Outre les quotas et les limites d'Artifact Registry, les dépôts virtuels sont soumis aux limites suivantes:

  • Les dépôts en amont doivent se trouver dans la même région ou l'emplacement multirégional que le dépôt virtuel, mais ils peuvent se trouver dans différents projets Google Cloud.
  • Les dépôts virtuels Maven n'autorisent pas la définition de la stratégie de version sur l'instantané ou la publication.

Des limites supplémentaires s'appliquent aux dépôts Apt et Yum pendant la phase preview:

  • Vous ne pouvez utiliser des dépôts standards qu'en tant que dépôts en amont.

Les dépôts standards Apt et Yum mettent à jour l'index de package de manière asynchrone après l'importation, l'importation ou la suppression d'un package. Pour les petits dépôts, la regénération de l'index peut prendre plusieurs secondes. Pour les dépôts plus volumineux, la réindexation peut prendre plusieurs minutes. Une fois la réindexation terminée, les clients Apt et Yum peuvent voir les modifications apportées au dépôt.

Étapes suivantes