Visão geral de repositório

O Artifact Registry permite que você armazene diferentes tipos de artefatos, crie vários repositórios em um único projeto e associe um local regional ou multirregional específico a cada repositório. Esta página descreve considerações para ajudar você a planejar os locais e a organização dos repositórios.

Quando criar os repositórios, pense em processos internos para criar os artefatos e no uso que os consumidores fazem dos artefatos.

Formatos de repositório

Cada repositório é associado a um formato de artefato específico. Por exemplo, um repositório do Docker armazena imagens do Docker. É possível criar vários repositórios para cada formato no mesmo projeto Google Cloud .

Modos de repositório

Há vários modos de repositório. Cada modo tem uma finalidade diferente. Portanto, não é possível mudar o modo de repositório depois de criar um repositório.

Repositório padrão

Os repositórios padrão são repositórios normais do Artifact Registry para artefatos privados. Você faz upload e download de artefatos diretamente com esses repositórios e usa a Análise de artefatos para verificar vulnerabilidades e outros metadados.

Para criar repositórios padrão, siga as etapas em Criar repositórios padrão.

Repositório remoto

Os repositórios remotos são repositórios somente leitura que funcionam como proxies para armazenar artefatos das seguintes origens upstream:

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

Na primeira vez que você solicita uma versão de artefato, o repositório faz o download dela da origem upstream e armazena uma cópia em cache. O repositório remoto serve a cópia em cache quando a mesma versão é solicitada novamente.

Os repositórios remotos reduzem a latência e melhoram a disponibilidade de builds e implantações em Google Cloud. Você também pode usar a análise de artefatos para verificar vulnerabilidades e outros metadados em pacotes em cache.

Para saber mais sobre repositórios remotos, leia Visão geral do repositório remoto. Para criar repositórios remotos, siga as etapas em Criar repositórios remotos.

Repositório virtual

Um repositório somente leitura que funciona como um único ponto de acesso para fazer o download, a instalação ou o provisionamento de artefatos do mesmo formato de um ou mais repositórios upstream. Um repositório upstream pode ser um repositório padrão, remoto ou virtual.

Os repositórios virtuais simplificam a configuração do cliente para consumidores de seus artefatos. Também é possível reduzir ataques de confusão de dependência configurando a política upstream para priorizar repositórios com artefatos particulares em vez de repositórios remotos que armazenam em cache artefatos públicos.

Para saber mais sobre repositórios virtuais, leia Visão geral do repositório virtual. Para criar repositórios virtuais, siga as etapas em Criar repositórios virtuais.

Exemplo de uso do repositório

O diagrama a seguir mostra uma das muitas maneiras possíveis de usar repositórios em diferentes modos. O diagrama mostra um fluxo de trabalho em dois projetosGoogle Cloud . Em um projeto de desenvolvimento, os desenvolvedores criam um aplicativo Java. Em um projeto de execução separado, outro build cria uma imagem de contêiner com o aplicativo para implantação no Google Kubernetes Engine.

Repositórios padrão, virtuais e remotos usados em dois projetos.

  1. No projeto de desenvolvimento, uma equipe de desenvolvimento Java usa o Cloud Build para criar um aplicativo Java.

    • O build pode solicitar dependências públicas do Java usando o repositório virtual. O repositório virtual serve as dependências do repositório remoto, que é um proxy de armazenamento em cache para o Maven Central.
    • O Cloud Build faz upload do pacote para o repositório padrão do Maven no projeto do componente.
  2. No projeto de tempo de execução, o Cloud Build encapsula o aplicativo Java.

    O build usa o repositório virtual do Maven para fazer o download do aplicativo. O repositório virtual serve o pacote do repositório padrão no projeto de desenvolvimento. O build também pode fazer o download de dependências públicas do Java do mesmo repositório virtual.

  3. No projeto de execução, o Cloud Build faz upload da imagem do contêiner criado para um repositório padrão do Docker.

  4. O GKE extrai imagens do repositório virtual do Docker.

    • O repositório padrão upstream do Docker fornece imagens particulares, como o aplicativo Java contêinerizado.
    • O repositório remoto upstream fornece imagens que o GKE solicita do Docker Hub.

