Criar repositórios remotos

Esta página descreve como criar repositórios remotos do Artifact Registry.

Os repositórios remotos armazenam 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.

Um repositório remoto funciona como um proxy para a origem upstream para que você tenha mais controle sobre suas dependências. 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.

Para mais detalhes sobre como os repositórios remotos funcionam, consulte a Visão geral do repositório remoto.

Antes de começar

  1. Ative o Artifact Registry, incluindo a ativação da API Artifact Registry e a instalação do Google Cloud CLI.
  2. Opcional: configure padrões para os comandos da CLI gcloud.
  3. Se você precisar de chaves de criptografia gerenciadas pelo cliente (CMEK) para criptografar o conteúdo do repositório, crie e ative uma chave no Cloud KMS para o repositório.
  4. Se você quiser fazer a autenticação em um repositório upstream, ative a API Secret Manager.

    gcloud services enable secretmanager.googleapis.com \
        --project=PROJECT_ID
    
  5. Se o Artifact Registry estiver em um perímetro de serviço do VPC Service Controls, ative a API Access Context Manager, caso ainda não esteja ativada.

    gcloud services enable accesscontextmanager.googleapis.com \
        --project=PROJECT_ID
    
  6. Se você quiser definir um repositório do Artifact Registry como upstream e ele estiver em um projeto diferente do repositório remoto, será necessário conceder à conta de serviço do projeto do repositório remoto acesso ao projeto do repositório upstream antes de criar o repositório remoto.

    Conceder o papel de agente de serviço

    Os repositórios remotos usam o Agente de serviço do Artifact Registry para fazer a autenticação nos repositórios upstream do Artifact Registry. É necessário conceder ao agente de serviço de repositório remoto acesso de leitura ao repositório upstream.

    Para conceder ao agente de serviço do repositório remoto o papel de agente de serviço do Artifact Registry no repositório upstream, execute o seguinte comando:

    
      gcloud projects add-iam-policy-binding UPSTREAM_REPOSITORY \
          --member serviceAccount:service-REMOTE_PROJECT_NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com \
          --location=REGION \
          --project=UPSTREAM_PROJECT_ID \
          --role roles/artifactregistry.serviceAgent
      

    Substitua:

    • UPSTREAM_REPOSITORY é o ID do repositório upstream. Os repositórios upstream do Artifact Registry precisam ser do modo padrão.
    • REMOTE_PROJECT_NUMBER é o número do projeto do Google Cloud para seu repositório remoto.
    • REMOTE_PROJECT_ID é o ID do projeto do Google Cloudpara seu repositório remoto.
    • REGION é a região em que você quer criar o repositório remoto.
    • UPSTREAM_PROJECT_ID é o ID do projeto do Google Cloudcom o repositório upstream.

Funções exigidas

Para conseguir as permissões necessárias para gerenciar repositórios, peça ao administrador para conceder a você os seguintes papéis do IAM:

  • Crie repositórios remotos e conceda acesso a repositórios individuais: Administrador do Artifact Registry (roles/artifactregistry.admin) no projeto
  • Salve as credenciais do repositório upstream em uma versão do secret: Administrador do Secret Manager (roles/secretmanager.admin) no projeto
  • Conceda acesso a fontes upstream fora de um perímetro de serviço do VPC Service Controls: Editor do Access Context Manager (roles/accesscontextmanager.policyEditor) no projeto, na pasta ou na organização em que a política de acesso é aplicada

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.

Criar um repositório remoto

Ao criar um repositório remoto, é necessário configurar as seguintes configurações, que não podem ser alteradas depois que o repositório é criado:

  • Formato do artefato.
  • O modo do repositório está definido como remoto.
  • Origem upstream do repositório remoto.
  • Local do repositório.
  • Criptografia com de propriedade e gerenciadas pelo Google ou chaves de criptografia gerenciadas pelo cliente com tecnologia do Google Cloud. O Artifact Registry usa de propriedade e gerenciadas pelo Google do Google Cloud por padrão.

O Artifact Registry aplica restrições de política da organização que exigem que a CMEK criptografe recursos ou limite quais chaves do Cloud KMS podem ser usadas para proteção CMEK.

