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 preestablecidas, como Docker Hub, Maven Central, el índice de paquetes de Python (PyPI), Debian o CentOS, así como fuentes definidas por el usuario para formatos compatibles. Un repositorio remoto actúa como un proxy para la fuente externa para que tengas más control sobre las dependencias externas. La primera vez que solicitas una versión de un paquete, Artifact Registry descarga y almacena el paquete en caché en el repositorio remoto. La próxima vez que solicites la misma versión de paquete, Artifact Registry entregará la copia almacenada en caché.

Los otros modos de repositorio son los siguientes:

  • Estándar: Es el modo de repositorio predeterminado. Subes o publicas artefactos como paquetes privados directamente en repositorios estándar. Aunque puedes descargar directamente desde repositorios estándar individuales, acceder a grupos de repositorios con un repositorio virtual simplifica la configuración de las herramientas.
  • Virtual: Es un repositorio que actúa como un único punto de acceso para varios repositorios ascendentes, incluidos los repositorios remotos y estándar.

Para obtener más detalles sobre cómo funcionan los repositorios remotos, consulta la Descripción general del repositorio remoto.

Antes de comenzar

  1. Habilita 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 del gcloud CLI de gcloud (opcional).
  3. Si necesitas claves de encriptación administradas por el cliente (CMEK) para encriptar el contenido del repositorio, crea y habilita una clave en Cloud KMS para el repositorio.
  4. Si quieres autenticarte en un repositorio upstream, habilita la API de Secret Manager.

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

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

Funciones obligatorias

Si quieres obtener los permisos que necesitas para administrar repositorios, pídele a tu administrador que te otorgue 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 las credenciales del repositorio upstream en una versión de 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 funciones, consulta Administra el acceso.

Es posible que también puedas obtener los permisos necesarios a través de los roles personalizados o de otros roles predefinidos.

Crea un repositorio remoto

Cuando creas un repositorio remoto, debes establecer la siguiente configuración, que no se puede cambiar después de crear el repositorio:

  • Formato de los artefactos
  • El modo del repositorio se estableció en remoto.
  • Configuración del repositorio remoto o fuente ascendente definida por el usuario.
  • Ubicación del repositorio.
  • Encriptación con claves administradas por Google o claves de encriptación administradas por el cliente Artifact Registry usa claves de encriptación 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 las claves de Cloud KMS que se pueden usar para la protección de 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 Remote.

  6. En la sección Fuente del repositorio remoto, selecciona el ajuste predeterminado de upstream o Custom si deseas usar una URL definida por el usuario para el upstream.

  7. Opcional. Si usas un ascendente personalizado, en el campo Repositorio personalizado, ingresa la URL del repositorio personalizado. La URL no se puede cambiar después de crear el repositorio.

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

    • Autenticado: Permite ingresar tu nombre de usuario y secreto para la autenticación en el repositorio upstream.
    • Sin autenticar: Para omitir la autenticación al repositorio upstream.
  9. Opcional. Si seleccionaste Autenticado, ingresa lo siguiente:

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

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

  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 Multirregión. 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 ubicaciones y las ubicaciones compatibles, consulta Ubicaciones de repositorios.

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

    No incluyas datos sensibles, ya que las descripciones del repositorio no están encriptadas.

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

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

    • Clave administrada por Google: Encripta el contenido de un repositorio mediante una clave de encriptación 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. Haz clic en Crear.

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

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

Crea un repositorio remoto con gcloud CLI

Si quieres crear un repositorio, ejecuta el comando para obtener el formato adecuado de repositorio:

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 cada ubicación del repositorio de un proyecto, sus nombres 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 ubicación regional o multirregional para el repositorio Puedes omitir esta marca si estableces un valor predeterminado. Para ver una lista de ubicaciones admitidas, 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 no están encriptadas.

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

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

  • De forma opcional, SECRET_VERSION si usas autenticación, con la versión del secreto que contiene la contraseña del repositorio upstream.

  • UPSTREAM por el nombre del ajuste predeterminado o la URL definida por el usuario del repositorio upstream. Para obtener información sobre los flujos ascendentes predeterminados disponibles y los definidos por el usuario, consulta Formatos admitidos.