Neste exemplo, todos os repositórios, builds e clusters do GKE estão na mesma região. O uso do mesmo local para serviços Google Cloud tem benefícios descritos em Local do repositório.

Localização do repositório

É possível criar um ou mais repositórios em uma região ou multirregião com suporte. Um bom local de repositório equilibra a latência, a disponibilidade e os custos de largura de banda para os consumidores de dados. Sua organização também pode ter requisitos de compliance específicos.

Considerações sobre o local

Esta seção descreve por que você pode querer criar um repositório na mesma região que outros serviços Google Cloud .

É possível reduzir a latência e os custos de saída de rede criando repositórios na mesma região em que você executa o GKE, o Cloud Run, o Cloud Build e outros serviços Google Cloud que interagem com o repositório. Não há cobrança para o tráfego de saída do Artifact Registry para outros serviços Google Cloud na mesma região.

Embora não haja cobrança de saída de uma região multirregional para um serviçoGoogle Cloud em uma região correspondente, esse preço só se aplica a um conjunto limitado de regiões.

  • Para a multirregião us, a saída para uma região nos Estados Unidos, como us-central, não é cobrada, mas para qualquer região no Canadá ou na América do Sul é cobrada.
  • Para a multirregião asia, a saída para regiões da Ásia, como asia-northeast1, não é cobrada, mas a saída para regiões da Austrália é cobrada.
Só é possível usar o streaming de imagem no GKE e no Dataproc Serverless se as imagens do contêiner estiverem armazenadas em repositórios do Artifact Registry na mesma região que as cargas de trabalho ou em uma multirregião que corresponda à região com as cargas de trabalho. O streaming de imagens pode reduzir significativamente o tempo de inicialização da carga de trabalho quando você usa imagens de contêiner maiores, já que as cargas de trabalho podem ser iniciadas antes que a imagem inteira seja transferida por download.

Considere a localização dos consumidores fora de Google Cloud. Por exemplo, se a equipe de desenvolvedores na Austrália precisar fazer o download de artefatos do Artifact Registry para as estações de trabalho locais, um repositório em uma região australiana vai reduzir a latência e gerar cobranças de saída mais baixas do que um repositório localizado em outro continente.

Como restringir locais de repositório

Se você precisar obedecer a regulamentos ou políticas que exigem o armazenamento de dados em regiões específicas, inclua uma restrição de locais de recursos na política da organização Google Cloudque permita a criação de repositórios apenas em regiões em conformidade. O Artifact Registry só vai aplicar a restrição depois que ela for incluída na política da organização. Se você tiver repositórios em locais que não estão em conformidade, mova seus artefatos para um repositório em um local em conformidade e exclua o repositório que não está em conformidade.

Políticas de limpeza

Uma política de limpeza do Artifact Registry define critérios para excluir automaticamente versões de artefatos que não são mais necessárias ou manter os artefatos que você quer armazenar indefinidamente.

As políticas de limpeza são úteis se você armazena muitas versões dos artefatos, mas precisa manter apenas versões específicas lançadas para produção. É possível definir políticas de exclusão com critérios para excluir artefatos e políticas de retenção com critérios para manter artefatos.

Se uma versão de artefato corresponder aos critérios de uma política de exclusão e de retenção, o Artifact Registry vai aplicar a política de retenção.

Excluir políticas

As políticas de exclusão removem artefatos que correspondem aos seguintes critérios:

  • Estado da tag: indica se a política precisa verificar artefatos marcados ou não marcados. Os artefatos são marcados ao enviar ou extrair uma imagem de ou para um repositório. Para saber mais sobre as tags do Docker, consulte Conceitos de contêineres.

    • Qualquer estado de tag: ignora o estado da tag e se aplica a artefatos marcados e não marcados.
    • Marcado: aplica-se apenas a artefatos marcados.
    • Sem tag: se aplica apenas a artefatos sem tag.

    Os formatos que não têm suporte a tags são tratados como untagged. Não é possível excluir artefatos com tags imutáveis ativadas em repositórios.

    Para mais informações sobre o estado da tag conforme se aplica às políticas de limpeza, consulte a referência de TagState.

