Este documento fornece 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 limites do Artifact Registry se aplicam aos repositórios remotos.
Como funcionam os repositórios remotos
Os repositórios remotos armazenam artefatos de fontes externas predefinidas, como Docker Hub, Maven Central, Python Package Index (PyPI), Debian ou CentOS, além de origens definidas pelo usuário para formatos compatíveis. Um repositório remoto atua como um proxy da fonte externa para que você tenha mais controle sobre as dependências externas. Na primeira vez que você solicita uma versão de um pacote, o Artifact Registry faz o download e o armazena em cache no repositório remoto. Na próxima vez que você solicitar a mesma versão do pacote, o Artifact Registry disponibilizará a cópia em cache.
Se você solicitar um artefato de uma origem upstream que não existe ou não contém a versão especificada, a solicitação falhará.
Os outros modos de repositório são:
- Padrão: é o modo de repositório padrão. Faça upload ou publique artefatos, como pacotes particulares, diretamente em repositórios padrão. É possível fazer o download diretamente de repositórios padrão individuais, mas 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 ponto de acesso único 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 origens upstream predefinidas e definidas pelo usuário para formatos com suporte. Para mais informações sobre como se autenticar em fontes upstream do repositório remoto, consulte Configurar a autenticação para upstream do repositório remoto.
Casos de uso e benefícios
- Acesso mais rápido e confiável aos artefatos
- O armazenamento de cópias em cache das dependências públicas no Artifact Registry reduz a latência quando outros serviços do Google Cloud recuperam imagens. Os artefatos armazenados em cache também estarão disponíveis se o repositório público externo estiver off-line devido a uma interrupção ou outro problema.
- Resolução de dependência mais segura
Use repositórios remotos com repositórios virtuais para mitigar riscos associados a dependências públicas. Algumas ferramentas não fornecem 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 inválido para um repositório público a fim de induzir os clientes a escolher a versão incorreta.
Em vez de configurar os clientes diretamente para pesquisar vários repositórios, é possível configurar repositórios virtuais para priorizar os repositórios particulares em vez dos remotos.
Se o Artifact Registry estiver em um perímetro de serviço do VPC Service Controls, o Artifact Registry negará acesso a origens upstream fora do perímetro por padrão. Para permitir que repositórios remotos em um local específico acessem as origens externas configuradas fora do perímetro, consulte as instruções da 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 em índices e metadados de pacotes
Os arquivos mutáveis, como índices e metadados de pacotes, são atualizados da origem upstream quando se tornam maiores do 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 | Listar/receber cache de tags | 1 hora |
Apto/Yum (pré-lançamento) | Arquivos de índice | 2 minutos |
Pacote de arquivos | 72 horas |
Formatos compatíveis
Consulte as seções a seguir para conhecer os formatos disponíveis para repositórios remotos predefinidos e definidos pelo usuário.
upstream predefinidos
É possível criar repositórios remotos para os seguintes formatos de repositório e origens upstream predefinidas correspondentes:
Formato | tipos de pacote | URL upstream | Nome da predefinição upstream |
---|---|---|---|
Docker | Público ou privado | https://registry-1.docker.io (em inglês) | DOCKER-HUB |
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ública | https://pypi.io | PYPI |
Pacotes do SO (prévia) | Pública | Confira os pacotes de SO compatíveis com upstream. | Confira os pacotes de SO compatíveis com upstream. |
upstreams predefinidos de pacotes do SO;
É possível criar um repositório remoto de pacotes do SO escolhendo uma base de repositório e personalizando o restante do URL para o repositório específico. As bases de repositório a seguir são compatíveis:
Apto
Repositório | Prefixo do URL | Nome base do repositório |
---|---|---|
Debian | http://deb.debian.org | DÉBIAN |
Ubuntu LTS ou Pro | http://archive.ubuntu.com | UBUNTU |
Humm
Repositório | Prefixo do 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 | BRINCADEIRA |
Pacotes Fedora Extra para Enterprise Linux (EPEL) | https://dl.fedoraproject.org/pub/epel | EPEL |
upstream definidos pelo usuário
É possível criar repositórios remotos para origens upstream definidas pelo usuário nos seguintes formatos:
- Docker
- npm
- Maven
- Python
A tabela abaixo lista alguns URIs upstream comuns.
Formato | URI upstream | Nome do registro |
---|---|---|
Docker | https://public.ecr.aws | Galeria pública do AWS ECR |
Docker | https://registry.k8s.io | Container Registry do Kubernetes |
Docker | https://MY_ARTIFACTORY_INSTANCE.jfrog.io | Jfrog Artifactory |
Docker | https://MY_NEXUS_IP | Nexus |
npm | https://npm.pkg.github.com | Registro de NPM do GitHub |
npm | https://MY_ARTIFACTORY_INSTANCE.jfrog.io/artifactory/api/npm/MY_UPSTREAM_REPOSITORY | Jfrog Artifactory |
npm | https://MY_NEXUS_IP/repository/MY_UPSTREAM_REPOSITORY | Nexus |
Maven | https://MY_ARTIFACTORY_INSTANCE.jfrog.io/artifactory/MY_UPSTREAM_REPOSITORY | Jfrog Artifactory |
Maven | https://MY_NEXUS_IP/repository/MY_UPSTREAM_REPOSITORY | Nexus |
Python | https://MY_ARTIFACTORY_INSTANCE.jfrog.io/artifactory/api/pypi/MY_UPSTREAM_REPOSITORY | Jfrog Artifactory |
Python | https://MY_NEXUS_IP/repository/MY_UPSTREAM_REPOSITORY | Nexus |
Onde
- MY_ARTIFACTORY_INSTANCE é o nome da sua instância upstream do Jfrog Artifactory.
- 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 e do Artifactory.
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 versão.
A seguir
- Crie repositórios remotos.
- Para saber mais sobre os repositórios do Artifact Registry, leia a Visão geral do repositório.