Crea repositorios virtuales

En esta página, se describe cómo crear una infraestructura virtual de Artifact Registry de Cloud Storage.

Los repositorios virtuales actúan como un único punto de acceso para descargar, instalar o implementar artefactos en el mismo formato desde uno o más repositorios ascendentes Un repositorio upstream puede ser un repositorio estándar o remoto de Artifact Registry en un repositorio de confianza.

Los otros modos de repositorio son los siguientes:

  • Estándar: Es el modo de repositorio predeterminado. Tú subes o publicas como paquetes privados directamente en los repositorios estándar. Aunque puedes descargar directamente desde repositorios estándar individuales acceder a grupos de repositorios con un repositorio virtual simplifica configuración de herramientas.
  • Remoto (solo repositorios de paquetes de idiomas): Una extracción en caché para artefactos en repositorios públicos como Maven Central o PyPI. Actúa como un proxy de los repositorios públicos para que tengas más control sobre tus dependencias externas.

Para obtener más información sobre el funcionamiento de los repositorios virtuales, consulta la Descripción general del repositorio virtual.

Antes de comenzar

Habilitar Artifact Registry incluida la habilitación de la API de Artifact Registry y instalando la última versión de Google Cloud CLI.

Roles obligatorios

A fin de obtener los permisos que necesitas para administrar repositorios, solicita a tu administrador que te otorgue el los siguientes roles de IAM:

Si quieres obtener más información para otorgar roles, consulta Administra el acceso.

También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.

Si los repositorios upstream se encuentran en otros proyectos, un administrador los proyectos con repositorios ascendentes deben tener permisos para administrar acceso a esos repositorios.

Crea repositorios upstream

Antes de configurar un repositorio virtual, crea los repositorios ascendentes que que quieres que estén disponibles con el repositorio virtual.

  1. Crear los repositorios upstream en el mismo Google Cloud región en la que planeas crear el repositorio virtual.

  2. Los repositorios virtuales usan el agente de servicio de Artifact Registry para autenticarse en repositorios ascendentes. Debes otorgar el servicio tiene acceso de lectura de agente a los repositorios upstream.

    Puedes otorgar el rol de Lector de Artifact Registry a la El agente de servicio de Artifact Registry en el proyecto a nivel de la cuenta para que no tengas que otorgar acceso de Cloud Storage.

    En cada proyecto con repositorios ascendentes, ejecuta el siguiente comando:

    gcloud projects add-iam-policy-binding UPSTREAM_PROJECT_ID \
        --member serviceAccount:service-VIRTUAL-REPO-PROJECT_NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com \
        --role roles/artifactregistry.reader
    

    Dónde

    • UPSTREAM_PROJECT_ID es el ID del proyecto de Google Cloud. con el repositorio upstream.
    • VIRTUAL_REPO_PROJECT_NUMBER es el número de proyecto del proyecto de Google Cloud para tu repositorio virtual.

    Como alternativa, si deseas otorgar un rol con un alcance más limitado al servicio agente, agrega el permiso artifactregistry.repositories.readViaVirtualRepository a un rol personalizado y, luego, le otorgas ese rol al agente de servicio.

    Para obtener más información sobre cómo otorgar permisos, consulta el control de acceso.

Crea un repositorio virtual

Cuando creas un repositorio, debes establecer los siguientes parámetros de configuración que no se pueden cambiar después de crear el repositorio:

  • Formato del artefacto.
  • Modo de repositorio, si hay varios modos disponibles para el formato seleccionado.
  • Ubicación del repositorio.
  • La encriptación con claves que son propiedad de Google o administradas por Google, o claves de encriptación administradas por el cliente. Usos de Artifact Registry Claves de propiedad y administración de Google de forma predeterminada.

Artifact Registry aplica restricciones de las políticas de la organización que requieren CMEK para encriptar recursos o limitar qué Cloud KMS se pueden usar para la protección con CMEK.