Confira a seguir as maneiras opcionais de definir sua política de exclusão:

  • Prefixos de tag: é uma lista separada por vírgulas de prefixos de tag. Por exemplo, os prefixos test e staging corresponderiam a imagens com tags testenv e staging-1.5. tagState precisa ser definido como TAGGED para usar prefixos de tag.
    • Prefixos de versão: é uma lista separada por vírgulas de prefixos de versão de artefatos. Por exemplo, v1, v2 corresponderia às versões v1.5, v2.0alpha e v10.2.
  • Prefixos de pacote: é uma lista de prefixos de nome de artefato. É possível inserir vários prefixos pressionando Enter ou , entre eles. Por exemplo, red, blue criaria dois prefixos, red e blue, e seria correspondente aos nomes de artefato red-team, redis e bluebird.
  • Mais antiga que: é o tempo mínimo desde que uma versão do artefato foi enviada para o repositório, especificado como uma duração. Por exemplo, 30d é 30 dias. É possível especificar durações de segundos, minutos, horas ou dias anexando s, m, h ou d, respectivamente.
  • Mais recente que: é o tempo máximo desde que uma versão do artefato foi enviada para o repositório, especificado como uma duração. Por exemplo, 30d é 30 dias.

Políticas do Keep

As políticas de retenção mantêm artefatos que correspondem às mesmas condições das políticas de exclusão ou um número definido de versões mais recentes.

Por exemplo, considere um repositório que contém os seguintes artefatos:

IMAGE: us-west1-docker.pkg.dev/my-project/release-xyz-v1
DIGEST: sha256:1b0a26bd07a3d17473d8d8468bea84015e27f87124b2831234581bce13f61370
TAGS:
CREATE_TIME: 2023-06-19T18:59:09
UPDATE_TIME: 2023-06-19T18:59:10

IMAGE: us-west1-docker.pkg.dev/my-project/release-xyz-v2
DIGEST: sha256:6e494387c901caf429c1bf77bd92fb82b33a68c0e19f123456a3ac8d27a7049d
TAGS: latest
CREATE_TIME: 2023-06-19T18:59:09
UPDATE_TIME: 2023-06-19T18:59:09

IMAGE: us-west1-docker.pkg.dev/my-project/release-v2
DIGEST: sha256:6e494387c901caf429c1bf77bd92fb82b33a68c0e19f123456a3ac8d27a7049d
TAGS: latest
CREATE_TIME: 2023-06-19T18:59:09
UPDATE_TIME: 2023-06-19T18:59:09

Se a política Manter as versões mais recentes estiver definida para manter três versões de pacotes que correspondem aos Prefixos de pacote: {release-xyz}, apenas release-xyz-v1 e release-xyz-v2 são mantidos.

As exclusões acionadas por políticas de exclusão são contabilizadas na sua cota de solicitações de exclusão do Artifact Registry por projeto.

Para criar e aplicar políticas de limpeza ao repositório, consulte Configurar políticas de limpeza.

Suporte a domínios gcr.io

O Artifact Registry oferece suporte para hospedagem de imagens no domínio gcr.io. Se você estiver fazendo a transição do Container Registry para o Artifact Registry, configure os repositórios gcr.io do Artifact Registry para minimizar as mudanças nas automações e nos fluxos de trabalho atuais. Esses repositórios oferecem:

  • Redirecionamento de solicitações para o domínio gcr.io.
  • Criação de repositórios gcr.io quando a primeira imagem é enviada para um nome de host gcr.io para compatibilidade com o comportamento do Container Registry.

Para mais informações, consulte Transição para repositórios com suporte ao domínio gcr.io.

Estrutura do projeto

A hierarquia de recursos é a maneira como você organiza seus recursos em Google Cloud projetos. A estrutura escolhida depende de fatores como requisitos de governança de dados, limites de confiança e estrutura da equipe.

Há duas abordagens gerais para configurar seus repositórios em organizações com vários projetos.

