Artifact Registry te permite almacenar diferentes tipos de artefactos, crear varios repositorios en un solo proyecto y asociar una región específica o una región con cada repositorio. En esta página, se describen las consideraciones para ayudarte a planificar las ubicaciones y la organización de tus repositorios.
Cuando crees tus repositorios, considera tanto procesos internos para crear los artefactos como el uso que realizan los consumidores de tus artefactos.
Formatos de repositorio
Cada repositorio está asociado con un formato de artefacto específico. Por ejemplo, un repositorio de Docker almacena imágenes de Docker. Puedes crear varios repositorios para cada formato en el mismo proyecto de Google Cloud.
Modos de repositorio
Hay varios modos de repositorio. Cada modo tiene un propósito diferente, por lo que no puedes cambiar el modo de repositorio después de haberlo creado.
Repositorio estándar
Los repositorios estándar son repositorios normales de Artifact Registry para tus artefactos privados. Puedes subir y descargar artefactos directamente con estos repositorios y usar Artifact Analysis para buscar vulnerabilidades y otros metadatos.
Para crear repositorios estándar, sigue los pasos que se indican en Crea repositorios estándar.
Repositorio remoto
Los repositorios remotos son repositorios de solo lectura que actúan como proxies para almacenar artefactos de las siguientes fuentes upstream:
- Repositorios estándar de Artifact Registry
- Fuentes externas como Docker Hub, Maven Central, el paquete de Python (PyPI), Debian o CentOS.
La primera vez que solicitas una versión del artefacto, el repositorio la descarga de fuente upstream y almacena en caché una copia de esta. El repositorio remoto entrega la copia almacenada en caché cuando se vuelve a solicitar la misma versión.
Los repositorios remotos reducen la latencia y mejoran la disponibilidad de las compilaciones y las implementaciones en Google Cloud. También puedes usar Artifact Analysis permite analizar paquetes almacenados en caché en busca de vulnerabilidades y otros metadatos.
Para obtener más información sobre los repositorios remotos, lee la descripción general de los repositorios remotos. Para crear repositorios remotos, sigue los pasos que se indican en Crea repositorios remotos.
Repositorio virtual
Un repositorio de solo lectura que actúa como un único punto de acceso para descargar, instalar o implementar artefactos del mismo formato desde uno o más repositorios upstream. Un repositorio directo puede ser un repositorio estándar, remoto o virtual.
Los repositorios virtuales simplifican la configuración del cliente para los consumidores de tus artefactos. También puedes mitigar los ataques de confusión de dependencias configurando tu política upstream para priorizar los repositorios con tus artefactos privados sobre los repositorios remotos que almacenan en caché artefactos públicos.
Para obtener más información sobre los repositorios virtuales, lee Descripción general del repositorio virtual. Para crear repositorios virtuales, sigue los pasos que se indican en Cómo crear repositorios virtuales.
Ejemplo de uso del repositorio
En el siguiente diagrama, se muestra una de las muchas formas posibles en que puedes usar repositorios en diferentes modos en conjunto. En el diagrama, se muestra un flujo de trabajo en dos proyectos de Google Cloud. En un proyecto de desarrollo, los desarrolladores compilan y mantener la integridad de su aplicación. En otro proyecto de entorno de ejecución, otra compilación crea un contenedor con la aplicación para implementarla en Google Kubernetes Engine.
En el proyecto de desarrollo, un equipo de desarrollo de Java usa Cloud Build para compilar una aplicación de Java.
- La compilación puede solicitar dependencias públicas de Java con el repositorio virtual. El repositorio virtual entrega las dependencias del repositorio remoto, que es un proxy de almacenamiento en caché para Maven Central.
- Cloud Build sube el paquete al repositorio estándar de Maven en el proyecto del componente.
En el proyecto del entorno de ejecución, Cloud Build aloja en contenedores los datos de Java y mantener la integridad de su aplicación.
La compilación usa el repositorio virtual de Maven para descargar la aplicación. El repositorio virtual entrega el paquete desde el repositorio estándar en el proyecto de desarrollo. La compilación también puede descargar dependencias públicas de Java desde el mismo repositorio virtual.
En el proyecto de tiempo de ejecución, Cloud Build sube la imagen del contenedor compilado a un repositorio estándar de Docker.
GKE extrae imágenes del repositorio virtual de Docker.
- El repositorio de Docker estándar upstream proporciona imágenes privadas, como la aplicación de Java alojada en contenedores.
- El repositorio remoto upstream proporciona imágenes que GKE solicita a Docker Hub.
En este ejemplo, todos los repositorios, compilaciones y clústeres de GKE están en la misma región. Usa la misma ubicación para los servicios de Google Cloud tiene beneficios que se describen en Ubicación del repositorio.
Ubicación del repositorio
Puedes crear uno o más repositorios en una región o multirregión Una buena ubicación del repositorio equilibra los costos de latencia, disponibilidad y ancho de banda para los consumidores de datos. Es posible que tu organización también tenga requisitos de cumplimiento específicos.
Consideraciones de ubicación
Crea un repositorio en la misma región que otros servicios de Google Cloud tiene varios beneficios:
Crea repositorios para reducir la latencia y los costos de salida de red en la misma región donde ejecutas GKE, Cloud Run, Cloud Build y otros servicios de Google Cloud con los que del repositorio. No se cobra por la salida de Artifact Registry a otros servicios de Google Cloud en la misma región.
Aunque no se cobra por la salida de una multirregión a una Servicio de Google Cloud en una región correspondiente, solo con este precio se aplica a un conjunto limitado de regiones.
- En el caso de la multirregión
us
, no se cobra la salida a una región de Estados Unidos, comous-central
, pero sí a cualquier región de Canadá o Sudamérica. - En el caso de la multirregión
asia
, no se cobran los datos de salida a regiones de Asia, comoasia-northeast1
, pero sí a regiones de Australia.
- En el caso de la multirregión
Solo puedes usar la transmisión de imágenes en GKE y Dataproc sin servidor si tus imágenes de contenedor se almacenan en repositorios de Artifact Registry en la misma región que tus cargas de trabajo o en una multirregión que corresponda a la región con tus cargas de trabajo. La transmisión de imágenes puede reducir de manera significativa el tiempo de inicialización de las cargas de trabajo cuando usas imágenes de contenedores más grandes, ya que las cargas de trabajo pueden comenzar antes de que se descargue toda la imagen.
Ten en cuenta la ubicación de los consumidores fuera de Google Cloud. Por ejemplo, si tu equipo de desarrolladores de Australia necesita descargar artefactos de Artifact Registry a sus estaciones de trabajo locales, un repositorio en una región de Australia reducirá la latencia y generará cargos de salida más bajos que un repositorio ubicado en otro continente.
Cómo restringir las ubicaciones de los repositorios
Si necesitas cumplir con reglamentaciones o políticas que exigen que almacenes datos de regiones específicas, puedes incluir restricción de ubicaciones de recursos en tu que solo permite la creación de repositorios en regiones que cumplen con los requisitos. Artifact Registry solo aplica la restricción después de que la incluyas en la política de tu organización. Si tienes repositorios existentes en ubicaciones que no cumplen con los requisitos, debes mover tus artefactos a un repositorio en una ubicación que sí cumpla con los requisitos y, luego, borrar el repositorio que no cumpla con los requisitos.
Políticas de limpieza
Una política de limpieza de Artifact Registry define criterios para borrar automáticamente versiones de artefactos que ya no necesites o que conserven los artefactos que deseas. se almacenen de forma indefinida.
Las políticas de limpieza son útiles si almacenas muchas versiones de tus artefactos, pero solo necesitas conservar las versiones específicas que lanzas a producción. Puedes definir políticas de eliminación con criterios para borrar artefactos y políticas de retención con criterios para retener artefactos.
Si una versión de artefacto coincide con los criterios de una política de eliminación y una política de retención, Artifact Registry aplica la política de retención.
Borra políticas
Las políticas de eliminación borran artefactos que coinciden con los siguientes criterios obligatorios:
Estado de la etiqueta: Indica si la política debe verificar si hay artefactos etiquetados o artefactos sin etiquetar. Los artefactos se etiquetan cuando se envía o extrae una imagen a o de un repositorio. Para obtener más información sobre las etiquetas de Docker, consulta Conceptos de contenedores.
- Cualquier estado de etiqueta: Ignora el estado de la etiqueta y se aplica tanto a las etiquetas como artefactos sin etiquetar.
- Etiquetado: Solo se aplica a los artefactos etiquetados.
- Sin etiquetar: Solo se aplica a artefactos sin etiquetar.
Los formatos que no admiten etiquetas se tratan como
untagged
. No se pueden borrar los artefactos etiquetados en repositorios con etiquetas inmutables habilitadas.Para ver más para conocer el estado de las etiquetas y su aplicación a las políticas de limpieza, consulta la Referencia de TagState
Las siguientes son formas opcionales de definir tu política de eliminación:
- Prefijos de etiquetas: Es una lista de prefijos de etiquetas separados por comas. Por ejemplo, los prefijos
test
ystaging
coincidirían. imágenes con las etiquetastestenv
ystaging-1.5
.tagState
se debe establecer comoTAGGED
para usar prefijos de etiquetas.- Prefijos de versión: Es una lista separada por comas de prefijos de versiones de artefactos. Por ejemplo,
v1
,v2
coincidiría con las versionesv1.5
,v2.0alpha
yv10.2
.
- Prefijos de versión: Es una lista separada por comas de prefijos de versiones de artefactos. Por ejemplo,
- Prefijos de paquetes: Es una lista de prefijos de nombres de artefactos. Puedes ingresar
varios prefijos presionando
Enter
o,
entre ellos. Por ejemplo,red, blue
crearía dos prefijos,red
yblue
, y coincidiría con los nombres de artefactosred-team
,redis
ybluebird
. - Más antiguo que: Es un tiempo mínimo desde que se subió una versión de artefacto al repositorio, especificado como una duración.
Por ejemplo,
30d
es de 30 días. Puedes especificar duraciones de segundos, minutos, horas o días agregandos
,m
,h
od
, respectivamente. - Más reciente que: Es un tiempo máximo desde que se subió una versión del artefacto al repositorio, especificado como una duración.
Por ejemplo,
30d
es de 30 días.
Políticas de Keep
Las políticas de conservación conservan artefactos que coinciden con las mismas condiciones que las políticas de eliminación o una cantidad determinada de versiones más recientes.
Por ejemplo, dado un repositorio que contiene los siguientes artefactos:
IMAGE: us-west1-docker.pkg.dev/my-project/release-xyz-v1
DIGEST: sha256:1b0a26bd07a3d17473d8d8468bea84015e27f87124b2831234581bce13f61370
TAGS:
CREATE_TIME: 2023-06-19T18:59:09
UPDATE_TIME: 2023-06-19T18:59:10
IMAGE: us-west1-docker.pkg.dev/my-project/release-xyz-v2
DIGEST: sha256:6e494387c901caf429c1bf77bd92fb82b33a68c0e19f123456a3ac8d27a7049d
TAGS: latest
CREATE_TIME: 2023-06-19T18:59:09
UPDATE_TIME: 2023-06-19T18:59:09
IMAGE: us-west1-docker.pkg.dev/my-project/release-v2
DIGEST: sha256:6e494387c901caf429c1bf77bd92fb82b33a68c0e19f123456a3ac8d27a7049d
TAGS: latest
CREATE_TIME: 2023-06-19T18:59:09
UPDATE_TIME: 2023-06-19T18:59:09
Si la política Conservar las versiones más recientes está establecida para conservar 3 versiones de
paquetes que coincidan con los PackagePrefixes: {release-xyz}
, solo
Se conservan release-xyz-v1
y release-xyz-v2
.
Las eliminaciones activadas por las políticas de eliminación se tienen en cuenta en tu cuota de solicitudes de eliminación por proyecto de Artifact Registry.
Para crear y aplicar políticas de limpieza a tu repositorio, consulta Cómo configurar políticas de limpieza.
Compatibilidad con dominios gcr.io
Artifact Registry admite el alojamiento de imágenes en el dominio gcr.io
. Si realizas la transición de Container Registry a Artifact Registry, puedes configurar los repositorios de gcr.io de Artifact Registry para minimizar los cambios en tu automatización y flujos de trabajo existentes. Estos repositorios proporcionan lo siguiente:
- Redireccionamiento de solicitudes al dominio
gcr.io
- Creación de repositorios de gcr.io cuando se envía la primera imagen a un nombre de host de gcr.io para la compatibilidad con el comportamiento de Container Registry.
Para obtener más información, consulta Transición a repositorios compatibles con el dominio gcr.io
Estructura del proyecto
Tu jerarquía de recursos es la forma en que organizas los recursos en los proyectos de Google Cloud. La estructura que elijas depende de factores como los requisitos de administración de datos, los límites de confianza y la estructura del equipo.
Existen dos enfoques generales para configurar tus repositorios en organizaciones de varios proyectos.
- Centraliza los repositorios
- Crea todos los repositorios en un solo proyecto y, luego, otorga acceso a los principales de otros proyectos a nivel del repositorio. Este enfoque puede ser más eficaz cuando una sola persona o equipo maneja el repositorio administración de identidades y accesos en toda la organización.
- También puede simplificar la configuración de repositorios virtuales o soluciones como Software Delivery Shield, ya que solo necesitas habilitar y administrar una única instancia de Artifact Registry.
- Repositorios específicos del proyecto
- Crea repositorios en proyectos que almacenen y descarguen artefactos. Esta puede ser necesario un enfoque de seguridad cuando tienes políticas de administración de datos límites de confianza que requieren más separación a nivel de proyecto y control de de Google Cloud.
Control de acceso
Solo se puede acceder a los repositorios con los permisos adecuados, a menos que configures el repositorio para el acceso público. Puedes otorgar permisos a nivel de proyecto o de repositorio.
Algunos servicios de Google Cloud usan cuentas de servicio predeterminadas con permisos predeterminados para los repositorios en el mismo proyecto de Google Cloud. Sin embargo, es posible que estos valores predeterminados no sean adecuados para tu proceso de desarrollo de software o que no cumplan con los requisitos de seguridad o políticas de tu organización. El administrador del repositorio debe otorgar explícitamente estos servicios accedan a repositorios en los siguientes casos:
- Artifact Registry está en un proyecto diferente al servicio que está que estás interactuando con él.
- Estás usando roles de IAM personalizados con las cuentas de servicio predeterminadas en lugar del rol predefinido.
- No estás usando la cuenta de servicio predeterminada para Google Cloud servicio.
- Estás configurando repositorios virtuales. Debes otorgar explícitamente el acceso de la cuenta de servicio de Artifact Registry para de Cloud Storage.
Para otras principales que requieren acceso a repositorios, tu repositorio el administrador debe otorgar el acceso. Siguiendo el principio de seguridad de privilegio mínimo, otorga los permisos mínimos necesarios. Por ejemplo:
- Implementa imágenes de contenedor en Artifact Registry en GKE. clústeres en varios proyectos diferentes. La cuenta de servicio para los nodos en estos clústeres solo requieren acceso de lectura a los repositorios.
- Tienes un repositorio de desarrollo para las aplicaciones que están en desarrollo y un repositorio de producción para las aplicaciones que se lanzaron. Los desarrolladores requieren acceso de lectura y escritura al repositorio de desarrollo y acceso de solo lectura al repositorio de producción.
- Tienes un repositorio de demostración con aplicaciones de muestra. Solo para tu equipo de ventas requiere acceso de solo lectura para descargar las demostraciones.
Restringe la descarga de artefactos
Puedes restringir la descarga de artefactos con reglas de descarga. Las reglas de descarga permiten o rechazan las descargas de artefactos de tus repositorios. y paquetes. También puedes establecer condiciones para que la regla se aplique a etiquetas específicas o versiones anteriores.
Para obtener detalles sobre cómo funcionan las reglas de descarga, consulta la sección Cómo restringir las descargas de artefactos en la descripción general Controla el acceso y protege los artefactos.
Encriptación de datos
De forma predeterminada, Google Cloud encripta automáticamente los datos cuando están en resto con Claves de propiedad de Google y administradas por Google. Si tienes requisitos reglamentarios relacionados con las claves que protegen tus datos, puedes crear repositorios encriptados con claves de encriptación administradas por el cliente (CMEK).
Artifact Registry también admite restricciones de políticas de la organización que pueden requerir CMEK para proteger los recursos.
Etiquetas
Las etiquetas proporcionan una forma de organizar recursos específicos de una instancia de Google Cloud servicio. En Artifact Registry, puedes agregar etiquetas a los repositorios para que puedes agruparlos o filtrar las listas de repositorios por etiqueta. Por ejemplo, puedes usar etiquetas para agrupar repositorios por etapa de desarrollo o por equipo con fines de automatización o facturación. Para obtener más información sobre cómo crear y usar etiquetas de repositorio, consulta Etiqueta repositorios.
También puedes aplicar etiquetas a los repositorios. Si bien las etiquetas se usan principalmente para organizar y filtrar recursos específicos del servicio, las etiquetas se usan para el control programático de las políticas en una organización de Google Cloud. Para ver más consulta Etiquetar repositorios.
Pasos siguientes
- Crea repositorios estándar
- Obtén más información sobre los repositorios remotos
- Obtén más información sobre los repositorios virtuales
- Crea repositorios remotos
- Cómo crear repositorios virtuales