Criar um repositório remoto usando o console do Google Cloud

  1. Abra a página Repositórios no console Google Cloud .

    Abrir a página Repositórios

  2. Clique em Criar repositório.

  3. Especifique o nome do repositório. Para cada local de repositório em um projeto, os nomes dos repositórios precisam ser exclusivos.

  4. Na seção Formato, selecione o formato do repositório.

  5. Na seção Modo de repositório, selecione Remoto.

  6. Na seção Origem do repositório remoto, selecione uma das seguintes maneiras de inserir o URL do repositório upstream:

    • Selecione a fonte predefinida upstream listada para seu tipo de formato.
    • Selecione Personalizado para especificar o URL completo de um repositório público ou privado para formatos compatíveis.
    • Selecione Repositório do Artifact Registry para selecionar um repositório padrão do Artifact Registry.
  7. Se você selecionou Personalizado, insira o URL completo do repositório no campo Repositório personalizado. O URL não pode ser alterado depois que o repositório é criado.

    Para conferir exemplos de alguns URLs upstream comuns, consulte Upstreams personalizados.

  8. Se você selecionou Repositório do Artifact Registry:

    1. No campo Repositório do Artifact Registry, insira o nome completo do repositório que você quer usar como upstream ou clique em Procurar para ver uma lista de repositórios a que você tem acesso. Somente repositórios do mesmo formato do repositório remoto são listados.
    2. Clique no nome do repositório que você quer usar como upstream.
    3. Clique em Selecionar.
  9. Se você selecionou uma das origens predefinidas ou inseriu um URL completo usando o botão Personalizado, escolha uma das opções a seguir no Modo de autenticação de repositório remoto:

    • Autenticado: insira seu nome de usuário e segredo para autenticação no repositório upstream.
    • Não autenticado: para pular a autenticação no repositório upstream.
  10. Se você selecionou Autenticado, insira o seguinte:

    • No campo Nome de usuário, digite seu nome de usuário para o repositório upstream.
    • No campo Secret, insira a versão do secret em que você salvou a senha para o repositório upstream.

    Você pode editar esses valores depois de criar o repositório. Para mais informações sobre a autenticação em upstreams de repositório remoto, consulte Configurar a autenticação em upstreams de repositório remoto.

  11. Na seção Tipo de local, escolha o local do repositório:

    1. Escolha o tipo de local: Região ou multirregião. A lista de locais muda para refletir a seleção.

    2. Na lista Região ou Multirregião, selecione um local.

    Para informações sobre tipos de local e locais compatíveis, consulte Locais de repositório.

  12. Adicione uma descrição para o repositório. As descrições ajudam a identificar a finalidade do repositório e o tipo de artefatos que ele contém.

    Não inclua dados sensíveis, já que as descrições do repositório não são criptografadas.

  13. Se você quiser usar rótulos para organizar os repositórios, clique em Adicionar rótulo e insira o par de chave-valor para o rótulo. É possível adicionar, editar ou remover rótulos depois de criar o repositório.

  14. Na seção Criptografia, escolha o mecanismo de criptografia do repositório.

    • do Google Cloud gerenciada pelo Google: criptografe o conteúdo do repositório com uma do Google e gerenciada pelo Google com tecnologia do Google Cloud.
    • Chave gerenciada pelo cliente: criptografe o conteúdo do repositório com uma chave controlada por você por meio do Cloud Key Management Service. Para instruções de configuração de chaves, consulte Como configurar CMEK para repositórios.
  15. Se você quiser usar políticas de limpeza para excluir artefatos não usados, na seção Políticas de limpeza:

    1. Selecione Simulação para testar a política antes de aplicá-la.
    2. Clique em Adicionar política para adicionar uma política de retenção ou exclusão ao repositório.
    3. Dê um nome descritivo à sua política de limpeza no campo Nome.
    4. Na seção Tipo de política, selecione uma das seguintes opções:

      • Excluir condicional: exclui artefatos com base nas condições que você define.
      • Manutenção condicional: mantém artefatos com base nas condições que você define.
      • Manter as versões mais recentes: mantém um número definido de versões mais recentes por pacote.

      Para mais detalhes sobre as políticas de limpeza, consulte Configurar políticas de limpeza.

  16. Na seção Artifact Analysis, escolha as configurações da verificação de vulnerabilidades:

    • Ativado: permite a verificação neste repositório. A API Container Scanning precisa estar ativada no projeto.

      Quando você ativa a API Container Scanning, o faturamento começa imediatamente. Depois de ativar a API Container Scanning em um projeto, a verificação de vulnerabilidades será ativada para todos os repositórios novos e existentes. Quando você envia uma imagem para o Artifact Registry, ela é verificada automaticamente pelo Artifact Analysis.

    • Desativado: impede a verificação neste repositório. Se a API Container Scanning estiver ativada no seu projeto, a verificação vai continuar em outros repositórios. Esse repositório será excluído.

      Para mais informações sobre as opções de verificação de vulnerabilidades, consulte Ativar e desativar a verificação automática.

  17. Clique em Criar.

O Artifact Registry cria o repositório e o adiciona à lista de repositórios.

Depois de criar o repositório:

Criar um repositório remoto usando a CLI gcloud

Para criar um repositório, execute o comando para o formato apropriado:

Docker

gcloud artifacts repositories create REMOTE-REPOSITORY-NAME \
    --project=PROJECT_ID \
    --repository-format=docker \
    --location=LOCATION \
    --description="DESCRIPTION" \
    --mode=remote-repository \
    --remote-repo-config-desc="REMOTE-REPOSITORY-DESCRIPTION" \
    --disable-vulnerability-scanning \
    --remote-docker-repo=UPSTREAM

Flags opcionais para autenticação no repositório upstream:

  • --remote-username=USERNAME
  • --remote-password-secret-version=SECRET_VERSION

Substitua:

  • REMOTE-REPOSITORY-NAME pelo nome do repositório. Para cada local de repositório em um projeto, os nomes dos repositórios precisam ser exclusivos.
  • PROJECT_ID pelo ID do projeto. Se essa sinalização for omitida, o projeto atual ou padrão será usado.
  • LOCATION com o local regional ou multirregional do repositório. É possível omitir essa sinalização se você definir um padrão. Para conferir uma lista de locais com suporte, execute o comando gcloud artifacts locations list.
  • DESCRIPTION com uma descrição opcional do repositório. Não inclua dados sensíveis, já que as descrições do repositório não são criptografadas.
  • REMOTE-REPOSITORY-DESCRIPTION com uma descrição da configuração do repositório externo para este repositório remoto.
  • USERNAME, opcionalmente, se você estiver usando autenticação, com seu nome de usuário para autenticação no repositório upstream.
  • SECRET_VERSION, opcionalmente, se você estiver usando autenticação, com a versão secreta contendo a senha do repositório upstream.
  • UPSTREAM com o nome predefinido do upstream, o caminho do repositório do Artifact Registry ou o URL definido pelo usuário do repositório upstream.

    Para repositórios upstream do Artifact Registry, formate o caminho do repositório de forma semelhante a esta: projects/UPSTREAM_PROJECT_ID/locations/REGION/repositories/UPSTREAM_REPOSITORY.

    Para informações sobre os upstreams predefinidos disponíveis e os upstreams definidos pelo usuário com suporte, consulte Formatos compatíveis.

  • --disable-vulnerability-scanning: é uma flag opcional que configura o repositório para desativar a verificação de vulnerabilidades automática.

  • --allow-vulnerability-scanning: é uma flag opcional que configura o repositório para permitir a verificação automática de vulnerabilidades. Para mais informações, consulte Ativar ou desativar a verificação automática.

