Criar repositórios remotos

Nesta página, descrevemos como criar repositórios remotos do Artifact Registry.

Os repositórios remotos armazenam artefatos de fontes externas predefinidas, como Docker Hub, Maven Central, o Python Package Index (PyPI), Debian ou CentOS como bem como fontes definidas pelo usuário para formatos compatíveis. Um repositório remoto atua como um proxy para a fonte externa, assim você tem mais controle sobre as dependências externas. Na primeira vez que você solicita de um pacote, o Artifact Registry faz o download e armazena em cache o pacote no repositório remoto. Da próxima vez que você solicitar a mesma versão do pacote, o Artifact Registry vai disponibilizar a cópia em cache.

Os outros modos de repositório são:

  • Padrão: é o modo de repositório padrão. Você envia ou publica artefatos como pacotes particulares diretamente nos repositórios padrão. É 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 configuração da ferramenta.
  • Virtual: um repositório que funciona como um único acesso para vários repositórios upstream, incluindo repositórios remotos e padrão repositórios.

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 ativar a API Artifact Registry e instalar a Google Cloud CLI.
  2. Opcional: configure padrões para os comandos da CLI gcloud.
  3. Se você precisar que chaves de criptografia gerenciadas pelo cliente (CMEK) criptografar o conteúdo do repositório, criar e ativar uma chave no Cloud KMS para o repositório.
  4. Se você quiser se autenticar em um repositório upstream, ative o 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, ativar a API Access Context Manager se ela ainda não estiver ativada.

    gcloud services enable accesscontextmanager.googleapis.com \
        --project=PROJECT_ID
    

Funções exigidas

Para receber 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 origens 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 como conceder papéis, consulte Gerenciar acesso.

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

Criar um repositório remoto

Ao criar um repositório remoto, defina as seguintes configurações: que não pode ser alterado após a criação do repositório:

  • Formato do artefato.
  • Modo de repositório definido como remoto.
  • Predefinição do repositório remoto ou origem upstream definida pelo usuário.
  • Local do repositório.
  • criptografia com chaves de propriedade e gerenciadas pelo Google; ou chaves de criptografia gerenciadas pelo cliente. O Artifact Registry usa Chaves de criptografia de propriedade e gerenciadas pelo Google por padrão.

O Artifact Registry aplica restrições de políticas da organização que precisam da CMEK para criptografar recursos ou limitar podem ser usadas para proteção da CMEK.

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

  1. Abra a página Repositórios no console do 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 o predefinir upstream ou Custom se quiser usar um URL definido pelo usuário para o upstream.

  7. Opcional. Se você estiver usando um upstream personalizado, acesse o Repositório personalizado. , insira o URL do repositório personalizado. O URL não pode ser alterado após o repositório é criado.

  8. No Modo de autenticação do repositório remoto, escolha uma das seguintes opções:

    • Authenticated: para inserir o nome de usuário e o secret para autenticação para o repositório upstream.
    • Não autenticado: para pular a autenticação para o repositório upstream.
  9. Opcional. Se você selecionou Autenticado, digite o seguinte:

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

    É possível editar esses valores depois de criar o repositório. Para mais informações sobre autenticação para upstream de repositório remoto, consulte Configurar a autenticação para upstreams de repositório remoto.

  10. 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 os tipos de locais e os locais compatíveis, consulte Locais do repositório

  11. 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 confidenciais, já que as descrições do repositório são e não criptografados.

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

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

    • Chave gerenciada pelo Google: criptografe o conteúdo do repositório com uma Chave de propriedade e gerenciada pelo Google.
    • 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.
  14. Se você quiser usar políticas de limpeza para excluir artefatos não utilizados, na Seção Políticas de limpeza:

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

      • Exclusão condicional: exclui artefatos com base nas condições que você a definição.
      • Manutenção condicional: mantém os 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.

  15. 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 de repositório 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" \
    --remote-username=USERNAME \
    --remote-password-secret-version=SECRET_VERSION \
    --remote-docker-repo=UPSTREAM

