Crea repositorios remotos

En esta página, se describe cómo crear repositorios remotos de Artifact Registry.

Los repositorios remotos almacenan artefactos de fuentes externas predeterminadas, como Docker Hub, Maven Central, el índice de paquetes de Python (PyPI), Debian o CentOS como así como fuentes definidas por el usuario para formatos compatibles. R repositorio remoto actúa como un proxy para la fuente externa para que tengas más control sobre tus dependencias externas. La primera vez que solicitas un versión de un paquete, Artifact Registry descarga y almacena en caché el paquete en el repositorio remoto. La próxima vez que la misma versión del paquete, Artifact Registry entrega la copia en caché.

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.
  • Virtual: Un repositorio que actúa como un acceso único punto de acceso para múltiples repositorios ascendentes, incluidas apps remotas y estándar, de Cloud Storage.

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

Antes de comenzar

  1. Habilitar Artifact Registry incluida la habilitación de la API de Artifact Registry y la instalación de Google Cloud CLI.
  2. Configura los valores predeterminados para los comandos de gcloud CLI (opcional).
  3. Si necesitas claves de encriptación administradas por el cliente (CMEK) para encriptar contenido del repositorio, crear y habilitar una clave en Cloud KMS para el repositorio.
  4. Si quieres autenticarte en un repositorio upstream, habilita el API de Secret Manager.

    gcloud services enable secretmanager.googleapis.com \
        --project=PROJECT_ID
    
  5. Si Artifact Registry se encuentra en un perímetro de servicio de Controles del servicio de VPC, habilitar la API de Access Context Manager si aún no está habilitada

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

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:

  • Crea repositorios remotos y otorga acceso a repositorios individuales: Administrador de Artifact Registry (roles/artifactregistry.admin) en el proyecto
  • Guarda tus credenciales de repositorio upstream en una versión del Secret: Administrador de Secret Manager (roles/secretmanager.admin) en el proyecto
  • Otorga acceso a fuentes upstream fuera del perímetro de servicio de los Controles del servicio de VPC: Editor de Access Context Manager (roles/accesscontextmanager.policyEditor) en el proyecto, la carpeta o la organización en la que se aplica la política de acceso

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.

Crea un repositorio remoto

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

  • Formato del artefacto.
  • El modo del repositorio está configurado como remoto.
  • Ajuste predeterminado del repositorio remoto o fuente upstream definida por el usuario.
  • 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 encriptación de propiedad y administradas por 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 remoto 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. En la sección Formato, selecciona el formato del repositorio.

  5. En la sección Modo de repositorio, selecciona Remoto.

  6. En la sección Fuente del repositorio remoto, selecciona el configuración predeterminada o personalizada si quieres usar una y la URL definida por el usuario para el upstream.

  7. Opcional. Si estás usando un flujo ascendente personalizado, ve al Repositorio personalizado ingresa la URL del repositorio personalizado. La URL no se puede cambiar después del de Terraform.

  8. En el Modo de autenticación de repositorio remoto, elige una de las siguientes opciones:

    • Autenticado: Ingresa tu nombre de usuario y secreto para la autenticación. a tu repositorio upstream.
    • Unauthenticated: Se omite la autenticación para el repositorio upstream.
  9. Opcional. Si seleccionaste Autenticado, ingresa lo siguiente:

    • En el campo Nombre de usuario, ingresa tu nombre de usuario para el flujo de en un repositorio de confianza.
    • En el campo Secreto, ingresa la versión del secreto en la que guardaste. para el repositorio upstream.

    Puedes editar estos valores después de crear el repositorio. Para ver más más información sobre la autenticación en repositorios ascendentes para repositorios remotos, consulta Configura la autenticación en versiones ascendentes del repositorio remoto.

  10. En la sección Tipo de ubicación, elige la ubicación del 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

  11. 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.

  12. 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.

  13. 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.
  14. Si quieres usar políticas de limpieza para borrar artefactos sin usar, en el Sección Políticas de limpieza:

    1. Selecciona Ejecución de prueba para probar la política antes de aplicarla.
    2. Haz clic en Agregar política para agregar una política de conservación o eliminación a tu repositorio.
    3. Asigna un nombre descriptivo a la política de limpieza en el campo Nombre.
    4. En la sección Tipo de política, selecciona una de las siguientes opciones:

      • Eliminación condicional: Borra los artefactos según las condiciones que definir.
      • Conservación condicional: Conserva los artefactos en función de las condiciones que defines.
      • Conservar las versiones más recientes: Mantiene una cantidad determinada de versiones más recientes. versiones por paquete.

      Para obtener más detalles sobre las políticas de limpieza, consulta Configura políticas de limpieza.

  15. 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 remoto con gcloud CLI

