Este documento fornece uma visão geral dos repositórios remotos. Para instruções sobre como criar um repositório remoto, consulte Crie repositórios remotos.
Artifact Registry Cotas e limites se aplicam a repositórios remotos.
Como os repositórios remotos funcionam
Os repositórios remotos armazenam artefatos de fontes externas predefinidas, como o Docker Hub, Maven Central, o Python Package Index (PyPI), Debian ou CentOS, bem como fontes definidas pelo usuário para formatos compatíveis. Um controle remoto o repositório funciona como um proxy da fonte externa para você ter 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 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 servir 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 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 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.
- Virtual: um repositório que funciona 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 origens predefinidas e definidas pelo usuário para formatos compatíveis. Para mais informações sobre como fazer a autenticação em fontes upstream de repositório remoto, consulte Configurar a autenticação em upstreams de repositório remoto.
Casos de uso e benefícios
- Acesso mais rápido e confiável aos artefatos
- Armazenar 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 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ências mais segura
Use repositórios remotos com repositórios virtuais para reduzir riscos associados às dependências públicas. Algumas ferramentas não fornecem uma maneira de controlar a ordem das pesquisas quando uma combinação de repositórios privados e públicos for configurados 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.
Em vez de configurar clientes diretamente para pesquisar em vários repositórios, você pode configurar repositórios virtuais para priorizar seus repositórios particulares em repositórios remotos.
Se o Artifact Registry estiver em um perímetro de serviço do VPC Service Controls, ele negará o acesso a origens 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 nos índices e metadados de pacotes
Arquivos mutáveis como metadados e índices de pacotes são atualizados da origem upstream quando elas se tornam maiores 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 tags de cache | 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.
Envios upstream predefinidos
É possível criar repositórios remotos para os seguintes formatos de repositório e as fontes upstream predefinidas correspondentes:
Formato | tipos de pacotes | URL upstream | Nome da predefinição upstream |
---|---|---|---|
Docker | Público ou privado | https://registry-1.docker.io |
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úblico | https://pypi.io |
PYPI |
Pacotes do SO (pré-lançamento) | Público | Consulte Pacotes de SO compatíveis com upstream | Consulte Pacotes de SO com suporte para upstreams. |
Envios upstream predefinidos de pacotes de SO
É possível criar um repositório remoto do pacote do SO escolhendo uma base de repositório e personalizando o restante do URL para o repositório específico. O as seguintes bases de repositório têm suporte:
Apto
Repositório | Prefixo do URL | Nome de base do repositório |
---|---|---|
Debian | http://deb.debian.org |
DEBIAN |
Ubuntu LTS ou Pro | http://archive.ubuntu.com
|
UBUNTU
|
Hum
Repositório | Prefixo do URL | Nome de 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 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 a seguir não é exaustiva e lista alguns URIs upstream comuns.
Formato | URI upstream | Nome do registro |
---|---|---|
Docker | https://registry-1.docker.io |
Docker Hub |
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://registry.npmjs.org |
npm |
npm | https://npm.pkg.github.com |
GitHub Npm Registry |
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://repo.maven.apache.org/maven2 |
Maven Central; |
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://pypi.io |
Índice de pacotes Python (PyPI) |
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 do Jfrog Artifactory. instância upstream.
- 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. usadas nos exemplos do Nexus e da 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 lançamento.
- As origens upstream precisam ser acessíveis pela Internet. Os repositórios remotos não têm suporte a fontes upstream de rede local ou de nuvem privada virtual (VPC) sem um endereço IP público.
A seguir
- Crie repositórios remotos.
- Para saber mais sobre os repositórios do Artifact Registry, leia Visão geral do repositório.