Nesta página, descrevemos 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:
- CentOS
- Debian
- Docker Hub
- Registro de contêiner do GitHub (ghcr.io)
- Maven Central;
- O índice de pacotes do Python (PyPI)
Um repositório remoto atua como um proxy para a origem upstream, permitindo 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 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 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 particulares, diretamente em repositórios padrão. Embora seja possível fazer o download diretamente de repositórios padrão individuais, acessar 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 padrão.
Para mais detalhes sobre como os repositórios remotos funcionam, consulte a Visão geral dos repositórios remotos.
Antes de começar
- Ative o Artifact Registry, incluindo a ativação da API Artifact Registry e a instalação do Google Cloud CLI.
- Opcional: configure padrões para os comandos da CLI gcloud.
- 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.
Se quiser se autenticar em um repositório upstream, ative a API Secret Manager.
gcloud services enable secretmanager.googleapis.com \ --project=PROJECT_ID
Se o Artifact Registry estiver em um perímetro de serviço do VPC Service Controls, ative a API Access Context Manager, se ela ainda não estiver ativada.
gcloud services enable accesscontextmanager.googleapis.com \ --project=PROJECT_ID
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 autenticar repositórios upstream do Artifact Registry. Conceda ao agente de serviço do 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 projeto Google Cloud para seu repositório remoto.REMOTE_PROJECT_ID
é o ID do projeto Google Cloud do repositório remoto.REGION
é a região em que você quer criar o repositório remoto.UPSTREAM_PROJECT_ID
é o ID do projeto Google Cloud com 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:
-
Criar repositórios remotos e conceder 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 secreta:
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, é preciso configurar as seguintes opções, que não podem ser alteradas depois da criação:
- Formato do artefato.
- O modo do repositório está definido como remoto.
- Origem upstream do repositório remoto.
- Local do repositório.
- Criptografia com Google-owned and Google-managed encryption keys ou chaves de criptografia gerenciadas pelo cliente. O Artifact Registry usa Google-owned and Google-managed encryption keys por padrão.
O Artifact Registry aplica restrições de política da organização que exigem a CMEK para criptografar recursos ou limitar quais chaves do Cloud KMS podem ser usadas para proteção por CMEK.
Console
Abra a página Repositórios no console do Google Cloud .
Clique em Criar repositório.
Especifique o nome do repositório. Para cada local de repositório em um projeto, os nomes dos repositórios precisam ser exclusivos.
Na seção Formato, selecione o formato do repositório.
Na seção Modo de repositório, selecione Remoto.
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 de 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 escolher um repositório padrão do Artifact Registry.
Se você selecionou Personalizado, insira o URL completo do repositório no campo Repositório personalizado. Não é possível mudar o URL depois que o repositório é criado.
Para exemplos de alguns URLs upstream comuns, consulte Upstreams personalizados.
Se você selecionou Repositório do Artifact Registry:
- 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 que o repositório remoto são listados.
- Clique no nome do repositório que você quer usar como upstream.
- Clique em Selecionar.
Se você selecionou um dos upstreams predefinidos ou inseriu um URL completo usando o botão Personalizado, em Modo de autenticação do repositório remoto, escolha uma das opções:
- Autenticado: para inserir seu nome de usuário e senha para autenticação no repositório upstream.
- Não autenticado: para pular a autenticação no repositório upstream.
Se você selecionou Autenticado, insira o seguinte:
- No campo Nome de usuário, insira 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 do repositório upstream.
É possível editar esses valores depois de criar o repositório. Para mais informações sobre a autenticação em upstream de repositórios remotos, consulte Configurar a autenticação em upstream de repositórios remotos.
Na seção Tipo de local, escolha o local do repositório:
Escolha o tipo de local: Região ou multirregião. A lista de locais muda para refletir a seleção.
Na lista Região ou Multirregião, selecione um local.
Para informações sobre tipos de local e locais compatíveis, consulte Locais do repositório.
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.
Se quiser usar rótulos para organizar os repositórios, clique em Adicionar rótulo e insira o par de chave-valor. É possível adicionar, editar ou remover rótulos depois de criar o repositório.
Na seção Criptografia, escolha o mecanismo de criptografia do repositório.
- Google-managed encryption key: criptografa o conteúdo do repositório com um Google-owned and Google-managed encryption key.
- 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.
Se você quiser usar políticas de limpeza para excluir artefatos não utilizados, na seção Políticas de limpeza:
- Selecione Simulação para testar a política antes de aplicá-la.
- Clique em Adicionar política para adicionar uma política de manter ou excluir ao repositório.
- Dê um nome descritivo à política de limpeza no campo Nome.
Na seção Tipo de política, selecione uma das seguintes opções:
- Exclusão condicional: exclui artefatos com base em condições definidas por você.
- Manutenção condicional: mantém artefatos com base nas condições definidas.
Manter as versões mais recentes: mantém um número definido das versões mais recentes por pacote.
Para mais detalhes sobre as políticas de limpeza, consulte Configurar políticas de limpeza.
Na seção Artifact Analysis, escolha as configurações de verificação de vulnerabilidades:
Ativado: permite a verificação neste repositório. A API Container Scanning precisa estar ativada no projeto.
Ao ativar a API Container Scanning, o faturamento começa imediatamente. Depois de ativar a API Container Scanning em um projeto, a verificação de vulnerabilidades é ativada para todos os repositórios novos e atuais. Quando você envia uma imagem para o Artifact Registry, ela é verificada automaticamente pela 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, e este 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.
Clique em Criar.
O Artifact Registry cria o repositório e o adiciona à lista de repositórios.
CLI da gcloud
Para criar um repositório, execute o comando do formato adequado:
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
com o 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 ver uma lista de locais compatíveis, execute o comandogcloud 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 esse repositório remoto.USERNAME
opcionalmente, se você estiver usando a 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 que contém 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 maneira semelhante a esta:projects/UPSTREAM_PROJECT_ID/locations/REGION/repositories/UPSTREAM_REPOSITORY
.
Para informações sobre os upstream predefinidos disponíveis e os upstream definidos pelo usuário compatíveis, consulte Formatos compatíveis.--disable-vulnerability-scanning
: é uma flag opcional que configura seu repositório para desativar a verificação automática de vulnerabilidades.--allow-vulnerability-scanning
: é uma flag opcional que configura seu 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 autenticar 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 autenticar repositórios upstream do Docker Hub, consulte Configurar a autenticação de repositório remoto para o 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
com o 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 ver uma lista de locais compatíveis, execute o comandogcloud 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 esse repositório remoto.USERNAME
opcionalmente, se você estiver usando a 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 que contém 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 maneira semelhante a esta:projects/UPSTREAM_PROJECT_ID/locations/REGION/repositories/UPSTREAM_REPOSITORY
.
Para informações sobre os upstream predefinidos disponíveis e os upstream definidos pelo usuário compatíveis, consulte Formatos compatíveis.--disable-vulnerability-scanning
: é uma flag opcional que configura seu repositório para desativar a verificação automática de vulnerabilidades.--allow-vulnerability-scanning
: é uma flag opcional que configura seu 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 autenticar 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
com o 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 ver uma lista de locais compatíveis, execute o comandogcloud 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 esse repositório remoto.USERNAME
opcionalmente, se você estiver usando a 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 que contém 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 maneira semelhante a esta:projects/UPSTREAM_PROJECT_ID/locations/REGION/repositories/UPSTREAM_REPOSITORY
.
Para informações sobre os upstream predefinidos disponíveis e os upstream definidos pelo usuário compatíveis, consulte Formatos compatíveis.--disable-vulnerability-scanning
: é uma flag opcional que configura seu repositório para desativar a verificação automática de vulnerabilidades.--allow-vulnerability-scanning
: é uma flag opcional que configura seu 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 autenticar 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
com o 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 ver uma lista de locais compatíveis, execute o comandogcloud 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 esse repositório remoto.USERNAME
opcionalmente, se você estiver usando a 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 que contém 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 maneira semelhante a esta:projects/UPSTREAM_PROJECT_ID/locations/REGION/repositories/UPSTREAM_REPOSITORY
.
Para informações sobre os upstream predefinidos disponíveis e os upstream definidos pelo usuário compatíveis, consulte Formatos compatíveis.--disable-vulnerability-scanning
: é uma flag opcional que configura seu repositório para desativar a verificação automática de vulnerabilidades.--allow-vulnerability-scanning
: é uma flag opcional que configura seu 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 autenticar 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évia)
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
com o 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 ver uma lista de locais compatíveis, execute o comandogcloud artifacts locations list
.DESCRIPTION
com uma descrição opcional do repositório. Não inclua dados sensíveis, já que as descrições de repositórios não são criptografadas.REMOTE_REPOSITORY_DESCRIPTION
com uma descrição opcional da configuração do repositório externo para esse repositório remoto.APT_REPOSITORY_BASE
com um dos nomes base de repositório compatíveis listados em Upstreams compatíveis com pacotes 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 Google Cloud 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évia)
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
com o 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 ver uma lista de locais compatíveis, execute o comandogcloud artifacts locations list
.DESCRIPTION
com uma descrição opcional do repositório. Não inclua dados sensíveis, já que as descrições de repositórios não são criptografadas.REMOTE_REPOSITORY_DESCRIPTION
com uma descrição opcional da configuração do repositório externo para esse repositório remoto.YUM_REPOSITORY_BASE
com um dos nomes de base de repositório compatíveis listados em Upstreams compatíveis com pacotes do SO 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 projeto 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"
Go
Os repositórios remotos do Go do Artifact Registry só são compatíveis com o https://proxy.golang
público upstream.
gcloud artifacts repositories create REMOTE-REPOSITORY-NAME \
--project=PROJECT_ID \
--repository-format=go \
--location=LOCATION \
--description="DESCRIPTION" \
--mode=remote-repository \
--remote-repo-config-desc="REMOTE-REPOSITORY-DESCRIPTION" \
--remote-go-repo=https://proxy.golang.org
Substitua:
REMOTE-REPOSITORY-NAME
é o nome do repositório. Para cada local de repositório em um projeto, os nomes dos repositórios precisam ser exclusivos.PROJECT_ID
é o ID do projeto. Se essa sinalização for omitida, o projeto atual ou padrão será usado.LOCATION
é o local regional ou multirregional do repositório. É possível omitir essa sinalização se você definir um padrão. Para ver uma lista de locais compatíveis, execute o comandogcloud artifacts locations list
.DESCRIPTION
é 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
é uma descrição da configuração do repositório externo para este repositório remoto.
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
.
gcloud artifacts repositories create my-repo \
--project=my-project \
--repository-format=go \
--location=us-east1 \
--description="Remote Go repository" \
--mode=remote-repository \
--remote-repo-config-desc="Go proxy" \
--remote-go-repo=https://proxy.golang.org
O Artifact Registry cria o repositório. Execute o comando a seguir para ver uma descrição do repositório:
gcloud artifacts repositories describe REMOTE_REPOSITORY_NAME \
--location=LOCATION
Terraform
Use o recurso google_artifact_registry_repository
para criar repositórios.
A versão 5.0.0
ou mais recente do terraform-provider-google
é 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 do recurso 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 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 de repositórios 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) 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 origem remota.DRY_RUN_STATUS
determina se as políticas de limpeza excluem artefatos ou apenas registram 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 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 a que a política será aplicada. Os valores sãotagged
,untagged
eany
.any
se aplica a artefatos marcados e não marcados. Se um repositório tiver tags imutáveis ativadas, não será possível excluir artefatos marcados.TAG_PREFIX
eTAG_PREFIX_N
são prefixos de tag para aplicar a política.PKG_PREFIX
ePKG_PREFIX_N
são prefixos de pacote para aplicar a política.TIME_SINCE_UPLOAD
é o tempo desde que uma versão de artefato foi enviada ao repositório, especificado como uma duração. Você pode especificar durações de segundos, minutos, horas ou dias adicionandos
,m
,h
oud
, 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 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 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 de repositórios 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) 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 origem remota.DRY_RUN_STATUS
determina se as políticas de limpeza excluem artefatos ou apenas registram 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 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 a que a política será aplicada. Os valores sãotagged
,untagged
eany
.any
se aplica a artefatos marcados e não marcados. Se um repositório tiver tags imutáveis ativadas, não será possível excluir artefatos marcados.TAG_PREFIX
eTAG_PREFIX_N
são prefixos de tag para aplicar a política.PKG_PREFIX
ePKG_PREFIX_N
são prefixos de pacote para aplicar a política.TIME_SINCE_UPLOAD
é o tempo desde que uma versão de artefato foi enviada ao repositório, especificado como uma duração. Você pode especificar durações de segundos, minutos, horas ou dias adicionandos
,m
,h
oud
, 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 é compatível com as seguintes configurações:
version_policy
define a política de versão com um dos seguintes valores:VERSION_POLICY_UNSPECIFIED
: armazene o snapshot e os pacotes de lançamento. Essa é a configuração padrão.- RELEASE: armazena apenas pacotes de lançamento.
- SNAPSHOT: armazena apenas pacotes de snapshots.
allow_snapshot_overwrites
configura um repositório com uma política de versãoSNAPSHOT
para aceitar snapshots não exclusivos que substituem as versões existentes no repositório.
O exemplo a seguir define um repositório 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 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 de repositórios 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) 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 origem remota.DRY_RUN_STATUS
determina se as políticas de limpeza excluem artefatos ou apenas registram 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 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 a que a política será aplicada. Os valores sãotagged
,untagged
eany
.any
se aplica a artefatos marcados e não marcados. Se um repositório tiver tags imutáveis ativadas, não será possível excluir artefatos marcados.TAG_PREFIX
eTAG_PREFIX_N
são prefixos de tag para aplicar a política.PKG_PREFIX
ePKG_PREFIX_N
são prefixos de pacote para aplicar a política.TIME_SINCE_UPLOAD
é o tempo desde que uma versão de artefato foi enviada ao repositório, especificado como uma duração. Você pode especificar durações de segundos, minutos, horas ou dias adicionandos
,m
,h
oud
, 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 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 de repositórios 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) 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 origem remota.DRY_RUN_STATUS
determina se as políticas de limpeza excluem artefatos ou apenas registram 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 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 a que a política será aplicada. Os valores sãotagged
,untagged
eany
.any
se aplica a artefatos marcados e não marcados. Se um repositório tiver tags imutáveis ativadas, não será possível excluir artefatos marcados.TAG_PREFIX
eTAG_PREFIX_N
são prefixos de tag para aplicar a política.PKG_PREFIX
ePKG_PREFIX_N
são prefixos de pacote para aplicar a política.TIME_SINCE_UPLOAD
é o tempo desde que uma versão de artefato foi enviada ao repositório, especificado como uma duração. Você pode especificar durações de segundos, minutos, horas ou dias adicionandos
,m
,h
oud
, 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 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.
- CONFIG_DESCRIPTION é a descrição opcional da origem remota.
- REPOSITORY_BASE é a base predefinida do repositório público para o Apt.
Os valores possíveis são
DEBIAN
eUBUNTU
. - REPOSITORY_PATH é o repositório específico da base. Por
exemplo
debian/dists/buster
.
Yum (prévia)
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 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.
- CONFIG_DESCRIPTION é a descrição opcional da origem remota.
- REPOSITORY_BASE é a base predefinida do repositório público para o Yum.
Os valores possíveis são
CENTOS
,CENTOS_DEBUG
,CENTOS_VAULT
,CENTOS_STREAM
,ROCKY
eEPEL
. - REPOSITORY_PATH é o repositório específico da base. Por
exemplo
"centos/8-stream/BaseOS/x86_64/os
.
O Artifact Registry cria o repositório. Execute o comando a seguir para ver uma descrição do repositório:
gcloud artifacts repositories describe REPOSITORY \
--location=LOCATION
Depois de criar o repositório:
- Conceda acesso ao repositório.
- Opcional: configure políticas de limpeza para excluir artefatos não utilizados.
- Configure o Docker, gerenciadores de pacotes e outros clientes de terceiros para autenticar em repositórios.
- Configure repositórios remotos do Artifact Registry para autenticar nas fontes upstream deles.
- Imagens de contêineres: Configure a autenticação de repositório remoto no Docker Hub
- Pacotes de idiomas:
- Upstreams personalizados definidos pelo usuário: Configure a autenticação para upstreams de repositório remoto
Editar descrições de repositório
É possível mudar a descrição do repositório no console Google Cloud ou na CLI gcloud.
Console
Abra a página Repositórios no console do Google Cloud .
Na lista de repositórios, selecione o repositório e clique em Editar repositório.
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 esta flag para ver repositórios em um local específico. Se você tiver configurado um local padrão, poderá omitir essa flag para usar o padrão. DESCRIPTION
: uma descrição para o repositório.
Acesso a fontes 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 umGoogle Cloud projeto e local especificados.
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 do Artifact Registry
(roles/artifactregistry.admin
).
Ver configurações de fontes upstream
Para ver 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 ver 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 fontes 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 a seguir para permitir que todos os repositórios remotos em
us-east1
no projeto my-project
acessem as fontes upstream fora
do perímetro:
gcloud artifacts vpcsc-config allow \
--project=my-project \
--location=us-east1
Negar acesso a fontes upstream
Quando você nega o acesso a fontes upstream, os artefatos armazenados em cache nos repositórios remotos ainda ficam 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 a seguir 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
- Crie um repositório remoto do Docker Hub.
- Saiba mais sobre os repositórios remotos do Artifact Registry.
- Configure a autenticação do repositório remoto para o Docker Hub.