Para crear un repositorio, ejecuta el comando correspondiente al formato de repositorio adecuado:

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

Reemplaza lo siguiente:

  • REMOTE-REPOSITORY-NAME por el nombre del repositorio Para para cada ubicación de repositorio en un proyecto, los nombres de repositorios deben ser únicos.
  • PROJECT_ID por el ID del proyecto. Si se omite esta marca, se usa el proyecto actual o predeterminado.
  • LOCATION por la configuración regional o multirregional location para el repositorio. Puedes omitir esta marca si estableces un valor predeterminado. Cómo ver una lista de ubicaciones compatibles, ejecuta el comando gcloud artifacts locations list.

  • DESCRIPTION con una descripción opcional del repositorio No incluyas datos sensibles, ya que las descripciones del repositorio están encriptados.

  • REMOTE-REPOSITORY-DESCRIPTION con una descripción de la configuración del repositorio externo para este repositorio remoto.

  • USERNAME (opcional), si usas autenticación, con tu nombre de usuario para autenticarte en el repositorio upstream.

  • De manera opcional, si usas autenticación, puedes usar SECRET_VERSION. con la versión del Secret que contiene la contraseña del repositorio upstream.

  • UPSTREAM por el nombre del ajuste predeterminado o la URL definida por el usuario del elemento repositorio upstream. Para obtener información sobre los flujos ascendentes preestablecidos versiones ascendentes definidas por el usuario compatibles, consulta Formatos admitidos.

Por ejemplo, el siguiente comando crea un repositorio remoto llamado my-repo en la región us-east1 en el proyecto de Google Cloud my-project y puedes autenticarte en el repositorio upstream con el nombre de usuario my-username y versión del secreto 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 obtener más información sobre la autenticación en los repositorios ascendentes de Docker Hub, ver Configura la autenticación del repositorio remoto en 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

Reemplaza lo siguiente:

  • REMOTE-REPOSITORY-NAME por el nombre del repositorio Para para cada ubicación de repositorio en un proyecto, los nombres de repositorios deben ser únicos.
  • PROJECT_ID por el ID del proyecto. Si se omite esta marca, se usa el proyecto actual o predeterminado.
  • LOCATION por la configuración regional o multirregional location para el repositorio. Puedes omitir esta marca si estableces un valor predeterminado. Cómo ver una lista de ubicaciones compatibles, ejecuta el comando gcloud artifacts locations list.

  • DESCRIPTION con una descripción opcional del repositorio No incluyas datos sensibles, ya que las descripciones del repositorio están encriptados.

  • REMOTE-REPOSITORY-DESCRIPTION con una descripción de la configuración del repositorio externo para este repositorio remoto.

  • USERNAME (opcional), si usas autenticación, con tu nombre de usuario para autenticarte en el repositorio upstream.

  • De manera opcional, si usas autenticación, puedes usar SECRET_VERSION. con la versión del Secret que contiene la contraseña del repositorio upstream.

  • UPSTREAM por el nombre del ajuste predeterminado o la URL definida por el usuario del elemento repositorio upstream. Para obtener información sobre los flujos ascendentes preestablecidos versiones ascendentes definidas por el usuario compatibles, consulta Formatos admitidos.

Por ejemplo, el siguiente comando crea un repositorio remoto llamado my-repo en la región us-east1 en el proyecto de Google Cloud my-project y puede autenticarse en el repositorio upstream con el nombre de usuario my-username y versión del secreto 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