Crea un repositorio virtual con la consola de Google Cloud

  1. Abre la página Repositorios en la consola de Google Cloud.

    Abrir la página Repositorios

  2. Haz clic en Crear repositorio.

  3. Especifica el nombre del repositorio. Para la ubicación de cada repositorio en un proyecto, los nombres de los repositorios deben ser únicos.

  4. Selecciona el formato del repositorio.

  5. En Modo de repositorio, selecciona Virtual.

  6. En Virtual Repository Upstreams, haz clic en Add Upstream para agregar. un repositorio upstream.

    • Un repositorio upstream puede ser un repositorio estándar, remoto o virtual.
    • Un repositorio upstream debe estar en la misma ubicación que el pero puede estar en un proyecto de Google Cloud diferente.
    • Un repositorio upstream debe tener el mismo formato de artefacto que el en un repositorio de confianza.

    Especifica una prioridad y un nombre de política para cada ascendente en un repositorio de confianza. Los valores de prioridad más altos tienen prioridad sobre los valores más bajos. Dejar espacio entre los valores de prioridad para que haya flexibilidad para agregar repositorios ascendentes con prioridades que están entre los valores existentes.

  7. En Tipo de ubicación, elige la ubicación para el repositorio:

    1. Elige el tipo de ubicación: Región o Multirregional. La lista de ubicaciones cambia para reflejar tu selección.

    2. En la lista Región o Multirregión, selecciona una ubicación.

    Para obtener información sobre los tipos de ubicación y las ubicaciones admitidas, consulta Ubicaciones de los repositorios

  8. Agrega una descripción para el repositorio. Las descripciones ayudan a Identificar el propósito del repositorio y el tipo de artefactos contiene.

    No incluyas datos sensibles, ya que las descripciones del repositorio sin encriptar.

  9. Si quieres usar etiquetas para organizar tus en repositorios, haz clic en Agregar etiqueta y, luego, ingresa el par clave-valor del etiqueta. Puedes agregar, editar o quitar etiquetas después de crear la en un repositorio de confianza.

  10. En la sección Encriptación, elige el mecanismo de encriptación para del repositorio.

    • Clave administrada por Google: Encripta el contenido del repositorio con un Clave de Google y administrada por Google.
    • Clave administrada por el cliente: Encripta el contenido de un repositorio mediante una clave que controlas a través de Cloud Key Management Service. Si deseas obtener instrucciones para la configuración de claves, consulta Configura CMEK para repositorios.
  11. Haz clic en Crear.

Artifact Registry crea el repositorio y lo agrega a la lista de de Cloud Storage.

Después de crear el repositorio, sigue estos pasos:

Crea un repositorio virtual con gcloud CLI