Por exemplo, o comando a seguir cria um repositório remoto chamado my-repo na região us-east1 no projeto do Google Cloud my-project e pode ser autenticado no repositório upstream usando o nome de usuário my-username e a versão secreta projects/my-project/secrets/my-secret/versions/1.

gcloud artifacts repositories create my-repo \
    --project=my-project \
    --repository-format=docker \
    --location=us-east1 \
    --description="Remote Docker repository" \
    --mode=remote-repository \
    --remote-repo-config-desc="Docker Hub" \
    --remote-username=my-username \
    --remote-password-secret-version=projects/my-project/secrets/my-secret/versions/1 \
    --remote-docker-repo=DOCKER-HUB

Para mais informações sobre como fazer a autenticação em repositórios upstream do Docker Hub, consulte Configurar a autenticação de repositório remoto no Docker Hub.

Maven

gcloud artifacts repositories create REMOTE-REPOSITORY-NAME \
    --project=PROJECT_ID \
    --repository-format=maven \
    --location=LOCATION \
    --description="DESCRIPTION" \
    --mode=remote-repository \
    --remote-repo-config-desc="REMOTE-REPOSITORY-DESCRIPTION" \
    --disable-vulnerability-scanning \
    --remote-mvn-repo=UPSTREAM

Flags opcionais para autenticação no repositório upstream:

  • --remote-username=USERNAME
  • --remote-password-secret-version=SECRET_VERSION

Substitua:

  • REMOTE-REPOSITORY-NAME pelo nome do repositório. Para cada local de repositório em um projeto, os nomes dos repositórios precisam ser exclusivos.
  • PROJECT_ID pelo ID do projeto. Se essa sinalização for omitida, o projeto atual ou padrão será usado.
  • LOCATION com o local regional ou multirregional do repositório. É possível omitir essa sinalização se você definir um padrão. Para conferir uma lista de locais com suporte, execute o comando gcloud artifacts locations list.
  • DESCRIPTION com uma descrição opcional do repositório. Não inclua dados sensíveis, já que as descrições do repositório não são criptografadas.
  • REMOTE-REPOSITORY-DESCRIPTION com uma descrição da configuração do repositório externo para este repositório remoto.
  • USERNAME, opcionalmente, se você estiver usando autenticação, com seu nome de usuário para autenticação no repositório upstream.
  • SECRET_VERSION, opcionalmente, se você estiver usando autenticação, com a versão secreta contendo a senha do repositório upstream.
  • UPSTREAM com o nome predefinido do upstream, o caminho do repositório do Artifact Registry ou o URL definido pelo usuário do repositório upstream.

    Para repositórios upstream do Artifact Registry, formate o caminho do repositório de forma semelhante a esta: projects/UPSTREAM_PROJECT_ID/locations/REGION/repositories/UPSTREAM_REPOSITORY.

    Para informações sobre os upstreams predefinidos disponíveis e os upstreams definidos pelo usuário com suporte, consulte Formatos compatíveis.

  • --disable-vulnerability-scanning: é uma flag opcional que configura o repositório para desativar a verificação de vulnerabilidades automática.

  • --allow-vulnerability-scanning: é uma flag opcional que configura o repositório para permitir a verificação automática de vulnerabilidades. Para mais informações, consulte Ativar ou desativar a verificação automática.

Por exemplo, o comando a seguir cria um repositório remoto chamado my-repo na região us-east1 no projeto do Google Cloud my-project e pode ser autenticado no repositório upstream usando o nome de usuário my-username e a versão secreta projects/my-project/secrets/my-secret/versions/1.

gcloud artifacts repositories create my-repo \
    --project=my-project \
    --repository-format=maven \
    --location=us-east1 \
    --description="Remote Maven repository" \
    --mode=remote-repository \
    --remote-repo-config-desc="Maven Central" \
    --remote-username=my-username \
    --remote-password-secret-version=projects/my-project/secrets/my-secret/versions/1 \
    --remote-mvn-repo=MAVEN-CENTRAL

npm

gcloud artifacts repositories create REMOTE-REPOSITORY-NAME \
    --project=PROJECT_ID \
    --repository-format=npm \
    --location=LOCATION \
    --description="DESCRIPTION" \
    --mode=remote-repository \
    --remote-repo-config-desc="REMOTE-REPOSITORY-DESCRIPTION" \
    --disable-vulnerability-scanning \
    --remote-npm-repo=UPSTREAM

Flags opcionais para autenticação no repositório upstream:

  • --remote-username=USERNAME
  • --remote-password-secret-version=SECRET_VERSION

Substitua:

  • REMOTE-REPOSITORY-NAME pelo nome do repositório. Para cada local de repositório em um projeto, os nomes dos repositórios precisam ser exclusivos.
  • PROJECT_ID pelo ID do projeto. Se essa sinalização for omitida, o projeto atual ou padrão será usado.
  • LOCATION com o local regional ou multirregional do repositório. É possível omitir essa sinalização se você definir um padrão. Para conferir uma lista de locais com suporte, execute o comando gcloud artifacts locations list.
  • DESCRIPTION com uma descrição opcional do repositório. Não inclua dados sensíveis, já que as descrições do repositório não são criptografadas.
  • REMOTE-REPOSITORY-DESCRIPTION com uma descrição da configuração do repositório externo para este repositório remoto.
  • USERNAME, opcionalmente, se você estiver usando autenticação, com seu nome de usuário para autenticação no repositório upstream.
  • SECRET_VERSION, opcionalmente, se você estiver usando autenticação, com a versão secreta contendo a senha do repositório upstream.
  • UPSTREAM com o nome predefinido do upstream, o caminho do repositório do Artifact Registry ou o URL definido pelo usuário do repositório upstream.

    Para repositórios upstream do Artifact Registry, formate o caminho do repositório de forma semelhante a esta: projects/UPSTREAM_PROJECT_ID/locations/REGION/repositories/UPSTREAM_REPOSITORY.

    Para informações sobre os upstreams predefinidos disponíveis e os upstreams definidos pelo usuário com suporte, consulte Formatos compatíveis.

  • --disable-vulnerability-scanning: é uma flag opcional que configura o repositório para desativar a verificação de vulnerabilidades automática.

  • --allow-vulnerability-scanning: é uma flag opcional que configura o repositório para permitir a verificação automática de vulnerabilidades. Para mais informações, consulte Ativar ou desativar a verificação automática.