Substitua:

  • REMOTE-REPOSITORY-NAME pelo nome do repositório. Para 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 modelo regional ou multirregional location do repositório. É possível omitir essa sinalização se você definir um padrão. Para ver 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 criptografados.

  • REMOTE-REPOSITORY-DESCRIPTION com uma descrição para a 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, pela versão do secret que contém a senha do repositório upstream.

  • UPSTREAM pelo nome predefinido ou URL definido pelo usuário do repositório upstream. Para mais informações sobre upstreams predefinidos disponíveis e upstream compatíveis definidos pelo usuário, consulte Formatos compatíveis.

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 se autenticar no repositório upstream usando o nome de usuário my-username e versão do secret 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 a autenticação em repositórios upstream do Docker Hub, ver Configure a autenticação do 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" \
    --remote-username=USERNAME \
    --remote-password-secret-version=SECRET_VERSION \
    --remote-mvn-repo=UPSTREAM

Substitua:

  • REMOTE-REPOSITORY-NAME pelo nome do repositório. Para 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 modelo regional ou multirregional location do repositório. É possível omitir essa sinalização se você definir um padrão. Para ver 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 criptografados.

  • REMOTE-REPOSITORY-DESCRIPTION com uma descrição para a 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, pela versão do secret que contém a senha do repositório upstream.

  • UPSTREAM pelo nome predefinido ou URL definido pelo usuário do repositório upstream. Para mais informações sobre upstreams predefinidos disponíveis e upstream compatíveis definidos pelo usuário, consulte Formatos compatíveis.

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 se autenticar no repositório upstream usando o nome de usuário my-username e versão do secret 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" \
    --remote-username=USERNAME \
    --remote-password-secret-version=SECRET_VERSION \
    --remote-npm-repo=UPSTREAM

Substitua:

  • REMOTE-REPOSITORY-NAME pelo nome do repositório. Para 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 modelo regional ou multirregional location do repositório. É possível omitir essa sinalização se você definir um padrão. Para ver 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 criptografados.

  • REMOTE-REPOSITORY-DESCRIPTION com uma descrição para a 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, pela versão do secret que contém a senha do repositório upstream.

  • UPSTREAM pelo nome predefinido ou URL definido pelo usuário do repositório upstream. Para mais informações sobre upstreams predefinidos disponíveis e upstream compatíveis definidos pelo usuário, consulte Formatos compatíveis.

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 se autenticar no repositório upstream usando o nome de usuário my-username e versão do secret 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" \
    --remote-username=USERNAME \
    --remote-password-secret-version=SECRET_VERSION \
    --remote-python-repo=UPSTREAM

Substitua:

  • REMOTE-REPOSITORY-NAME pelo nome do repositório. Para 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 modelo regional ou multirregional location do repositório. É possível omitir essa sinalização se você definir um padrão. Para ver 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 criptografados.

  • REMOTE-REPOSITORY-DESCRIPTION com uma descrição para a 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, pela versão do secret que contém a senha do repositório upstream.

  • UPSTREAM pelo nome predefinido ou URL definido pelo usuário do repositório upstream. Para mais informações sobre upstreams predefinidos disponíveis e upstream compatíveis definidos pelo usuário, consulte Formatos compatíveis.

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 se autenticar no repositório upstream usando o nome de usuário my-username e versão do secret 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 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 modelo regional ou multirregional location do repositório. É possível omitir essa sinalização se você definir um padrão. Para ver 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 confidenciais, pois as descrições do repositório não são criptografados.
  • REMOTE_REPOSITORY_DESCRIPTION com uma descrição opcional para a configuração do repositório externo para este repositório remoto.
  • APT_REPOSITORY_BASE por um dos repositórios compatíveis de base listados na Pacotes do SO compatíveis com upstream para o Apt remoto repositórios.
  • APT_REPOSITORY_PATH pelo restante do URL do repositório upstream que você quer armazenar em cache no repositório remoto depois na 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 do Debian buster na região us-east1 em o projeto my-project do Google Cloud. O URL completo do upstream repositório é 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 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 modelo regional ou multirregional location do repositório. É possível omitir essa sinalização se você definir um padrão. Para ver 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 confidenciais, pois as descrições do repositório não são criptografados.
  • REMOTE_REPOSITORY_DESCRIPTION com uma descrição opcional para a configuração do repositório externo para este repositório remoto.
  • YUM_REPOSITORY_BASE por um dos repositórios compatíveis de base listados na Envios upstream compatíveis com o pacote do SO para o Yum remoto repositórios.
  • YUM_REPOSITORY_PATH pelo restante do URL do repositório upstream que você quer armazenar em cache no repositório remoto depois na base do repositório.