Reemplaza lo siguiente:

  • REMOTE-REPOSITORY-NAME por el nombre del repositorio Para para cada ubicación de repositorio en un proyecto, los nombres de repositorios deben ser únicos.
  • PROJECT_ID por el ID del proyecto. Si se omite esta marca, se usa el proyecto actual o predeterminado.
  • LOCATION por la configuración regional o multirregional location para el repositorio. Puedes omitir esta marca si estableces un valor predeterminado. Cómo ver una lista de ubicaciones compatibles, ejecuta el comando gcloud artifacts locations list.

  • DESCRIPTION con una descripción opcional del repositorio No incluyas datos sensibles, ya que las descripciones del repositorio están encriptados.

  • REMOTE-REPOSITORY-DESCRIPTION con una descripción de la configuración del repositorio externo para este repositorio remoto.

  • USERNAME (opcional), si usas autenticación, con tu nombre de usuario para autenticarte en el repositorio upstream.

  • De manera opcional, si usas autenticación, puedes usar SECRET_VERSION. con la versión del Secret que contiene la contraseña del repositorio upstream.

  • UPSTREAM por el nombre del ajuste predeterminado o la URL definida por el usuario del elemento repositorio upstream. Para obtener información sobre los flujos ascendentes preestablecidos versiones ascendentes definidas por el usuario compatibles, consulta Formatos admitidos.

Por ejemplo, el siguiente comando crea un repositorio remoto llamado my-repo en la región us-east1 en el proyecto de Google Cloud my-project y puede autenticarse en el repositorio upstream con el nombre de usuario my-username y versión del secreto 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

Reemplaza lo siguiente:

  • REMOTE-REPOSITORY-NAME por el nombre del repositorio Para para cada ubicación de repositorio en un proyecto, los nombres de repositorios deben ser únicos.
  • PROJECT_ID por el ID del proyecto. Si se omite esta marca, se usa el proyecto actual o predeterminado.
  • LOCATION por la configuración regional o multirregional location para el repositorio. Puedes omitir esta marca si estableces un valor predeterminado. Cómo ver una lista de ubicaciones compatibles, ejecuta el comando gcloud artifacts locations list.

  • DESCRIPTION con una descripción opcional del repositorio No incluyas datos sensibles, ya que las descripciones del repositorio están encriptados.

  • REMOTE-REPOSITORY-DESCRIPTION con una descripción de la configuración del repositorio externo para este repositorio remoto.

  • USERNAME (opcional), si usas autenticación, con tu nombre de usuario para autenticarte en el repositorio upstream.

  • De manera opcional, si usas autenticación, puedes usar SECRET_VERSION. con la versión del Secret que contiene la contraseña del repositorio upstream.

  • UPSTREAM por el nombre del ajuste predeterminado o la URL definida por el usuario del elemento repositorio upstream. Para obtener información sobre los flujos ascendentes preestablecidos versiones ascendentes definidas por el usuario compatibles, consulta Formatos admitidos.

Por ejemplo, el siguiente comando crea un repositorio remoto llamado my-repo en la región us-east1 en el proyecto de Google Cloud my-project y puede autenticarse en el repositorio upstream con el nombre de usuario my-username y versión del secreto 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

Departamento (vista previa)

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"

Reemplaza lo siguiente:

  • REMOTE_REPOSITORY_NAME por el nombre del repositorio Para para cada ubicación de repositorio en un proyecto, los nombres de repositorios deben ser únicos.
  • PROJECT_ID por el ID del proyecto. Si se omite esta marca, se usa el proyecto actual o predeterminado.
  • LOCATION por la configuración regional o multirregional location para el repositorio. Puedes omitir esta marca si estableces un valor predeterminado. Cómo ver una lista de ubicaciones compatibles, ejecuta el comando gcloud artifacts locations list.
  • DESCRIPTION con una descripción opcional del repositorio No incluyas datos sensibles, ya que las descripciones del repositorio están encriptados.
  • REMOTE_REPOSITORY_DESCRIPTION con una descripción opcional para la configuración del repositorio externo para este repositorio remoto.
  • APT_REPOSITORY_BASE por uno de los repositorios compatibles nombres base enumerados en el Flujos ascendentes admitidos por el paquete del SO para Apt remoto de Cloud Storage.
  • APT_REPOSITORY_PATH por el resto de la URL de la repositorio upstream que quieres almacenar en caché en tu repositorio remoto después la base del repositorio.

Por ejemplo, el siguiente comando crea un repositorio remoto llamado my-repo para almacenar en caché el repositorio de buster de Debian en la región us-east1 en el proyecto de Google Cloud my-project. La URL completa del flujo de repositorio es 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 (vista previa)

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"