Por exemplo, o comando a seguir cria um repositório remoto chamado my-repo na região us-east1 no projeto do Google Cloud my-project e pode ser autenticado no repositório upstream usando o nome de usuário my-username e a versão secreta projects/my-project/secrets/my-secret/versions/1.

gcloud artifacts repositories create my-repo \
    --project=my-project \
    --repository-format=npm \
    --location=us-east1 \
    --description="Remote npm repository" \
    --mode=remote-repository \
    --remote-repo-config-desc="Public npm registry" \
    --remote-username=my-username \
    --remote-password-secret-version=projects/my-project/secrets/my-secret/versions/1 \
    --remote-npm-repo=NPMJS

Python

gcloud artifacts repositories create REMOTE-REPOSITORY-NAME \
    --project=PROJECT_ID \
    --repository-format=python \
    --location=LOCATION \
    --description="DESCRIPTION" \
    --mode=remote-repository \
    --remote-repo-config-desc="REMOTE-REPOSITORY-DESCRIPTION" \
    --disable-vulnerability-scanning \
    --remote-python-repo=UPSTREAM

Flags opcionais para autenticação no repositório upstream:

  • --remote-username=USERNAME
  • --remote-password-secret-version=SECRET_VERSION

Substitua:

  • REMOTE-REPOSITORY-NAME pelo nome do repositório. Para cada local de repositório em um projeto, os nomes dos repositórios precisam ser exclusivos.
  • PROJECT_ID pelo ID do projeto. Se essa sinalização for omitida, o projeto atual ou padrão será usado.
  • LOCATION com o local regional ou multirregional do repositório. É possível omitir essa sinalização se você definir um padrão. Para conferir uma lista de locais com suporte, execute o comando gcloud artifacts locations list.
  • DESCRIPTION com uma descrição opcional do repositório. Não inclua dados sensíveis, já que as descrições do repositório não são criptografadas.
  • REMOTE-REPOSITORY-DESCRIPTION com uma descrição da configuração do repositório externo para este repositório remoto.
  • USERNAME, opcionalmente, se você estiver usando autenticação, com seu nome de usuário para autenticação no repositório upstream.
  • SECRET_VERSION, opcionalmente, se você estiver usando autenticação, com a versão secreta contendo a senha do repositório upstream.
  • UPSTREAM com o nome predefinido do upstream, o caminho do repositório do Artifact Registry ou o URL definido pelo usuário do repositório upstream.

    Para repositórios upstream do Artifact Registry, formate o caminho do repositório de forma semelhante a esta: projects/UPSTREAM_PROJECT_ID/locations/REGION/repositories/UPSTREAM_REPOSITORY.

    Para informações sobre os upstreams predefinidos disponíveis e os upstreams definidos pelo usuário com suporte, consulte Formatos compatíveis.

  • --disable-vulnerability-scanning: é uma flag opcional que configura o repositório para desativar a verificação de vulnerabilidades automática.

  • --allow-vulnerability-scanning: é uma flag opcional que configura o repositório para permitir a verificação automática de vulnerabilidades. Para mais informações, consulte Ativar ou desativar a verificação automática.

Por exemplo, o comando a seguir cria um repositório remoto chamado my-repo na região us-east1 no projeto Google Cloud my-project e pode ser autenticado no repositório upstream usando o nome de usuário my-username e a versão secreta projects/my-project/secrets/my-secret/versions/1.

gcloud artifacts repositories create my-repo \
    --project=my-project \
    --repository-format=python \
    --location=us-east1 \
    --description="Remote Python repository" \
    --mode=remote-repository \
    --remote-repo-config-desc="PyPI" \
    --remote-username=my-username \
    --remote-password-secret-version=projects/my-project/secrets/my-secret/versions/1 \
    --remote-python-repo=PYPI

Apt (pré-lançamento)

gcloud artifacts repositories create REMOTE_REPOSITORY_NAME \
    --project=PROJECT_ID \
    --repository-format=apt \
    --location=LOCATION \
    --description="DESCRIPTION" \
    --mode=remote-repository \
    --remote-repo-config-desc="REMOTE_REPOSITORY_DESCRIPTION" \
    --remote-apt-repo=APT_REPOSITORY_BASE \
    --remote-apt-repo-path="APT_REPOSITORY_PATH"

Substitua:

  • REMOTE_REPOSITORY_NAME pelo nome do repositório. Para cada local de repositório em um projeto, os nomes dos repositórios precisam ser exclusivos.
  • PROJECT_ID pelo ID do projeto. Se essa sinalização for omitida, o projeto atual ou padrão será usado.
  • LOCATION com o local regional ou multirregional do repositório. É possível omitir essa sinalização se você definir um padrão. Para conferir uma lista de locais com suporte, execute o comando gcloud artifacts locations list.
  • DESCRIPTION com uma descrição opcional do repositório. Não inclua dados sensíveis, já que as descrições do repositório não são criptografadas.
  • REMOTE_REPOSITORY_DESCRIPTION com uma descrição opcional para a configuração do repositório externo para este repositório remoto.
  • APT_REPOSITORY_BASE com um dos nomes de base de repositório com suporte listados em upstreams com suporte ao pacote do SO para repositórios remotos do Apt.
  • APT_REPOSITORY_PATH com o restante do URL do repositório upstream que você quer armazenar em cache no repositório remoto após a base do repositório.

Por exemplo, o comando a seguir cria um repositório remoto chamado my-repo para armazenar em cache o repositório Debian buster na região us-east1 no projeto my-project. O URL completo do repositório upstream é http://deb.debian.org/debian/dists/buster.