Por exemplo, o comando a seguir cria um repositório remoto para pacotes do Yum. chamada my-repo na região us-east1 no projeto do Google Cloud my-project para o repositório upstream centos/8-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 \
    --remote-yum-repo-path="centos/8-stream/BaseOs/x86_64/os"

O Artifact Registry cria seu repositório. Execute o comando a seguir para visualizar 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

Usar o recurso google_artifact_registry_repository para criar repositórios. Versão do terraform-provider-google 5.0.0 ou mais recente é obrigatório.

Se você nunca usou o Terraform para Google Cloud, consulte a página Vamos começar - Google Cloud na site da HashiCorp.

O exemplo a seguir define o provedor e um repositório remoto com o Nome do 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 confidenciais, pois as descrições do repositório são e não criptografados.
  • 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 do controle remoto fonte.
  • DRY_RUN_STATUS determina se as políticas de limpeza são excluídas ou só registrar quais artefatos seriam excluídos se a de limpeza de dados no repositório. Omita se não quiser adicionar de limpeza de dados ao repositório. * true: define as políticas para serem executadas no modo de teste. Nenhum artefato foi excluída no modo de teste. * false: aplica as políticas de limpeza. Os artefatos são excluídos ou mantidos de acordo com as 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 em que a política será aplicada. Valores são tagged, untagged e any. any se aplica às tags e artefatos sem tag. Se um repositório tiver tags imutáveis ativadas, com tags artefatos não podem ser excluídos.
    • TAG_PREFIX, TAG_PREFIX_N são prefixos de tag de aplicar a política.
    • PKG_PREFIX, PKG_PREFIX_N são prefixos de pacote aplicar a política.
    • TIME_SINCE_UPLOAD é o tempo desde uma versão de artefato foi enviado ao 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 para manter no seu repositório.

Maven