Reemplaza lo siguiente:

  • REMOTE_REPOSITORY_NAME por el nombre del repositorio Para para cada ubicación de repositorio en un proyecto, los nombres de repositorios deben ser únicos.
  • PROJECT_ID por el ID del proyecto. Si se omite esta marca, se usa el proyecto actual o predeterminado.
  • LOCATION por la configuración regional o multirregional location para el repositorio. Puedes omitir esta marca si estableces un valor predeterminado. Cómo ver una lista de ubicaciones compatibles, ejecuta el comando gcloud artifacts locations list.
  • DESCRIPTION con una descripción opcional del repositorio No incluyas datos sensibles, ya que las descripciones del repositorio están encriptados.
  • REMOTE_REPOSITORY_DESCRIPTION con una descripción opcional para la configuración del repositorio externo para este repositorio remoto.
  • YUM_REPOSITORY_BASE por uno de los repositorios compatibles nombres base enumerados en el Elementos upstream compatibles con el paquete del SO para el control remoto de Yum de Cloud Storage.
  • YUM_REPOSITORY_PATH por el resto de la URL de la repositorio upstream que quieres almacenar en caché en tu repositorio remoto después la base del repositorio.

Por ejemplo, el siguiente comando crea un repositorio remoto para paquetes de Yum llamada my-repo en la región us-east1 del proyecto de Google Cloud my-project para el repositorio 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"

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

gcloud artifacts repositories describe REMOTE_REPOSITORY_NAME \
    --location=LOCATION

Después de crear el repositorio, haz lo siguiente:

Crea un repositorio remoto 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 y un repositorio remoto con el Nombre del recurso de 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
    }
  }
}

Dónde

  • PROJECT-ID es el ID del proyecto de Google Cloud.
  • LOCATION es la ubicación del repositorio.
  • REPOSITORY_ID es el ID del repositorio.
  • DESCRIPTION es la descripción opcional para el repositorio. No incluyas datos sensibles, ya que las descripciones del repositorio sin encriptar.
  • 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. Omite este argumento para usar la configuración predeterminada, las claves de encriptación administradas por Google.
  • CONFIG_DESCRIPTION es la descripción opcional del control remoto. fuente.
  • DRY_RUN_STATUS determina si se borran las políticas de limpieza. artefactos, o solo registrar qué artefactos se borrarán si se establece políticas de limpieza de datos en el repositorio. Omite esta opción si no quieres agregar políticas de limpieza de datos al repositorio. * true: Establece las políticas que se ejecutarán en modo de ejecución de prueba. No hay artefactos o borrar en modo de ejecución de prueba. * false: Aplica las políticas de limpieza. Los artefactos se borran o se mantendrán dependiendo de las políticas. Para obtener más información sobre las políticas de limpieza, consulta Configura políticas de limpieza.
    • POLICY_NAME es el nombre de la política de limpieza.
    • TAG_STATE es el estado de la etiqueta al que se aplicará la política. Valores son tagged, untagged y any. any se aplica tanto a las etiquetas artefactos sin etiquetar. Si un repositorio tiene etiquetas inmutables habilitadas, no se pueden borrar los artefactos.
    • TAG_PREFIX y TAG_PREFIX_N son prefijos de etiqueta para aplicar la política.
    • PKG_PREFIX y PKG_PREFIX_N son prefijos del paquete al que se aplicará la política.
    • TIME_SINCE_UPLOAD es el tiempo transcurrido desde la versión de un artefacto se subió al repositorio y se especificó como duración. Puedes especificar duraciones de segundos, minutos, horas o días agregando s, m, h o d, respectivamente.
    • KEEP_COUNT es la cantidad de versiones por paquete de un artefacto. mantener en tu repositorio.

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" {
  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
    }
  }
}

