Visão geral dos repositórios remotos

Este documento apresenta uma visão geral dos repositórios remotos. Para instruções sobre como criar um repositório remoto, consulte Criar repositórios remotos.

As cotas e os limites do Artifact Registry se aplicam aos repositórios remotos.

Como os repositórios remotos funcionam

Os repositórios remotos armazenam artefatos das seguintes fontes upstream:

  • Repositórios padrão do Artifact Registry.
  • Fontes externas, como Docker Hub, Maven Central, o índice de pacotes do Python (PyPI), Debian ou CentOS.

Um repositório remoto atua como um proxy para a origem upstream, permitindo que você tenha mais controle sobre suas dependências. Na primeira vez que você solicita uma versão de um pacote, o Artifact Registry faz o download e armazena em cache o pacote no repositório remoto. Na próxima vez que você solicitar a mesma versão do pacote, o Artifact Registry vai disponibilizar a cópia em cache.

Se você solicitar um artefato de uma fonte upstream que não existe ou não contém a versão especificada, a solicitação vai falhar.

Os outros modos de repositório são:

  • Padrão: o modo de repositório padrão. Você faz upload ou publica artefatos, como pacotes particulares, diretamente em repositórios padrão. Embora seja possível fazer o download diretamente de repositórios padrão individuais, acessar grupos de repositórios com um repositório virtual simplifica a configuração da ferramenta.
  • Virtual: um repositório que atua como um único ponto de acesso para vários repositórios upstream, incluindo repositórios remotos e padrão.

Autenticação upstream

Os repositórios remotos do Artifact Registry oferecem suporte à autenticação básica para fontes upstream nos formatos compatíveis. Para mais informações sobre como autenticar fontes upstream de repositórios remotos, consulte Configurar a autenticação para upstream de repositórios remotos.

Casos de uso e benefícios

Acesso mais rápido e confiável a artefatos
Armazenar cópias em cache das suas dependências públicas no Artifact Registry reduz a latência quando outros serviços Google Cloud recuperam imagens. Os artefatos em cache também ficam disponíveis se o repositório público externo estiver off-line devido a uma interrupção ou outro problema.
Resolução de dependências mais segura

Use repositórios remotos com repositórios virtuais para reduzir os riscos associados a dependências públicas. Algumas ferramentas não oferecem uma maneira de controlar a ordem de pesquisa quando uma combinação de repositórios privados e públicos é configurada no cliente. Esse tipo de configuração é vulnerável a um ataque de confusão de dependência, em que alguém faz upload de uma nova versão de um pacote com código ruim para um repositório público e engana os clientes para que escolham a versão ruim.

Em vez de configurar clientes diretamente para pesquisar vários repositórios, você pode configurar repositórios virtuais para priorizar seus repositórios particulares em vez de repositórios remotos.

Reduzir o custo de transferência de dados

Use repositórios remotos para armazenar artefatos em cache na mesma região ou multirregião que seus tempos de execução para reduzir os custos de transferência de dados.

Se o Artifact Registry estiver em um perímetro de serviço do VPC Service Controls, ele vai negar o acesso a fontes upstream fora do perímetro por padrão. Para permitir que repositórios remotos em um local específico acessem as fontes externas configuradas fora do perímetro, consulte as instruções de configuração do VPC Service Controls.

Para saber mais sobre outras práticas recomendadas de gerenciamento de dependências, consulte Gerenciamento de dependências.

Atualizações nos índices e metadados de pacotes

Arquivos mutáveis, como índices de pacotes e metadados, são atualizados da fonte upstream quando ficam mais antigos que a idade padrão. Os padrões para tipos de arquivos específicos estão listados na tabela a seguir:

Formato Tipo de arquivo Idade de atualização padrão
Maven maven-metadata.xml 5 minutos
archetype-catalog.xml 1 hora
Npm arquivos de manifesto 5 minutos
Python Arquivos de índice 1 hora
Docker Listar/receber cache de tags 1 hora
Apt/Yum (pré-lançamento) Arquivos de índice 2 minutos
Arquivos de pacote 72 horas

Formatos compatíveis

Consulte as seções a seguir para ver os formatos disponíveis para repositórios remotos predefinidos e definidos pelo usuário.

URLs upstream predefinidos

Vários URLs de repositório upstream comuns estão disponíveis como seleções predefinidas para conveniência nos seguintes formatos.

Formato tipos de pacote URL upstream Nome predefinido upstream
Docker Público ou privado https://registry-1.docker.io DOCKER-HUB
Go Público https://proxy.golang.org https://proxy.golang.org
Maven Público ou privado https://repo.maven.apache.org/maven2 MAVEN-CENTRAL
npm Público ou privado https://registry.npmjs.org NPMJS
Python Público https://pypi.io PYPI
Pacotes do SO (pré-lançamento) Público Consulte Upstreams compatíveis com pacotes do SO Consulte Upstreams compatíveis com pacotes do SO

Upstreams predefinidos de pacotes do SO

Para criar um repositório remoto de pacotes do SO, escolha um dos URLs base predefinidos comuns de repositório upstream e personalize o restante do URL para o repositório específico. Há suporte para as seguintes bases de repositório:

Apt

Repositório Prefixo de URL Nome base do repositório
Debian arquivado https://snapshot.debian.org DEBIAN_SNAPSHOT
Debian http://deb.debian.org DEBIAN
Ubuntu LTS ou Pro http://archive.ubuntu.com UBUNTU

Yum

Repositório Prefixo de URL Nome da base do repositório
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 do repositório do Artifact Registry

É possível criar repositórios remotos com repositórios de formato padrão do Artifact Registry como upstream para os seguintes formatos:

  • Docker
  • npm
  • Maven
  • Python

URLs personalizados

É possível inserir o URL do seu repositório remoto diretamente, sem usar uma das fontes upstream predefinidas para os seguintes formatos.

  • Docker
  • npm
  • Maven
  • Python

A tabela não exaustiva a seguir lista alguns URIs upstream comuns.

Formato URI upstream Nome do registro
Docker https://ghcr.io GitHub Container Registry
Docker https://registry-1.docker.io Docker Hub
Docker https://public.ecr.aws Galeria pública do AWS ECR
Docker https://registry.k8s.io Registro de contêiner do Kubernetes
Docker https://MY_NEXUS_IP Nexus
npm https://registry.npmjs.org npm
npm https://npm.pkg.github.com Registro do 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 Índice de pacotes do Python (PyPI)
Python https://MY_NEXUS_IP/repository/MY_UPSTREAM_REPOSITORY Nexus

Onde

  • MY_NEXUS_IP é o endereço IP e a porta da instância upstream do Nexus.
  • MY_UPSTREAM_REPOSITORY é o nome do seu repositório upstream, usado nos exemplos do Nexus.

Limitações

Além das cotas e limitações do Artifact Registry, os repositórios remotos têm as seguintes limitações:

  • Os repositórios remotos do Maven não permitem definir a política de versão como "snapshot" ou "release".
  • As fontes upstream precisam ser acessíveis pela Internet. Os repositórios remotos não são compatíveis com fontes upstream de rede local ou de nuvem privada virtual (VPC) sem um endereço IP público.

A seguir