Por ejemplo, con el siguiente comando, se crea un repositorio remoto llamado my-repo en la región us-east1 del proyecto de Google Cloud my-project y se puede autenticar en el repositorio ascendente con el nombre de usuario my-username y la 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 repositorios upstream de Docker Hub, consulta Configura la autenticación de 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 cada ubicación del repositorio de un proyecto, sus nombres 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 ubicación regional o multirregional para el repositorio Puedes omitir esta marca si estableces un valor predeterminado. Para ver una lista de ubicaciones admitidas, 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 no están encriptadas.

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

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

  • De forma opcional, SECRET_VERSION si usas autenticación, con la versión del secreto que contiene la contraseña del repositorio upstream.

  • UPSTREAM por el nombre del ajuste predeterminado o la URL definida por el usuario del repositorio upstream. Para obtener información sobre los flujos ascendentes predeterminados disponibles y los definidos por el usuario, consulta Formatos admitidos.

Por ejemplo, con el siguiente comando, se crea un repositorio remoto llamado my-repo en la región us-east1 del proyecto de Google Cloud my-project y se puede autenticar en el repositorio ascendente con el nombre de usuario my-username y la 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 cada ubicación del repositorio de un proyecto, sus nombres 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 ubicación regional o multirregional para el repositorio Puedes omitir esta marca si estableces un valor predeterminado. Para ver una lista de ubicaciones admitidas, 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 no están encriptadas.

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

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

  • De forma opcional, SECRET_VERSION si usas autenticación, con la versión del secreto que contiene la contraseña del repositorio upstream.

  • UPSTREAM por el nombre del ajuste predeterminado o la URL definida por el usuario del repositorio upstream. Para obtener información sobre los flujos ascendentes predeterminados disponibles y los definidos por el usuario, consulta Formatos admitidos.

Por ejemplo, con el siguiente comando, se crea un repositorio remoto llamado my-repo en la región us-east1 del proyecto de Google Cloud my-project y se puede autenticar en el repositorio ascendente con el nombre de usuario my-username y la 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 cada ubicación del repositorio de un proyecto, sus nombres 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 ubicación regional o multirregional para el repositorio Puedes omitir esta marca si estableces un valor predeterminado. Para ver una lista de ubicaciones admitidas, 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 no están encriptadas.

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

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

  • De forma opcional, SECRET_VERSION si usas autenticación, con la versión del secreto que contiene la contraseña del repositorio upstream.

  • UPSTREAM por el nombre del ajuste predeterminado o la URL definida por el usuario del repositorio upstream. Para obtener información sobre los flujos ascendentes predeterminados disponibles y los definidos por el usuario, consulta Formatos admitidos.

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

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 cada ubicación del repositorio de un proyecto, sus nombres 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 ubicación regional o multirregional para el repositorio Puedes omitir esta marca si estableces un valor predeterminado. Para ver una lista de ubicaciones admitidas, 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 no están encriptadas.
  • REMOTE_REPOSITORY_DESCRIPTION con una descripción opcional de la configuración del repositorio externo para este repositorio remoto
  • APT_REPOSITORY_BASE por uno de los nombres base del repositorio compatibles que se enumeran en el paquete del SO compatibles con ascendentes para los repositorios remotos de Apt.
  • APT_REPOSITORY_PATH por el resto de la URL del repositorio ascendente que deseas almacenar en caché en el repositorio remoto después de la base del repositorio

Por ejemplo, con el siguiente comando, se crea un repositorio remoto llamado my-repo para almacenar en caché el repositorio del bloqueador de Debian en la región us-east1 del proyecto de Google Cloud my-project. La URL completa del repositorio upstream 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"