Se você não especificar uma política de versão, o Artifact Registry cria 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 confidenciais, pois as descrições do repositório são e não criptografados.
  • 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 do controle remoto fonte.
  • DRY_RUN_STATUS determina se as políticas de limpeza são excluídas ou só registrar quais artefatos seriam excluídos se a de limpeza de dados no repositório. Omita se não quiser adicionar de limpeza de dados ao repositório. * true: define as políticas para serem executadas no modo de teste. Nenhum artefato foi excluída no modo de teste. * false: aplica as políticas de limpeza. Os artefatos são excluídos ou mantidos de acordo com as 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 em que a política será aplicada. Valores são tagged, untagged e any. any se aplica às tags e artefatos sem tag. Se um repositório tiver tags imutáveis ativadas, com tags artefatos não podem ser excluídos.
    • TAG_PREFIX, TAG_PREFIX_N são prefixos de tag de aplicar a política.
    • PKG_PREFIX, PKG_PREFIX_N são prefixos de pacote aplicar a política.
    • TIME_SINCE_UPLOAD é o tempo desde uma versão de artefato foi enviado ao 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 para manter no seu repositório.

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

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

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

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 confidenciais, pois as descrições do repositório são e não criptografados.
  • 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 do controle remoto fonte.
  • DRY_RUN_STATUS determina se as políticas de limpeza são excluídas ou só registrar quais artefatos seriam excluídos se a de limpeza de dados no repositório. Omita se não quiser adicionar de limpeza de dados ao repositório. * true: define as políticas para serem executadas no modo de teste. Nenhum artefato foi excluída no modo de teste. * false: aplica as políticas de limpeza. Os artefatos são excluídos ou mantidos de acordo com as 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 em que a política será aplicada. Valores são tagged, untagged e any. any se aplica às tags e artefatos sem tag. Se um repositório tiver tags imutáveis ativadas, com tags artefatos não podem ser excluídos.
    • TAG_PREFIX, TAG_PREFIX_N são prefixos de tag de aplicar a política.
    • PKG_PREFIX, PKG_PREFIX_N são prefixos de pacote aplicar a política.
    • TIME_SINCE_UPLOAD é o tempo desde uma versão de artefato foi enviado ao 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 para manter no seu 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 confidenciais, pois as descrições do repositório são e não criptografados.
  • 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 do controle remoto fonte.
  • DRY_RUN_STATUS determina se as políticas de limpeza são excluídas ou só registrar quais artefatos seriam excluídos se a de limpeza de dados no repositório. Omita se não quiser adicionar de limpeza de dados ao repositório. * true: define as políticas para serem executadas no modo de teste. Nenhum artefato foi excluída no modo de teste. * false: aplica as políticas de limpeza. Os artefatos são excluídos ou mantidos de acordo com as 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 em que a política será aplicada. Valores são tagged, untagged e any. any se aplica às tags e artefatos sem tag. Se um repositório tiver tags imutáveis ativadas, com tags artefatos não podem ser excluídos.
    • TAG_PREFIX, TAG_PREFIX_N são prefixos de tag de aplicar a política.
    • PKG_PREFIX, PKG_PREFIX_N são prefixos de pacote aplicar a política.
    • TIME_SINCE_UPLOAD é o tempo desde uma versão de artefato foi enviado ao 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 para manter no seu repositório.

Apto (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 do repositório. Não inclua dados confidenciais, já que as descrições do repositório são e não criptografados.
  • CONFIG_DESCRIPTION é a descrição opcional do controle remoto. fonte.
  • REPOSITORY_BASE é a base do repositório público predefinido para 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 do repositório. Não inclua dados confidenciais, já que as descrições do repositório são e não criptografados.
  • CONFIG_DESCRIPTION é a descrição opcional do controle remoto. fonte.
  • REPOSITORY_BASE é a base do repositório público predefinido do 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 visualizar uma descrição do repositório:

gcloud artifacts repositories describe REPOSITORY \
    --location=LOCATION

Depois de criar o repositório:

Editar descrições do repositório

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

Console

  1. Abra a página Repositórios no console do 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, será possível omitir essa sinalização para usar o padrão.
  • PROJECT: o ID do projeto do Google Cloud. Se essa sinalização for omitida, o projeto atual ou padrão será usado.
  • LOCATION: um regional ou multirregional local. Use esta sinalização para ver repositórios em um local específico. Se você configurado um local padrão, omita essa sinalização para usar o padrão.
  • DESCRIPTION: uma descrição para o 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 foram restritos o acesso a recursos fora do perímetro.

É possível permitir ou negar o acesso a origens upstream em um projeto e local do Google Cloud.

Por padrão, o Artifact Registry nega acesso a origens upstream se você não concederam acesso explicitamente.

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

Configurações de visualização para origens 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 origens 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 todos os repositórios remotos em us-east1 no projeto my-project para acessar 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 acesso a fontes upstream, os artefatos armazenados em cache no repositório os repositórios ainda estão disponíveis.

Para negar acesso a origens 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 origens upstream. fora do perímetro para todos os repositórios remotos em us-west1 na projeto my-project:

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

A seguir