Dónde

  • PROJECT-ID es el ID del proyecto de Google Cloud.
  • LOCATION es la ubicación del repositorio.
  • REPOSITORY_ID es el ID del repositorio.
  • DESCRIPTION es la descripción opcional para el repositorio. No incluyas datos sensibles, ya que las descripciones del repositorio sin encriptar.
  • 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. Omite este argumento para usar la configuración predeterminada, las claves de encriptación administradas por Google.
  • CONFIG_DESCRIPTION es la descripción opcional del control remoto. fuente.
  • DRY_RUN_STATUS determina si se borran las políticas de limpieza. artefactos, o solo registrar qué artefactos se borrarán si se establece políticas de limpieza de datos en el repositorio. Omite esta opción si no quieres agregar políticas de limpieza de datos al repositorio. * true: Establece las políticas que se ejecutarán en modo de ejecución de prueba. No hay artefactos o borrar en modo de ejecución de prueba. * false: Aplica las políticas de limpieza. Los artefactos se borran o se mantendrán dependiendo de las políticas. Para obtener más información sobre las políticas de limpieza, consulta Configura políticas de limpieza.
    • POLICY_NAME es el nombre de la política de limpieza.
    • TAG_STATE es el estado de la etiqueta al que se aplicará la política. Valores son tagged, untagged y any. any se aplica tanto a las etiquetas artefactos sin etiquetar. Si un repositorio tiene etiquetas inmutables habilitadas, no se pueden borrar los artefactos.
    • TAG_PREFIX y TAG_PREFIX_N son prefijos de etiqueta para aplicar la política.
    • PKG_PREFIX y PKG_PREFIX_N son prefijos del paquete al que se aplicará la política.
    • TIME_SINCE_UPLOAD es el tiempo transcurrido desde la versión de un artefacto se subió al repositorio y se especificó como duración. Puedes especificar duraciones de segundos, minutos, horas o días agregando s, m, h o d, respectivamente.
    • KEEP_COUNT es la cantidad de versiones por paquete de un artefacto. mantener en tu repositorio.

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 = "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
    }
  }
}

Dónde

  • PROJECT-ID es el ID del proyecto de Google Cloud.
  • LOCATION es la ubicación del repositorio.
  • REPOSITORY_ID es el ID del repositorio.
  • DESCRIPTION es la descripción opcional para el repositorio. No incluyas datos sensibles, ya que las descripciones del repositorio sin encriptar.
  • 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. Omite este argumento para usar la configuración predeterminada, las claves de encriptación administradas por Google.
  • CONFIG_DESCRIPTION es la descripción opcional del control remoto. fuente.
  • DRY_RUN_STATUS determina si se borran las políticas de limpieza. artefactos, o solo registrar qué artefactos se borrarán si se establece políticas de limpieza de datos en el repositorio. Omite esta opción si no quieres agregar políticas de limpieza de datos al repositorio. * true: Establece las políticas que se ejecutarán en modo de ejecución de prueba. No hay artefactos o borrar en modo de ejecución de prueba. * false: Aplica las políticas de limpieza. Los artefactos se borran o se mantendrán dependiendo de las políticas. Para obtener más información sobre las políticas de limpieza, consulta Configura políticas de limpieza.
    • POLICY_NAME es el nombre de la política de limpieza.
    • TAG_STATE es el estado de la etiqueta al que se aplicará la política. Valores son tagged, untagged y any. any se aplica tanto a las etiquetas artefactos sin etiquetar. Si un repositorio tiene etiquetas inmutables habilitadas, no se pueden borrar los artefactos.
    • TAG_PREFIX y TAG_PREFIX_N son prefijos de etiqueta para aplicar la política.
    • PKG_PREFIX y PKG_PREFIX_N son prefijos del paquete al que se aplicará la política.
    • TIME_SINCE_UPLOAD es el tiempo transcurrido desde la versión de un artefacto se subió al repositorio y se especificó como duración. Puedes especificar duraciones de segundos, minutos, horas o días agregando s, m, h o d, respectivamente.
    • KEEP_COUNT es la cantidad de versiones por paquete de un artefacto. mantener en tu repositorio.

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
    }
  }
}