Para crear un repositorio virtual, define tus repositorios ascendentes en un de políticas y, luego, crea el repositorio con el archivo de políticas.

  1. Crea un archivo de política upstream en formato JSON con la siguiente configuración:

    [{
    "id" : "POLICY_ID",
    "repository" : "UPSTREAM_REPOSITORY_RESOURCE_NAME",
    "priority" : PRIORITY
    }, {...}]
    
    • POLICY_ID es un nombre para la política. Cada plataforma de la política debe tener un ID de política único.
    • UPSTREAM_REPO_RESOURCE_NAME es el nombre del flujo de trabajo upstream. en el siguiente formato:

      projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY
      
      • Un repositorio upstream puede ser un repositorio estándar, remoto o virtual.
      • Un repositorio upstream debe estar en la misma ubicación que el pero puede estar en un proyecto de Google Cloud diferente.
      • Un repositorio upstream debe tener el mismo formato de artefacto que el en un repositorio de confianza.
    • PRIORITY es un número entero que indica la prioridad para el repositorio upstream. Prioridad más alta tienen prioridad sobre los más bajos.

    En el siguiente ejemplo, se muestra un archivo de políticas llamado policies.json con cuatro repositorios ascendentes. upstream1 tiene el valor más alto para priority, por lo que Artifact Registry buscará primero. upstream-test tiene el el valor de priority más bajo, por lo que Artifact Registry buscará el último lugar. upstream2 y upstream3 tienen la misma prioridad. Si Artifact Registry busca un paquete solicitado en repositorios con el con la misma prioridad, puede entregar el paquete desde cualquier repositorio.

    [{
    "id" : "upstream1",
    "repository" : "projects/myproject/locations/us-west1/repositories/python-repo1",
    "priority" : 100
    }, {
    "id" : "upstream2",
    "repository" : "projects/myproject/locations/us-west1/repositories/python-repo2",
    "priority" : 80
    }, {
    "id" : "upstream3",
    "repository" : "projects/myproject/locations/us-west1/repositories/python-repo2",
    "priority" : 80
    }, {
    "id" : "upstream-test",
    "repository" : "projects/myproject/locations/us-west1/repositories/python-test-repo",
    "priority" : 20
    }]
    

    En este ejemplo, también se deja espacio entre los valores de prioridad. Estas brechas brindar flexibilidad para agregar repositorios ascendentes con prioridades que se entre los valores existentes. Por ejemplo, puedes agregar un elemento upstream-3. repositorio con una prioridad de 70 para que Artifact Registry busque antes del upstream-test.

    Considera almacenar tu archivo de política upstream en tu sistema de control de origen que puedes reutilizar más tarde para hacer cambios en la configuración del repositorio upstream y hacer un seguimiento de los cambios históricos.

  2. En el directorio con tu archivo de políticas upstream, ejecuta el siguiente comando: para crear el repositorio virtual:

    gcloud artifacts repositories create VIRTUAL-REPOSITORY-NAME \
        --project=PROJECT_ID \
        --repository-format=FORMAT \
        --mode=virtual-repository \
        --location=LOCATION \
        --description="DESCRIPTION" \
        --upstream-policy-file=UPSTREAM_POLICY_FILE
    

    Reemplaza lo siguiente:

    • VIRTUAL-REPOSITORY-NAME es el nombre de la interfaz en un repositorio de confianza.
    • PROJECT_ID es el ID del proyecto en el que te encuentras. crear el repositorio virtual. Si se omite esta marca, se usa el proyecto actual o predeterminado.
    • FORMAT es el formato del repositorio. Lo siguiente valores disponibles:
      • apt (vista previa privada)
      • docker
      • maven
      • npm
      • python
      • yum (vista previa privada)
    • LOCATION es la ubicación regional o multirregional del repositorio. Puedes omitir esta marca si estableces un valor predeterminado. Para ver una lista de las ubicaciones compatibles, ejecuta el siguiente comando:

      gcloud artifacts locations list
      
    • DESCRIPTION es una descripción opcional del repositorio. No incluyas datos sensibles, ya que las descripciones del repositorio están encriptados.

    • UPSTREAM_POLICY_FILE es una ruta de acceso a la política upstream .

    Por ejemplo, el siguiente comando crea un repositorio virtual llamado virtual-repo para paquetes de Python en la región us-west1 con la configuración en policies.json.

    gcloud artifacts repositories create virtual-repo \
    --repository-format=python \
    --mode=virtual-repository \
    --location=us-west1 \
    --description="Python virtual repository" \
    --upstream-policy-file=policies.json
    

Artifact Registry crea el repositorio virtual.

Crea un repositorio virtual con Terraform

Usa el recurso google_artifact_registry_repository. para crear repositorios. Versión de terraform-provider-google Se requiere 5.0.0 o una versión posterior.

Si es la primera vez que usas Terraform para Google Cloud, consulta el Get Started - Google Cloud en la Sitio web de HashiCorp.

En el siguiente ejemplo, se define el proveedor, un repositorio virtual con el El nombre de recurso de Terraform my-repo y un repositorio upstream con el archivo el nombre del recurso my-repo-upstream.

Docker

provider "google" {
    project = "PROJECT-ID"
}
resource "google_artifact_registry_repository" "my-repo-upstream" {
  location      = "UPSTREAM_LOCATION"
  repository_id = "UPSTREAM_REPOSITORY_ID"
  description   = "UPSTREAM_REPOSITORY_DESCRIPTION"
  format        = "docker"
}