Centralizar repositórios
Crie todos os repositórios em um único projeto e conceda acesso a principais de outros projetos no nível do repositório. Essa abordagem pode ser mais eficaz quando uma única pessoa ou equipe lida com a administração e o acesso ao repositório em toda a organização.
Ele também simplifica a configuração de repositórios virtuais, já que você só precisa ativar e gerenciar uma única instância do Artifact Registry.
Repositórios específicos do projeto
Crie repositórios em projetos que armazenam e fazem o download de artefatos. Essa abordagem pode ser necessária quando você tem políticas de governança de dados ou limites de confiança que exigem mais separação e controle de recursos no nível do projeto.

Controle de acesso

Os repositórios só podem ser acessados com as permissões adequadas, a menos que você configure o repositório para acesso público. É possível conceder permissões no nível do projeto ou do repositório.

Alguns Google Cloud serviços usam contas de serviço padrão com permissões padrão para repositórios no mesmo Google Cloud projeto. No entanto, esses padrões podem não ser adequados para o processo de desenvolvimento de software ou não obedecer aos requisitos de segurança ou política da sua organização. O administrador do repositório precisa conceder acesso a esses serviços de forma explícita se:

  • O Artifact Registry está em um projeto diferente do serviço que interage com ele.
  • Você está usando papéis personalizados do IAM com as contas de serviço padrão em vez do papel predefinido.
  • Você não está usando a conta de serviço padrão para o serviço Google Cloud.
  • Você está configurando repositórios virtuais. É necessário conceder explicitamente à conta de serviço do Artifact Registry acesso aos repositórios upstream.

Para outros participantes que precisam de acesso a repositórios, o administrador do repositório precisa conceder acesso. De acordo com o princípio de segurança do menor privilégio, conceda as permissões mínimas necessárias. Exemplo:

  • Você implanta imagens de contêiner no Artifact Registry em clusters do GKE em vários projetos diferentes. A conta de serviço para nós nesses clusters só exige acesso de leitura aos repositórios.
  • Você tem um repositório de desenvolvimento para aplicativos em desenvolvimento e um repositório de produção para aplicativos lançados. Os desenvolvedores precisam ter acesso de leitura e gravação ao repositório de desenvolvimento e acesso somente leitura ao repositório de produção.
  • Você tem um repositório de demonstração com aplicativos de exemplo. Sua equipe de vendas só precisa de acesso de leitura para fazer o download das demonstrações.

Restringir downloads de artefatos

É possível restringir os downloads de artefatos com regras de download. Com as regras de download, você pode permitir ou negar downloads de artefatos dos seus repositórios e pacotes. Também é possível definir condições para que a regra seja aplicada a tags ou versões específicas.

Para saber como as regras de download funcionam, consulte a seção Restringir downloads de artefatos da visão geral "Controlar o acesso e proteger artefatos".

Criptografia de dados

Por padrão, Google Cloud criptografa automaticamente os dados em repouso usando do Google Cloud, gerenciadas e de propriedade do Google . Se você tiver requisitos regulatórios ou de compliance específicos relacionados às chaves que protegem seus dados, crie repositórios criptografados com chaves de criptografia gerenciadas pelo cliente (CMEKs).

O Artifact Registry também oferece suporte a restrições de política da organização que podem exigir a CMEK para proteger recursos.

Rótulos e tags

Os rótulos são uma forma de organizar recursos específicos para um Google Cloud serviço. No Artifact Registry, é possível adicionar rótulos aos repositórios para agrupá-los ou filtrar listas de repositórios por rótulo. Por exemplo, é possível usar rótulos para agrupar repositórios por fase de desenvolvimento ou equipe para automatização ou cobrança. Para mais informações sobre como criar e usar rótulos de repositório, consulte Como rotular repositórios.

Também é possível aplicar tags aos repositórios. Os rótulos são usados principalmente para organizar e filtrar recursos específicos do serviço, enquanto as tags são usadas para o controle programático de políticas em uma Google Cloud organização. Para mais informações, consulte Como marcar repositórios.

A seguir