gcloud artifacts repositories create my-repo \
    --project=my-project \
    --repository-format=apt \
    --location=us-east1 \
    --description="Apt remote repository" \
    --mode=remote-repository \
    --remote-repo-config-desc="Debian buster distribution" \
    --remote-apt-repo=DEBIAN \
    --remote-apt-repo-path="debian/dists/buster"

Yum (pré-lançamento)

gcloud artifacts repositories create REMOTE_REPOSITORY_NAME \
    --project=PROJECT_ID \
    --repository-format=yum \
    --location=LOCATION \
    --description="DESCRIPTION" \
    --mode=remote-repository \
    --remote-repo-config-desc="REMOTE_REPOSITORY_DESCRIPTION" \
    --remote-yum-repo=YUM_REPOSITORY_BASE \
    --remote-yum-repo-path="YUM_REPOSITORY_PATH"

Substitua:

  • REMOTE_REPOSITORY_NAME pelo nome do repositório. Para cada local de repositório em um projeto, os nomes dos repositórios precisam ser exclusivos.
  • PROJECT_ID pelo ID do projeto. Se essa sinalização for omitida, o projeto atual ou padrão será usado.
  • LOCATION com o local regional ou multirregional do repositório. É possível omitir essa sinalização se você definir um padrão. Para conferir uma lista de locais com suporte, execute o comando gcloud artifacts locations list.
  • DESCRIPTION com uma descrição opcional do repositório. Não inclua dados sensíveis, já que as descrições do repositório não são criptografadas.
  • REMOTE_REPOSITORY_DESCRIPTION com uma descrição opcional para a configuração do repositório externo para este repositório remoto.
  • YUM_REPOSITORY_BASE com um dos nomes de base de repositório com suporte listados no pacote do SO com suporte a upstreams para repositórios remotos do Yum.
  • YUM_REPOSITORY_PATH com o restante do URL do repositório upstream que você quer armazenar em cache no repositório remoto após a base do repositório.

Por exemplo, o comando a seguir cria um repositório remoto para pacotes Yum chamado my-repo na região us-east1 no Google Cloud my-project para o repositório upstream 9-stream/BaseOs/x86_64/os. O URL completo do repositório é https://mirror.stream.centos.org/9-stream/BaseOS/x86_64/os

gcloud artifacts repositories create my-repo \
    --project=my-project \
    --repository-format=yum \
    --location=us-east1 \
    --description="Yum remote repository" \
    --mode=remote-repository \
    --remote-repo-config-desc="CentOS 8 x86" \
    --remote-yum-repo=CENTOS_STREAM \
    --remote-yum-repo-path="9-stream/BaseOs/x86_64/os"

O Artifact Registry cria o repositório. Execute o comando a seguir para conferir uma descrição do repositório:

gcloud artifacts repositories describe REMOTE_REPOSITORY_NAME \
    --location=LOCATION

Depois de criar o repositório, faça o seguinte:

Criar um repositório remoto usando o Terraform

Use o recurso google_artifact_registry_repository para criar repositórios. A versão terraform-provider-google 5.0.0 ou mais recente é obrigatória.

Se você não usa o Terraform para Google Cloud, consulte a página Primeiros passos: Google Cloud no site da HashiCorp.

O exemplo a seguir define o provedor e um repositório remoto com o nome de recurso do Terraform my-repo.

Docker

provider "google" {
    project = "PROJECT-ID"
}

resource "google_artifact_registry_repository" "my-repo" {
  location      = "LOCATION"
  repository_id = "REPOSITORY_ID"
  description   = "DESCRIPTION"
  format        = "docker"
  kms_key_name = "KEY"
  mode          = "REMOTE_REPOSITORY"
  remote_repository_config {
    description = "CONFIG_DESCRIPTION"
    docker_repository {
      public_repository = "DOCKER_HUB"
    }
  }
  cleanup_policy_dry_run = DRY_RUN_STATUS
  cleanup_policies {
    id     = "POLICY_NAME"
    action = "DELETE"
    condition {
      tag_state    = "TAG_STATE"
      tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"]
      older_than   = "TIME_SINCE_UPLOAD"
    }
  }
  cleanup_policies {
    id     = "POLICY_NAME"
    action = "KEEP"
    condition {
      tag_state             = "TAG_STATE"
      tag_prefixes          = ["TAG_PREFIX", "TAG_PREFIX_N"]
      package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"]
    }
  }
  cleanup_policies {
    id     = "POLICY_NAME"
    action = "KEEP"
    most_recent_versions {
      package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"]
      keep_count            = KEEP_COUNT
    }
  }
}

Onde

  • PROJECT-ID é o ID do projeto do Google Cloud .
  • LOCATION é o local do repositório.
  • REPOSITORY_ID é o ID do repositório.
  • DESCRIPTION é a descrição opcional do repositório. Não inclua dados sensíveis, já que as descrições do repositório não são criptografadas.
  • KEY é o nome da chave do Cloud Key Management Service, se você estiver usando chaves de criptografia gerenciadas pelo cliente (CMEK, na sigla em inglês) para criptografia. Omita esse argumento para usar a configuração padrão, as chaves de criptografia gerenciadas pelo Google.
  • CONFIG_DESCRIPTION é a descrição opcional da fonte remota.
  • O DRY_RUN_STATUS determina se as políticas de limpeza excluem artefatos ou apenas registra quais artefatos seriam excluídos se as políticas de limpeza fossem definidas no repositório. Omita se você não quiser adicionar políticas de limpeza ao repositório. * true: define as políticas para serem executadas no modo de teste. Nenhum artefato é excluído no modo de teste. * false: aplica as políticas de limpeza. Os artefatos são excluídos ou mantidos, dependendo das políticas. Para mais informações sobre as políticas de limpeza, consulte Configurar políticas de limpeza.
    • POLICY_NAME é o nome da política de limpeza.
    • TAG_STATE é o estado da tag em que a política será aplicada. Os valores são tagged, untagged e any. O any se aplica a artefatos marcados e não marcados. Se um repositório tiver tags imutáveis ativadas, os artefatos marcados não poderão ser excluídos.
    • TAG_PREFIX e TAG_PREFIX_N são prefixos de tags para aplicar a política.
    • PKG_PREFIX e PKG_PREFIX_N são prefixos de pacotes para aplicar a política.
    • TIME_SINCE_UPLOAD é o tempo desde que uma versão do artefato foi enviada para o repositório, especificado como uma duração. É possível especificar durações de segundos, minutos, horas ou dias anexando s, m, h ou d, respectivamente.
    • KEEP_COUNT é o número de versões por pacote de um artefato a serem mantidas no repositório.

