Les dépôts distants servent de proxys pour les sources en amont, telles que Docker Hub et Maven Central, et offrent un meilleur contrôle sur vos dépendances dansGoogle Cloud. Ce document décrit le fonctionnement des dépôts distants et fournit plusieurs cas d'utilisation.
Pour obtenir des instructions sur la création d'un dépôt distant, consultez Créer des dépôts distants.
Fonctionnement des dépôts distants
Les dépôts distants stockent les artefacts provenant de dépôts Artifact Registry standards et de sources externes. La première fois que vous demandez une version d'un package, Artifact Registry télécharge et met en cache le package dans le dépôt distant. La prochaine fois que vous demanderez la même version du package, Artifact Registry fournira la copie mise en cache.
Si vous demandez un artefact à partir d'une source en amont qui n'existe pas ou qui ne contient pas la version que vous avez spécifiée, la requête échouera.
Authentification en amont
Les dépôts distants Artifact Registry sont compatibles avec l'authentification de base pour les sources en amont pour les formats compatibles. Pour savoir comment vous authentifier auprès des sources en amont de dépôts distants, consultez Configurer l'authentification auprès des sources en amont de dépôts distants.
Cas d'utilisation et avantages
- Accès plus rapide et plus fiable aux artefacts
- Le stockage de copies mises en cache de vos dépendances publiques dans Artifact Registry réduit la latence lorsque d'autres services Google Cloud récupèrent des images. Les artefacts mis en cache restent également disponibles si le dépôt public externe est hors connexion en raison d'une panne ou d'un autre problème.
- Résolution des dépendances plus sûre
Utilisez des dépôts distants avec des dépôts virtuels pour atténuer les risques associés aux dépendances publiques. Certains outils ne permettent pas de contrôler l'ordre de recherche lorsqu'un mélange de dépôts privés et publics est configuré dans le client. Ce type de configuration est vulnérable aux attaques par confusion de dépendances, où une personne importe une nouvelle version d'un package avec du code malveillant dans un dépôt public pour inciter les clients à choisir la mauvaise version.
Au lieu de configurer directement les clients pour qu'ils recherchent dans plusieurs dépôts, vous pouvez configurer des dépôts virtuels pour donner la priorité à vos dépôts privés par rapport aux dépôts distants.
- Réduire les coûts de transfert de données
Utilisez des dépôts distants pour mettre en cache les artefacts dans la même région ou multirégion que vos environnements d'exécution afin de réduire les coûts de transfert de données.
Si Artifact Registry se trouve dans un périmètre de service VPC Service Controls, il refuse par défaut l'accès aux sources en amont situées en dehors du périmètre. Pour autoriser les dépôts distants situés dans un emplacement spécifique à accéder à leurs sources externes configurées en dehors du périmètre, consultez les instructions de configuration de VPC Service Controls.
Pour en savoir plus sur les autres bonnes pratiques de gestion des dépendances, consultez Gestion des dépendances.
Mises à jour des index et des métadonnées des packages
Les fichiers modifiables tels que les index et les métadonnées de packages sont mis à jour à partir de la source en amont lorsqu'ils dépassent l'âge par défaut. Les valeurs par défaut pour les types de fichiers spécifiques sont listées dans le tableau suivant :
| Format | Type de fichier | Âge de mise à jour par défaut |
|---|---|---|
| Maven | maven-metadata.xml |
5 minutes |
archetype-catalog.xml |
1 heure | |
| Npm | Fichiers manifestes | 5 minutes |
| Python | Fichiers d'index | 1 heure |
| Docker | Lister/Obtenir le cache des tags | 1 heure |
| Apt/Yum (preview) | Fichiers d'index | 2 minutes |
| Fichiers de package | 72 heures |
Formats compatibles
Consultez les sections suivantes pour connaître les formats disponibles pour les dépôts distants prédéfinis et définis par l'utilisateur.
URL en amont prédéfinies
Un certain nombre d'URL de dépôt en amont courantes sont disponibles sous forme de sélections prédéfinies pour plus de commodité, dans les formats suivants.
| Format | types de packages | URL en amont | Nom du préréglage en amont |
|---|---|---|---|
| Docker | Public ou privé | https://registry-1.docker.io |
DOCKER-HUB |
| Go | Public | https://proxy.golang.org |
https://proxy.golang.org |
| Maven | Public ou privé | https://repo.maven.apache.org/maven2 |
MAVEN-CENTRAL |
| npm | Public ou privé | https://registry.npmjs.org |
NPMJS |
| Python | Public | https://pypi.io |
PYPI |
| Packages d'OS (version bêta) | Public | Consultez les packages OS compatibles en amont. | Consultez les packages OS compatibles en amont. |
Upstreams prédéfinis des packages OS
Vous pouvez créer un dépôt distant de packages OS en choisissant l'une des URL de base de dépôt en amont prédéfinies courantes et en personnalisant le reste de l'URL pour le dépôt spécifique. Les bases de dépôt suivantes sont acceptées :
Apt
| Dépôt | Préfixe d'URL | Nom de base du dépôt |
|---|---|---|
| Debian archivé | https://snapshot.debian.org |
DEBIAN_SNAPSHOT |
| Debian | http://deb.debian.org |
DEBIAN |
| Ubuntu LTS ou Pro | http://archive.ubuntu.com
|
UBUNTU
|
Yum
| Dépôt | Préfixe d'URL | Nom de base du dépôt |
|---|---|---|
| CentOS | http://mirror.centos.org
|
CENTOS
|
http://debuginfo.centos.org
|
CENTOS_DEBUG
|
|
https://vault.centos.org
|
CENTOS_VAULT
|
|
https://mirror.stream.centos.org
|
CENTOS_STREAM
|
|
| Rocky | http://dl.rockylinux.org
|
ROCKY
|
| Fedora Extra Packages for Enterprise Linux (EPEL) | https://dl.fedoraproject.org/pub/epel
|
EPEL
|
Upstreams de dépôt Artifact Registry
Vous pouvez créer des dépôts distants avec des dépôts au format standard Artifact Registry comme dépôts en amont pour les formats suivants :
- Docker
- npm
- Maven
- Python
URL personnalisées
Vous pouvez saisir directement l'URL de votre dépôt distant, sans utiliser l'une des sources en amont prédéfinies pour les formats suivants.
- Docker
- npm
- Maven
- Python
Le tableau non exhaustif suivant liste certains URI en amont courants.
| Format | URI en amont | Nom du registre |
|---|---|---|
| Docker | https://ghcr.io |
GitHub Container Registry |
| Docker | https://registry-1.docker.io |
Docker Hub |
| Docker | https://public.ecr.aws |
Galerie publique AWS ECR |
| Docker | https://registry.k8s.io |
Registre de conteneurs Kubernetes |
| Docker | https://MY_NEXUS_IP |
Nexus |
| npm | https://registry.npmjs.org |
npm |
| npm | https://npm.pkg.github.com |
Registre GitHub Npm |
| npm | https://MY_NEXUS_IP/repository/MY_UPSTREAM_REPOSITORY |
Nexus |
| Maven | https://repo.maven.apache.org/maven2 |
Maven Central |
| Maven | https://MY_NEXUS_IP/repository/MY_UPSTREAM_REPOSITORY |
Nexus |
| Python | https://pypi.io |
Index de packages Python (PyPI) |
| Python | https://MY_NEXUS_IP/repository/MY_UPSTREAM_REPOSITORY |
Nexus |
Où
- MY_NEXUS_IP correspond à l'adresse IP et au port de votre instance Nexus en amont.
- MY_UPSTREAM_REPOSITORY est le nom de votre dépôt en amont, utilisé dans les exemples Nexus.
Limites
En plus des quotas et limites d'Artifact Registry, les dépôts distants présentent les limites suivantes :
- Les dépôts distants Maven ne permettent pas de définir la stratégie de version sur "snapshot" ou "release".
- Les sources en amont doivent être accessibles sur Internet. Les dépôts distants ne sont pas compatibles avec les sources en amont de réseau sur site ou de cloud privé virtuel (VPC) sans adresse IP publique.
Autres modes de dépôt
Voici les autres modes de dépôt :
- 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 depuis des dépôts standards individuels, l'accès à des groupes de dépôts avec un dépôt virtuel simplifie la configuration des outils.
- Virtuel : dépôt qui sert de point d'accès unique à plusieurs dépôts en amont, y compris les dépôts standards et distants.
Étapes suivantes
- Créer des dépôts distants
- Pour en savoir plus sur les dépôts Artifact Registry, consultez la présentation des dépôts.