resource "google_artifact_registry_repository" "my-repo" {
  depends_on    = []
  location      = "LOCATION"
  repository_id = "REPOSITORY_ID"
  description   = "VIRTUAL_REPOSITORY_DESCRIPTION"
  format        = "docker"
  kms_key_name = "KEY"
  mode          = "VIRTUAL_REPOSITORY"
  virtual_repository_config {
    upstream_policies {
      id          = "UPSTREAM_REPOSITORY_ID"
      repository  = google_artifact_registry_repository.my-repo-upstream.id
      priority    = PRIORITY
    }
  }
}

Dónde

  • PROJECT-ID es el ID del proyecto de Google Cloud.
  • UPSTREAM_LOCATION es la ubicación del repositorio upstream. Ten en cuenta que repositorio virtual y ascendente deben estar en la misma región o multirregionales.
  • UPSTREAM_REPOSITORY_ID es el ID del repositorio upstream.
  • UPSTREAM_REPOSITORY_DESCRIPTION es la descripción opcional. del repositorio upstream.
  • LOCATION es la ubicación del repositorio virtual.
  • REPOSITORY_ID es el ID del repositorio virtual.
  • DESCRIPTION es la descripción opcional de la clase en un repositorio de confianza. No incluyas datos sensibles, ya que las descripciones no están encriptados.
  • KEY es el nombre de la clave de Cloud Key Management Service, si usas claves de encriptación administradas por el cliente (CMEK) para la encriptación. Omitir este argumento para usar la configuración predeterminada, las claves de propiedad y las administradas por Google.
  • PRIORITY es el valor de prioridad opcional. La prioridad más alta es 1. Las entradas con un mayor valor de prioridad tienen prioridad en la extracción en el orden personalizado.

Maven

Si no especificas una política de versiones, Artifact Registry crea un repositorio de Maven que almacena versiones de instantáneas y actualizaciones de los paquetes de forma predeterminada

provider "google" {
    project = "PROJECT-ID"
}
resource "google_artifact_registry_repository" "my-repo-upstream" {
  location      = "UPSTREAM_LOCATION"
  repository_id = "UPSTREAM_REPOSITORY_ID"
  description   = "UPSTREAM_REPOSITORY_DESCRIPTION"
  format        = "maven"
}

resource "google_artifact_registry_repository" "my-repo" {
  depends_on    = []
  location      = "LOCATION"
  repository_id = "REPOSITORY_ID"
  description   = "VIRTUAL_REPOSITORY_DESCRIPTION"
  format        = "maven"
  kms_key_name = "KEY"
  mode          = "VIRTUAL_REPOSITORY"
  virtual_repository_config {
    upstream_policies {
      id          = "UPSTREAM_REPOSITORY_ID"
      repository  = google_artifact_registry_repository.my-repo-upstream.id
      priority    = PRIORITY
    }
  }
}

Dónde

  • PROJECT-ID es el ID del proyecto de Google Cloud.
  • UPSTREAM_LOCATION es la ubicación del repositorio upstream. Ten en cuenta que repositorio virtual y ascendente deben estar en la misma región o multirregionales.
  • UPSTREAM_REPOSITORY_ID es el ID del repositorio upstream.
  • UPSTREAM_REPOSITORY_DESCRIPTION es la descripción opcional. del repositorio upstream.
  • LOCATION es la ubicación del repositorio virtual.
  • REPOSITORY_ID es el ID del repositorio virtual.
  • DESCRIPTION es la descripción opcional de la clase en un repositorio de confianza. No incluyas datos sensibles, ya que las descripciones no están encriptados.
  • KEY es el nombre de la clave de Cloud Key Management Service, si usas claves de encriptación administradas por el cliente (CMEK) para la encriptación. Omitir este argumento para usar la configuración predeterminada, las claves de propiedad y las administradas por Google.
  • PRIORITY es el valor de prioridad opcional. La prioridad más alta es 1. Las entradas con un mayor valor de prioridad tienen prioridad en la extracción en el orden personalizado.