Maven

Se você não especificar uma política de versão, o Artifact Registry vai criar um repositório Maven que armazena versões de snapshot e de lançamento de pacotes por padrão.

provider "google" {
    project = "PROJECT-ID"
}

resource "google_artifact_registry_repository" "my-repo" {
  location      = "LOCATION"
  repository_id = "REPOSITORY_ID"
  description   = "DESCRIPTION"
  format        = "maven"
  kms_key_name = "KEY"
  mode          = "REMOTE_REPOSITORY"
  remote_repository_config {
    description = "CONFIG_DESCRIPTION"
    maven_repository {
      public_repository = "MAVEN_CENTRAL"
    }
  }
  cleanup_policy_dry_run = DRY_RUN_STATUS
  cleanup_policies {
    id     = "POLICY_NAME"
    action = "DELETE"
    condition {
      tag_state    = "TAG_STATE"
      tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"]
      older_than   = "TIME_SINCE_UPLOAD"
    }
  }
  cleanup_policies {
    id     = "POLICY_NAME"
    action = "KEEP"
    condition {
      tag_state             = "TAG_STATE"
      tag_prefixes          = ["TAG_PREFIX", "TAG_PREFIX_N"]
      package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"]
    }
  }
  cleanup_policies {
    id     = "POLICY_NAME"
    action = "KEEP"
    most_recent_versions {
      package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"]
      keep_count            = KEEP_COUNT
    }
  }
}

Onde

  • PROJECT-ID é o ID do projeto do Google Cloud .
  • LOCATION é o local do repositório.
  • REPOSITORY_ID é o ID do repositório.
  • DESCRIPTION é a descrição opcional do repositório. Não inclua dados sensíveis, já que as descrições do repositório não são criptografadas.
  • KEY é o nome da chave do Cloud Key Management Service, se você estiver usando chaves de criptografia gerenciadas pelo cliente (CMEK, na sigla em inglês) para criptografia. Omita esse argumento para usar a configuração padrão, as chaves de criptografia gerenciadas pelo Google.
  • CONFIG_DESCRIPTION é a descrição opcional da fonte remota.
  • O DRY_RUN_STATUS determina se as políticas de limpeza excluem artefatos ou apenas registra quais artefatos seriam excluídos se as políticas de limpeza fossem definidas no repositório. Omita se você não quiser adicionar políticas de limpeza ao repositório. * true: define as políticas para serem executadas no modo de teste. Nenhum artefato é excluído no modo de teste. * false: aplica as políticas de limpeza. Os artefatos são excluídos ou mantidos, dependendo das políticas. Para mais informações sobre as políticas de limpeza, consulte Configurar políticas de limpeza.
    • POLICY_NAME é o nome da política de limpeza.
    • TAG_STATE é o estado da tag em que a política será aplicada. Os valores são tagged, untagged e any. O any se aplica a artefatos marcados e não marcados. Se um repositório tiver tags imutáveis ativadas, os artefatos marcados não poderão ser excluídos.
    • TAG_PREFIX e TAG_PREFIX_N são prefixos de tags para aplicar a política.
    • PKG_PREFIX e PKG_PREFIX_N são prefixos de pacotes para aplicar a política.
    • TIME_SINCE_UPLOAD é o tempo desde que uma versão do artefato foi enviada para o repositório, especificado como uma duração. É possível especificar durações de segundos, minutos, horas ou dias anexando s, m, h ou d, respectivamente.
    • KEEP_COUNT é o número de versões por pacote de um artefato a serem mantidas no repositório.

Para armazenar versões de snapshot e de lançamento em repositórios diferentes, especifique uma política de versão para o repositório usando um bloco maven_config. Esse bloco oferece suporte às seguintes configurações:

  • version_policy define a política de versão com um dos seguintes valores:
    • VERSION_POLICY_UNSPECIFIED: armazenar pacotes de snapshot e de lançamento. Essa é a configuração padrão.
    • LANÇAMENTO: armazene apenas pacotes de lançamento.
    • SNAPSHOT: armazenar apenas pacotes de snapshot.
  • allow_snapshot_overwrites configura um repositório com uma política de versão SNAPSHOT para aceitar snapshots não exclusivos que substituem versões existentes no repositório.

O exemplo a seguir define um repositório do Maven com uma política de versão de lançamento.

provider "google" {
project = "my-project"
}

resource "google_artifact_registry_repository" "my-repo" {
provider = google-beta

location = "LOCATION"
repository_id = "my-repo"
description = "Maven repository"
format = "MAVEN"
mode = "REMOTE_REPOSITORY"
maven_config {
  version_policy = "RELEASE"
}
}

npm

provider "google" {
    project = "PROJECT-ID"
}