Delicioso (versión preliminar)

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 cada ubicación del repositorio de un proyecto, sus nombres 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 ubicación regional o multirregional para el repositorio Puedes omitir esta marca si estableces un valor predeterminado. Para ver una lista de ubicaciones admitidas, 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 no están encriptadas.
  • REMOTE_REPOSITORY_DESCRIPTION con una descripción opcional de la configuración del repositorio externo para este repositorio remoto
  • YUM_REPOSITORY_BASE por uno de los nombres base de los repositorios compatibles que se enumeran en el paquete del SO compatibles con ascendentes para los repositorios remotos de Yum
  • YUM_REPOSITORY_PATH por el resto de la URL del repositorio ascendente que deseas almacenar en caché en el repositorio remoto después de la base del repositorio

Por ejemplo, con el siguiente comando, se crea un repositorio remoto para los paquetes de Yum llamados 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 ver 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. Se requiere terraform-provider-google versión 5.0.0 o posterior.

Si es la primera vez que usas Terraform para Google Cloud, consulta la página Primeros pasos: Google Cloud en el 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"
    }
  }
}

¿Por 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 no están encriptadas.
  • 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 de la fuente remota.

Maven

Si no especificas una política de versión, Artifact Registry crea un repositorio de Maven que almacena versiones de actualización y de instantáneas de 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"
    }
  }
}

¿Por 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 no están encriptadas.
  • 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 de la fuente remota.

Si quieres almacenar versiones de actualización y de instantáneas en diferentes repositorios, especifica una política de versiones para el repositorio con un bloque maven_config. Este bloque admite la siguiente configuración:

  • version_policy establece la política de la versión con uno de los siguientes valores:
    • VERSION_POLICY_UNSPECIFIED: Almacena paquetes de actualización y de instantáneas. Esta es la configuración predeterminada.
    • LANZAMIENTO: Almacena solo paquetes de versión.
    • SNAPSHOT: Almacena solo paquetes de instantáneas.
  • allow_snapshot_overwrites configura un repositorio con una política de versión SNAPSHOT para aceptar instantáneas no únicas que reemplacen las versiones existentes en el repositorio.

En el siguiente ejemplo, se define un repositorio de Maven con una política de versiones 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"
    }
  }
}

¿Por 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 no están encriptadas.
  • 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 de la fuente remota.

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

¿Por 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 no están encriptadas.
  • 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 de la fuente remota.

Departamento (versión preliminar)

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

¿Por 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 no están encriptadas.
  • CONFIG_DESCRIPTION es la descripción opcional de la fuente remota.
  • 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"
      }
    }
  }
}

¿Por 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 no están encriptadas.
  • CONFIG_DESCRIPTION es la descripción opcional de la fuente remota.
  • REPOSITORY_BASE es la base de repositorio público predeterminada para 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 ver una descripción del repositorio:

gcloud artifacts repositories describe REPOSITORY \
    --location=LOCATION

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

Edita las descripciones del repositorio

Puedes cambiar la descripción del repositorio desde la consola de Google Cloud o la 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 Editar repositorio.

  3. Edita la descripción del repositorio y 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 los siguientes valores:

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

Acceso a fuentes ascendentes en un perímetro de servicio

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

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

Según la configuración predeterminada, Artifact Registry rechaza el acceso a las fuentes ascendentes si no otorgaste acceso de forma explícita.

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

Ver configuración de fuentes ascendentes

Para ver la configuración de una combinación específica de proyecto y ubicación, 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 del proyecto my-project:

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

Permite el acceso a fuentes ascendentes

Para permitir el acceso a fuentes ascendentes en una ubicación especificada, ejecuta el siguiente comando:

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

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

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

Deniega el acceso a fuentes ascendentes

Cuando deniegas el acceso a las fuentes ascendentes, los artefactos almacenados en caché existentes en repositorios remotos seguirán disponibles.

Para denegar el acceso a las fuentes ascendentes en una ubicación especificada, ejecuta el siguiente comando:

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

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

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

¿Qué sigue?