Para almacenar versiones de instantáneas y actualizaciones en diferentes de Cloud, especificar una política de la versión con un bloque maven_config. Este bloque admite el los siguientes parámetros de configuración:

  • version_policy establece la política de la versión con uno de los siguientes valores:
    • VERSION_POLICY_UNSPECIFIED: Almacena paquetes de instantáneas y actualizaciones. Esta es el parámetro de configuración predeterminado.
    • LANZAMIENTO: Almacena solo paquetes de lanzamiento.
    • SNAPSHOT: Almacena solo paquetes de instantáneas.
  • allow_snapshot_overwrites configura un repositorio con un SNAPSHOT. política de la versión para aceptar instantáneas que no son únicas y que reemplazan las existentes en el repositorio.

En el siguiente ejemplo, se define un repositorio de Maven con una versión de actualización .

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

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

location = "us-central1"
repository_id = "my-repo"
description = "Maven repository"
format = "MAVEN"
maven_config {
  version_policy = "RELEASE"
}
}

npm

provider "google" {
    project = "PROJECT-ID"
}
resource "google_artifact_registry_repository" "my-repo-upstream" {
  location      = "UPSTREAM_LOCATION"
  repository_id = "UPSTREAM_REPOSITORY_ID"
  description   = "UPSTREAM_REPOSITORY_DESCRIPTION"
  format        = "npm"
}

resource "google_artifact_registry_repository" "my-repo" {
  depends_on    = []
  location      = "LOCATION"
  repository_id = "REPOSITORY_ID"
  description   = "VIRTUAL_REPOSITORY_DESCRIPTION"
  format        = "npm"
  kms_key_name = "KEY"
  mode          = "VIRTUAL_REPOSITORY"
  virtual_repository_config {
    upstream_policies {
      id          = "UPSTREAM_REPOSITORY_ID"
      repository  = google_artifact_registry_repository.my-repo-upstream.id
      priority    = PRIORITY
    }
  }
}

Dónde

  • PROJECT-ID es el ID del proyecto de Google Cloud.
  • UPSTREAM_LOCATION es la ubicación del repositorio upstream. Ten en cuenta que repositorio virtual y ascendente deben estar en la misma región o multirregionales.
  • UPSTREAM_REPOSITORY_ID es el ID del repositorio upstream.
  • UPSTREAM_REPOSITORY_DESCRIPTION es la descripción opcional. del repositorio upstream.
  • LOCATION es la ubicación del repositorio virtual.
  • REPOSITORY_ID es el ID del repositorio virtual.
  • DESCRIPTION es la descripción opcional de la clase en un repositorio de confianza. No incluyas datos sensibles, ya que las descripciones no están encriptados.
  • KEY es el nombre de la clave de Cloud Key Management Service, si usas claves de encriptación administradas por el cliente (CMEK) para la encriptación. Omitir este argumento para usar la configuración predeterminada, las claves de propiedad y las administradas por Google.
  • PRIORITY es el valor de prioridad opcional. La prioridad más alta es 1. Las entradas con un mayor valor de prioridad tienen prioridad en la extracción en el orden personalizado.

Python

provider "google" {
    project = "PROJECT-ID"
}
resource "google_artifact_registry_repository" "my-repo-upstream" {
  location      = "UPSTREAM_LOCATION"
  repository_id = "UPSTREAM_REPOSITORY_ID"
  description   = "UPSTREAM_REPOSITORY_DESCRIPTION"
  format        = "python"
}

resource "google_artifact_registry_repository" "my-repo" {
  depends_on    = []
  location      = "LOCATION"
  repository_id = "REPOSITORY_ID"
  description   = "VIRTUAL_REPOSITORY_DESCRIPTION"
  format        = "python"
  kms_key_name = "KEY"
  mode          = "VIRTUAL_REPOSITORY"
  virtual_repository_config {
    upstream_policies {
      id          = "UPSTREAM_REPOSITORY_ID"
      repository  = google_artifact_registry_repository.my-repo-upstream.id
      priority    = PRIORITY
    }
  }
}

