Os repositórios remotos atuam como proxies para fontes upstream, como o Docker Hub e o Maven Central, e oferecem mais controle sobre as dependências em Google Cloud. Este documento descreve como os repositórios remotos funcionam e oferece vários casos de uso.
Para instruções sobre como criar um repositório remoto, consulte Criar repositórios remotos.
Como os repositórios remotos funcionam
Os repositórios remotos armazenam artefatos de repositórios padrão do Artifact Registry e fontes externas. Na primeira vez que você solicita uma versão de um pacote, o Artifact Registry faz o download e armazena o pacote em cache 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 armazenada 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.
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
- O armazenamento de cópias em cache das dependências públicas no Artifact Registry reduz a latência quando outros Google Cloud serviços recuperam imagens. Os artefatos armazenados em cache também ficam disponíveis se o repositório público externo estiver off-line devido a uma interrupção do serviço ou outro problema.
- Resolução de dependências mais segura
Use repositórios remotos com repositórios virtuais para mitigar 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 públicos e particulares é configurada no cliente. Esse tipo de configuração é vulnerável a um ataque de confusão de dependência, em que alguém faz o upload de uma nova versão de um pacote com código ruim para um repositório público para enganar os clientes e fazer com que eles 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 relação aos 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 os ambientes 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 para 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 de índices e metadados de pacotes
Arquivos mutáveis, como índices e metadados de pacotes, são atualizados da fonte upstream quando ficam mais antigos que a idade padrão. Os padrões para tipos de arquivo 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 | Cache de tags de lista/recebimento | 1 hora |
| Apt/Yum (visualização) | Arquivos de índice | 2 minutos |
| Arquivos de pacote | 72 horas |
Formatos compatíveis
Consulte as seções a seguir para conferir os formatos disponíveis para repositórios remotos predefinidos e definidos pelo usuário.
URLs upstream predefinidos
Várias URLs de repositório upstream comuns estão disponíveis como seleções predefinidas para conveniência nos formatos a seguir.
| Formato | Tipos de pacote | URL upstream | Nome predefinido upstream |
|---|---|---|---|
| Docker | Público ou particular | https://registry-1.docker.io |
DOCKER-HUB |
| Go | Público | https://proxy.golang.org |
https://proxy.golang.org |
| Maven | Público ou particular | https://repo.maven.apache.org/maven2 |
MAVEN-CENTRAL |
| npm | Público ou particular | https://registry.npmjs.org |
NPMJS |
| Python | Público | https://pypi.io |
PYPI |
| Pacotes do SO (visualização) | Público | Consulte os upstream com suporte para pacotes do SO | Consulte os upstream com suporte para pacotes do SO |
Upstream predefinidos de pacotes do SO
É possível criar um repositório remoto de pacotes do SO escolhendo uma das URLs de base de repositório upstream predefinidas comuns e personalizando o restante da URL para o repositório específico. As seguintes bases de repositório são aceitas:
Apt
| Repositório | Prefixo da 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 da URL | Nome 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
|
| Pacotes extras do Fedora para o Enterprise Linux (EPEL) | https://dl.fedoraproject.org/pub/epel
|
EPEL
|
Upstream de repositórios 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 a URL do 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 algumas URIs upstream comuns.
| Formato | URI upstream | Nome do registro |
|---|---|---|
| Docker | https://ghcr.io |
Registro de contêiner do GitHub |
| 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 npm do GitHub |
| 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 |
Em que
- MY_NEXUS_IP é o endereço IP e a porta da instância upstream do Nexus.
- MY_UPSTREAM_REPOSITORY é o nome do 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 lançamento.
- As fontes upstream precisam ser acessíveis pela Internet. Os repositórios remotos não oferecem suporte a fontes upstream locais ou de rede de nuvem privada virtual (VPC) sem um endereço IP público.
Outros modos de repositório
Os outros modos de repositório são:
- Padrão: o modo de repositório padrão. Você faz o 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, o acesso a 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 repositórios padrão.
A seguir
- Criar repositórios remotos.
- Saiba mais sobre os repositórios do Artifact Registry lendo a Visão geral do repositório.