Dónde

  • PROJECT-ID es el ID del proyecto de Google Cloud.
  • LOCATION es la ubicación del repositorio.
  • REPOSITORY_ID es el ID del repositorio.
  • DESCRIPTION es la descripción opcional para el repositorio. No incluyas datos sensibles, ya que las descripciones del repositorio sin encriptar.
  • 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. Omite este argumento para usar la configuración predeterminada, las claves de encriptación administradas por Google.
  • CONFIG_DESCRIPTION es la descripción opcional del control remoto. fuente.
  • DRY_RUN_STATUS determina si se borran las políticas de limpieza. artefactos, o solo registrar qué artefactos se borrarán si se establece políticas de limpieza de datos en el repositorio. Omite esta opción si no quieres agregar políticas de limpieza de datos al repositorio. * true: Establece las políticas que se ejecutarán en modo de ejecución de prueba. No hay artefactos o borrar en modo de ejecución de prueba. * false: Aplica las políticas de limpieza. Los artefactos se borran o se mantendrán dependiendo de las políticas. Para obtener más información sobre las políticas de limpieza, consulta Configura políticas de limpieza.
    • POLICY_NAME es el nombre de la política de limpieza.
    • TAG_STATE es el estado de la etiqueta al que se aplicará la política. Valores son tagged, untagged y any. any se aplica tanto a las etiquetas artefactos sin etiquetar. Si un repositorio tiene etiquetas inmutables habilitadas, no se pueden borrar los artefactos.
    • TAG_PREFIX y TAG_PREFIX_N son prefijos de etiqueta para aplicar la política.
    • PKG_PREFIX y PKG_PREFIX_N son prefijos del paquete al que se aplicará la política.
    • TIME_SINCE_UPLOAD es el tiempo transcurrido desde la versión de un artefacto se subió al repositorio y se especificó como duración. Puedes especificar duraciones de segundos, minutos, horas o días agregando s, m, h o d, respectivamente.
    • KEEP_COUNT es la cantidad de versiones por paquete de un artefacto. mantener en tu repositorio.

Departamento (vista previa)

  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"
      }
    }
  }
}

Dónde

  • PROJECT-ID es el ID del proyecto de Google Cloud.
  • LOCATION es la ubicación del repositorio.
  • REPOSITORY_ID es el ID del repositorio.
  • DESCRIPTION es la descripción opcional del repositorio. No incluyas datos sensibles, ya que las descripciones del repositorio sin encriptar.
  • CONFIG_DESCRIPTION es la descripción opcional del control remoto. fuente.
  • REPOSITORY_BASE es la base de repositorio público predeterminada para Apt. Los valores posibles son DEBIAN y UBUNTU.
  • REPOSITORY_PATH es el repositorio específico de la base. Por ejemplo, debian/dists/buster.

Yum (versión preliminar)

  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"
      }
    }
  }
}

Dónde

  • PROJECT-ID es el ID del proyecto de Google Cloud.
  • LOCATION es la ubicación del repositorio.
  • REPOSITORY_ID es el ID del repositorio.
  • DESCRIPTION es la descripción opcional del repositorio. No incluyas datos sensibles, ya que las descripciones del repositorio sin encriptar.
  • CONFIG_DESCRIPTION es la descripción opcional del control remoto. fuente.
  • REPOSITORY_BASE es la base de repositorio público predeterminada de Yum. Los valores posibles son CENTOS, CENTOS_DEBUG, CENTOS_VAULT, CENTOS_STREAM, ROCKY y EPEL.
  • REPOSITORY_PATH es el repositorio específico de la base. Por ejemplo, "centos/8-stream/BaseOS/x86_64/os.

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:

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.

Acceso a fuentes upstream en un perímetro de servicio

Los servicios en un perímetro de servicio de los Controles del servicio de VPC restringiron acceso a recursos fuera del perímetro.

Puedes permitir o denegar el acceso a fuentes upstream dentro de un proyecto y ubicación de Google Cloud.

De forma predeterminada, Artifact Registry deniega el acceso a fuentes ascendentes si no hayan otorgado acceso explícitamente.

Para Artifact Registry, el rol requerido es el de administrador de Artifact Registry (roles/artifactregistry.admin).

Ver configuración de fuentes upstream

Para ver la configuración de una combinación específica de proyecto y ubicación, sigue estos pasos: Ejecuta el siguiente comando:

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

Por ejemplo, usa el siguiente comando para ver la configuración de los repositorios remotos En us-east1, en el proyecto my-project:

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

Permitir el acceso a fuentes upstream

Para permitir el acceso a fuentes upstream en una ubicación específica, ejecuta el comando:

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

Por ejemplo, usa el siguiente comando para permitir que todos los repositorios remotos us-east1 en el proyecto my-project para acceder a sus fuentes upstream fuera de del perímetro:

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

Denegar acceso a fuentes upstream

Cuando deniegas el acceso a fuentes upstream, los artefactos existentes almacenados en caché en forma remota los repositorios de datos siguen disponibles.

Para denegar el acceso a fuentes upstream en una ubicación específica, ejecuta el comando:

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

Por ejemplo, usa el siguiente comando para bloquear el acceso a fuentes upstream fuera del perímetro para todos los repositorios remotos de us-west1 en el proyecto my-project:

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

¿Qué sigue?