Este documento apresenta uma visão geral dos repositórios virtuais. Para instruções sobre como criar um repositório virtual, consulte Criar repositórios virtuais.
As cotas e limites do Artifact Registry se aplicam a repositórios virtuais.
Como funcionam os repositórios virtuais
Os repositórios virtuais atuam como um único ponto de acesso para fazer o download, a instalação ou a implantação de artefatos no mesmo formato de um ou mais repositórios upstream. Um repositório upstream pode ser um repositório padrão ou remoto do Artifact Registry.
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 privados, diretamente em repositórios padrão. Embora seja possível fazer o download diretamente de repositórios padrão individuais, o acesso a grupos de repositórios com um repositório virtual simplifica a configuração da ferramenta.
- Remoto (somente repositórios de pacotes de linguagem): um cache de pull para artefatos em repositórios públicos, como Maven Central ou PyPI. Ele atua como um proxy para os repositórios públicos, para que você tenha mais controle sobre suas dependências externas.
Casos de uso e benefícios
- Configuração mais simples do cliente
Para tarefas que exigem apenas acesso de leitura aos repositórios, você só precisa configurar um único repositório do Artifact Registry para acessar artefatos armazenados em vários repositórios upstream.
Exemplo:
- Um repositório virtual para pacotes do Maven pode fornecer pacotes Java privados de um repositório padrão do Artifact Registry e pacotes Java públicos de um repositório remoto que armazena em cache pacotes públicos do Maven Central.
- Um repositório virtual pode fornecer pacotes Python particulares de vários repositórios padrão upstream de diferentes equipes. Cada equipe tem acesso de gravação ao repositório upstream, mas faz o download de pacotes de outras equipes usando o repositório virtual.
- Resolução de dependências mais segura
É possível atribuir uma prioridade aos repositórios upstream para ter mais controle sobre qual repositório o Artifact Registry escolhe quando um artefato solicitado está em mais de um repositório upstream.
Algumas ferramentas, como a
pip
do Python, não oferecem uma maneira de controlar a ordem de pesquisa quando uma mistura de repositórios públicos e privados é configurada no cliente. Esse tipo de configuração é vulnerável a um ataque de confusão de dependências, em que alguém faz upload de uma nova versão de um pacote com código inválido para um repositório público para enganar os clientes e fazer com que eles escolham a versão inválida.É possível usar repositórios remotos e virtuais juntos para reduzir esse risco:
- Crie um repositório remoto como proxy para o repositório público.
- Crie um repositório padrão para seus pacotes particulares.
- Crie um repositório virtual configurado para priorizar o repositório padrão se uma versão do mesmo pacote existir nos dois repositórios.
- Configure gerenciadores de pacotes e outras ferramentas para ler apenas do repositório virtual, para que a lógica do cliente não esteja envolvida na seleção do repositório.
Para saber mais sobre outras práticas recomendadas de gerenciamento de dependências, consulte Gerenciamento de dependências.
Como os repositórios virtuais selecionam um repositório upstream
Cada repositório upstream precisa ter uma prioridade configurada. A prioridade é um número inteiro que funciona como um peso, não uma classificação. Isso significa que os repositórios com um valor de prioridade mais alto são priorizados em relação aos repositórios com valores de prioridade mais baixos.
Quando você solicita um artefato que está em vários repositórios upstream, o Artifact Registry usa a seguinte lógica de priorização:
- O repositório com o valor mais alto é priorizado. Por exemplo, um valor de
10
é tratado como de prioridade mais alta do que um valor de1
. - Se vários repositórios upstream tiverem a mesma prioridade, o artefato poderá ser veiculado em qualquer um deles.
Quando você configura diretamente um cliente para pesquisar um repositório virtual e outros repositórios, o cliente ainda pode fazer o download de artefatos de repositórios fora do Artifact Registry.
Por exemplo, se você configurar a ferramenta pip
do Python para pesquisar o PyPI e um repositório
virtual, o pacote poderá ser baixado diretamente do PyPI porque o pip
sempre vai escolher a versão mais recente de um pacote, independentemente de qual
repositório ele vem. Se o pip
estiver configurado para pesquisar apenas o repositório
virtual, será possível controlar a prioridade de todos os repositórios upstream,
incluindo um repositório remoto upstream que atua como um proxy para o PyPI.
Formatos de repositório compatíveis
É possível criar repositórios virtuais para os seguintes formatos de repositório do Artifact Registry:
Pacotes de idioma:
Pacotes do SO:
Se você é iniciante no Artifact Registry, use os guias de início rápido para saber como configurar repositórios padrão para esses formatos.
Limitações
Além das cotas e limitações do Artifact Registry, os repositórios virtuais têm as seguintes limitações:
- Os repositórios upstream padrão do Artifact Registry precisam estar na mesma região ou multirregião que o repositório virtual, mas podem estar em projetos Google Cloud diferentes.
Os repositórios virtuais do Maven não permitem definir a política de versão como instantâneo ou lançamento.
Os upstreams do Apt e do Yum precisam ser repositórios padrão do Artifact Registry.
Os repositórios padrão do Apt e do Yum atualizam o índice de pacotes de forma assíncrona depois que um pacote é importado, enviado ou excluído. Para repositórios pequenos, a regeneração do índice pode levar vários segundos. Para repositórios maiores, a reindexação pode levar vários minutos ou mais. Depois que a reindexação for concluída, a mudança no repositório vai ficar visível para os clientes do Apt e do Yum.
A seguir
- Crie repositórios virtuais.
- Saiba mais sobre os repositórios do Artifact Registry lendo a Visão geral do repositório.