resource "google_artifact_registry_repository" "my-repo" {
  location      = "LOCATION"
  repository_id = "REPOSITORY_ID"
  description   = "DESCRIPTION"
  format        = "npm"
  kms_key_name = "KEY"
  mode          = "REMOTE_REPOSITORY"
  remote_repository_config {
    description = "CONFIG_DESCRIPTION"
    npm_repository {
      public_repository = "NPMJS"
    }
  }
  cleanup_policy_dry_run = DRY_RUN_STATUS
  cleanup_policies {
    id     = "POLICY_NAME"
    action = "DELETE"
    condition {
      tag_state    = "TAG_STATE"
      tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"]
      older_than   = "TIME_SINCE_UPLOAD"
    }
  }
  cleanup_policies {
    id     = "POLICY_NAME"
    action = "KEEP"
    condition {
      tag_state             = "TAG_STATE"
      tag_prefixes          = ["TAG_PREFIX", "TAG_PREFIX_N"]
      package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"]
    }
  }
  cleanup_policies {
    id     = "POLICY_NAME"
    action = "KEEP"
    most_recent_versions {
      package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"]
      keep_count            = KEEP_COUNT
    }
  }
}

Onde

  • PROJECT-ID é o ID do projeto do Google Cloud .
  • LOCATION é o local do repositório.
  • REPOSITORY_ID é o ID do repositório.
  • DESCRIPTION é a descrição opcional do repositório. Não inclua dados sensíveis, já que as descrições do repositório não são criptografadas.
  • KEY é o nome da chave do Cloud Key Management Service, se você estiver usando chaves de criptografia gerenciadas pelo cliente (CMEK, na sigla em inglês) para criptografia. Omita esse argumento para usar a configuração padrão, as chaves de criptografia gerenciadas pelo Google.
  • CONFIG_DESCRIPTION é a descrição opcional da fonte remota.
  • O DRY_RUN_STATUS determina se as políticas de limpeza excluem artefatos ou apenas registra quais artefatos seriam excluídos se as políticas de limpeza fossem definidas no repositório. Omita se você não quiser adicionar políticas de limpeza ao repositório. * true: define as políticas para serem executadas no modo de teste. Nenhum artefato é excluído no modo de teste. * false: aplica as políticas de limpeza. Os artefatos são excluídos ou mantidos, dependendo das políticas. Para mais informações sobre as políticas de limpeza, consulte Configurar políticas de limpeza.
    • POLICY_NAME é o nome da política de limpeza.
    • TAG_STATE é o estado da tag em que a política será aplicada. Os valores são tagged, untagged e any. O any se aplica a artefatos marcados e não marcados. Se um repositório tiver tags imutáveis ativadas, os artefatos marcados não poderão ser excluídos.
    • TAG_PREFIX e TAG_PREFIX_N são prefixos de tags para aplicar a política.
    • PKG_PREFIX e PKG_PREFIX_N são prefixos de pacotes para aplicar a política.
    • TIME_SINCE_UPLOAD é o tempo desde que uma versão do artefato foi enviada para o repositório, especificado como uma duração. É possível especificar durações de segundos, minutos, horas ou dias anexando s, m, h ou d, respectivamente.
    • KEEP_COUNT é o número de versões por pacote de um artefato a serem mantidas no repositório.

Python

provider "google" {
    project = "PROJECT-ID"
}

resource "google_artifact_registry_repository" "my-repo" {
  location      = "LOCATION"
  repository_id = "REPOSITORY_ID"
  description   = "DESCRIPTION"
  format        = "python"
  kms_key_name = "KEY"
  mode          = "REMOTE_REPOSITORY"
  remote_repository_config {
    description = "CONFIG_DESCRIPTION"
    python_repository {
      public_repository = "PYPI"
    }
  }
  cleanup_policy_dry_run = DRY_RUN_STATUS
  cleanup_policies {
    id     = "POLICY_NAME"
    action = "DELETE"
    condition {
      tag_state    = "TAG_STATE"
      tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"]
      older_than   = "TIME_SINCE_UPLOAD"
    }
  }
  cleanup_policies {
    id     = "POLICY_NAME"
    action = "KEEP"
    condition {
      tag_state             = "TAG_STATE"
      tag_prefixes          = ["TAG_PREFIX", "TAG_PREFIX_N"]
      package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"]
    }
  }
  cleanup_policies {
    id     = "POLICY_NAME"
    action = "KEEP"
    most_recent_versions {
      package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"]
      keep_count            = KEEP_COUNT
    }
  }
}

Onde

  • PROJECT-ID é o ID do projeto do Google Cloud .
  • LOCATION é o local do repositório.
  • REPOSITORY_ID é o ID do repositório.
  • DESCRIPTION é a descrição opcional do repositório. Não inclua dados sensíveis, já que as descrições do repositório não são criptografadas.
  • KEY é o nome da chave do Cloud Key Management Service, se você estiver usando chaves de criptografia gerenciadas pelo cliente (CMEK, na sigla em inglês) para criptografia. Omita esse argumento para usar a configuração padrão, as chaves de criptografia gerenciadas pelo Google.
  • CONFIG_DESCRIPTION é a descrição opcional da fonte remota.
  • O DRY_RUN_STATUS determina se as políticas de limpeza excluem artefatos ou apenas registra quais artefatos seriam excluídos se as políticas de limpeza fossem definidas no repositório. Omita se você não quiser adicionar políticas de limpeza ao repositório. * true: define as políticas para serem executadas no modo de teste. Nenhum artefato é excluído no modo de teste. * false: aplica as políticas de limpeza. Os artefatos são excluídos ou mantidos, dependendo das políticas. Para mais informações sobre as políticas de limpeza, consulte Configurar políticas de limpeza.
    • POLICY_NAME é o nome da política de limpeza.
    • TAG_STATE é o estado da tag em que a política será aplicada. Os valores são tagged, untagged e any. O any se aplica a artefatos marcados e não marcados. Se um repositório tiver tags imutáveis ativadas, os artefatos marcados não poderão ser excluídos.
    • TAG_PREFIX e TAG_PREFIX_N são prefixos de tags para aplicar a política.
    • PKG_PREFIX e PKG_PREFIX_N são prefixos de pacotes para aplicar a política.
    • TIME_SINCE_UPLOAD é o tempo desde que uma versão do artefato foi enviada para o repositório, especificado como uma duração. É possível especificar durações de segundos, minutos, horas ou dias anexando s, m, h ou d, respectivamente.
    • KEEP_COUNT é o número de versões por pacote de um artefato a serem mantidas no repositório.