Dónde

  • PROJECT-ID es el ID del proyecto de Google Cloud.
  • UPSTREAM_LOCATION es la ubicación del repositorio upstream. Ten en cuenta que repositorio virtual y ascendente deben estar en la misma región o multirregionales.
  • UPSTREAM_REPOSITORY_ID es el ID del repositorio upstream.
  • UPSTREAM_REPOSITORY_DESCRIPTION es la descripción opcional. del repositorio upstream.
  • LOCATION es la ubicación del repositorio virtual.
  • REPOSITORY_ID es el ID del repositorio virtual.
  • DESCRIPTION es la descripción opcional de la clase en un repositorio de confianza. No incluyas datos sensibles, ya que las descripciones no están encriptados.
  • KEY es el nombre de la clave de Cloud Key Management Service, si usas claves de encriptación administradas por el cliente (CMEK) para la encriptación. Omitir este argumento para usar la configuración predeterminada, las claves de propiedad y las administradas por Google.
  • PRIORITY es el valor de prioridad opcional. La prioridad más alta es 1. Las entradas con un mayor valor de prioridad tienen prioridad en la extracción en el orden personalizado.

Artifact Registry crea el repositorio. Ejecuta el siguiente comando para visualizar una descripción del repositorio:

gcloud artifacts repositories describe REPOSITORY \
    --location=LOCATION

Después de crear el repositorio, sigue estos pasos:

Actualizar repositorios upstream

Puedes cambiar la lista de repositorios ascendentes o ajustar la prioridad de repositorios ascendentes.

Console

  1. Abre la página Repositorios en la consola de Google Cloud.

    Abrir la página Repositorios

  2. En la lista de repositorios, selecciona el repositorio virtual y haz clic Edita el repositorio.

  3. En la lista Virtual Repository Upstream, realiza los cambios necesarios. Puedes agregar y quitar repositorios o cambiar la prioridad repositorios en la lista

  4. Haz clic en Guardar.

gcloud

  1. Edita el archivo de políticas upstream con tus cambios. Por ejemplo, podrías agregar un repositorio upstream o ajustar la configuración de prioridad.

    Si deseas quitar todos los repositorios ascendentes, tu archivo de política debe que contienen un conjunto vacío de repositorios.

    []
    
  2. Ejecuta el siguiente comando para aplicar los cambios al repositorio virtual.

    gcloud artifacts repositories update REPOSITORY \
        --upstream-policy-file=UPSTREAM_POLICY_FILE
    

    Reemplaza UPSTREAM_POLICY_FILE por la ruta de acceso a la ruta ascendente. archivo de políticas.

    Para obtener más información sobre el comando, consulta la Referencia de gcloud artifacts repositorys update en la documentación de Google Cloud.

Edita las descripciones del repositorio

Puedes cambiar la descripción del repositorio desde la consola de Google Cloud gcloud CLI.

Console

  1. Abre la página Repositorios en la consola de Google Cloud.

    Abrir la página Repositorios

  2. En la lista de repositorios, selecciona el repositorio y haz clic en Edita el repositorio.

  3. Edita la descripción del repositorio y, luego, haz clic en Guardar.

gcloud

Para actualizar la descripción del repositorio, ejecuta el siguiente comando:

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

Reemplaza lo siguiente:

  • REPOSITORY: Es el nombre del repositorio. Si configuraste un repositorio predeterminado, puedes omitir esta marca para usarlo.
  • PROJECT: el ID del proyecto de Google Cloud. Si se omite esta marca, se usa el proyecto actual o predeterminado.
  • LOCATION: un regional o multirregional ubicación. Usa esta marca para ver los repositorios en una ubicación específica. Si configuraste una ubicación predeterminada puedes omitir esta marca para usar el valor predeterminado.
  • DESCRIPTION: Es una descripción para el repositorio.