Apt (pré-lançamento)

  provider "google" {
  project = "PROJECT_ID"
}

resource "google_artifact_registry_repository" "my-repo" {
  location      = "LOCATION"
  repository_id = "REPOSITORY_ID"
  description   = "DESCRIPTION"
  format        = "APT"
  mode          = "REMOTE_REPOSITORY"
  remote_repository_config {
    description = "CONFIG_DESCRIPTION"
    apt_repository {
      public_repository {
        repository_base = "REPOSITORY_BASE"
        repository_path = "REPOSITORY_PATH"
      }
    }
  }
}

Onde

  • PROJECT-ID é o ID do projeto do Google Cloud .
  • LOCATION é o local do repositório.
  • REPOSITORY_ID é o ID do repositório.
  • DESCRIPTION é a descrição opcional para o repositório. Não inclua dados sensíveis, já que as descrições do repositório não são criptografadas.
  • CONFIG_DESCRIPTION é a descrição opcional da fonte remota.
  • REPOSITORY_BASE é a base de repositório público predefinida do Apt. Os valores possíveis são DEBIAN e UBUNTU.
  • REPOSITORY_PATH é o repositório específico da base. Por exemplo debian/dists/buster.

Yum (pré-lançamento)

  provider "google" {
  project = "PROJECT_ID"
}

resource "google_artifact_registry_repository" "my-repo" {
  location      = "LOCATION"
  repository_id = "REPOSITORY_ID"
  description   = "DESCRIPTION"
  format        = "YUM"
  mode          = "REMOTE_REPOSITORY"
  remote_repository_config {
    description = "CONFIG_DESCRIPTION"
    yum_repository {
      public_repository {
        repository_base = "REPOSITORY_BASE"
        repository_path = "REPOSITORY_PATH"
      }
    }
  }
}

Onde

  • PROJECT-ID é o ID do projeto do Google Cloud .
  • LOCATION é o local do repositório.
  • REPOSITORY_ID é o ID do repositório.
  • DESCRIPTION é a descrição opcional para o repositório. Não inclua dados sensíveis, já que as descrições do repositório não são criptografadas.
  • CONFIG_DESCRIPTION é a descrição opcional da fonte remota.
  • REPOSITORY_BASE é a base de repositório público predefinida para o Yum. Os valores possíveis são CENTOS, CENTOS_DEBUG, CENTOS_VAULT, CENTOS_STREAM, ROCKY e EPEL.
  • REPOSITORY_PATH é o repositório específico da base. Por exemplo "centos/8-stream/BaseOS/x86_64/os.

O Artifact Registry cria seu repositório. Execute o comando a seguir para conferir uma descrição do repositório:

gcloud artifacts repositories describe REPOSITORY \
    --location=LOCATION

Depois de criar o repositório:

Editar descrições de repositórios

É possível mudar a descrição do repositório do console do Google Cloud ou da CLI gcloud.

Console

  1. Abra a página Repositórios no console Google Cloud .

    Abrir a página Repositórios

  2. Na lista de repositórios, selecione o repositório e clique em Editar repositório.

  3. Edite a descrição do repositório e clique em Salvar.

gcloud

Para atualizar a descrição do repositório, execute o comando:

gcloud artifacts repositories update REPOSITORY \
    --project=PROJECT \
    --location=LOCATION \
    --description="DESCRIPTION"

Substitua:

  • REPOSITORY: o nome do repositório. Se você tiver configurado um repositório padrão, poderá omitir essa flag para usar o padrão.
  • PROJECT: o ID do projeto do Google Cloud. Se essa flag for omitida, o projeto atual ou padrão será usado.
  • LOCATION é o local regional ou multirregional do repositório. Use essa flag para conferir repositórios em um local específico. Se você configurou um local padrão, poderá omitir essa flag para usar o padrão.
  • DESCRIPTION: uma descrição do repositório.

Acesso a origens upstream em um perímetro de serviço

Os serviços em um perímetro de serviço do VPC Service Controls têm acesso restrito a recursos fora do perímetro.

É possível permitir ou negar o acesso a fontes upstream em um projeto e local especificados doGoogle Cloud .

Por padrão, o Artifact Registry nega o acesso a fontes upstream se você não tiver concedido acesso explicitamente.

Para o Artifact Registry, o papel necessário é o de administrador (roles/artifactregistry.admin).

Conferir as configurações das origens upstream

Para conferir a configuração de uma combinação específica de projeto e local, execute o seguinte comando:

gcloud artifacts vpcsc-config describe \
    --project=PROJECT_ID \
    --location=LOCATION

Por exemplo, use o comando a seguir para conferir as configurações de repositórios remotos em us-east1 no projeto my-project:

gcloud artifacts vpcsc-config describe \
    --project=my-project \
    --location=us-east1

Permitir acesso a origens upstream

Para permitir o acesso a fontes upstream em um local especificado, execute o comando:

gcloud artifacts vpcsc-config allow \
    --project=PROJECT_ID \
    --location=LOCATION

Por exemplo, use o comando abaixo para permitir que todos os repositórios remotos em us-east1 no projeto my-project acessem as origens upstream fora do perímetro:

gcloud artifacts vpcsc-config allow \
    --project=my-project \
    --location=us-east1

Negar acesso a origens upstream

Quando você nega o acesso a origens upstream, os artefatos em cache nos repositórios remotos ainda estão disponíveis.

Para negar o acesso a fontes upstream em um local especificado, execute o comando:

gcloud artifacts vpcsc-config deny \
    --project=PROJECT_ID \
    --location=LOCATION

Por exemplo, use o comando abaixo para bloquear o acesso a fontes upstream fora do perímetro para todos os repositórios remotos em us-west1 no projeto my-project:

gcloud artifacts vpcsc-config deny \
    --project=my-project \
    --location=us-west1

A seguir