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 la versión de un artefacto coincide con los criterios de una política de eliminación y una Artifact Registry aplica la política de conservación.
Las eliminaciones que activan las políticas de eliminación se consideran en Artifact Registry por proyecto de la cuota de solicitudes de eliminación con un límite de 300,000 eliminaciones por repositorio.
Programa de aplicación de políticas
Artifact Registry borra y retiene los artefactos que coincidan con tu limpieza de políticas con un trabajo en segundo plano que se ejecuta periódicamente. Se aplican los cambios en aproximadamente un día.
Cantidad máxima de políticas de limpieza por repositorio
Puedes aplicar un máximo de 10 políticas de limpieza a un repositorio.
Formatos admitidos
Puedes establecer una política de limpieza en repositorios estándar y remotos para todos los formatos de repositorios.
Roles obligatorios
A fin de obtener los permisos que necesitas para aplicar o quitar políticas de limpieza, haz lo siguiente:
solicita a tu administrador que te otorgue el
Rol de IAM de Administrador de Artifact Registry (roles/artifactregistry.admin
) en el proyecto del repositorio.
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
Este rol predefinido contiene los permisos necesarios para aplicar o quitar políticas de limpieza. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:
Permisos necesarios
Se requieren los siguientes permisos para aplicar o quitar políticas de limpieza:
-
artifactregistry.repositories.update
-
Para borrar artefactos que cumplan con los criterios de una política de limpieza, haz lo siguiente:
artifactregistry.versions.delete
También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.
El rol predeterminado para el agente de servicio de Artifact Registry
incluye el permiso artifactregistry.versions.delete
, que es
para borrar imágenes que cumplan con los criterios de una política de limpieza.
Crea un archivo de política
Un archivo de políticas es un archivo JSON que define tus políticas de eliminación y conservación. Puedes un archivo de políticas creando y editando un archivo JSON, y luego usando el Google Cloud CLI para aplicar la política o a través de la consola de Google Cloud. Borrar de forma predeterminada especifican condiciones para borrar artefactos. Mantener las políticas especificadas condiciones para retener un artefacto o una serie de versiones recientes para conservar. Tú no puede usar las condiciones y las versiones más recientes en la misma política de conservación.
Crea una política de eliminación
Una política de eliminación te permite especificar la antigüedad mínima o máxima para la eliminación de artefactos y criterios de filtrado adicionales para limitar la política a artefactos específicos.
Si tienes ciertos artefactos que no quieres que se borren por algún motivo, crea una política de conservación condicional o una versiones mantienen una política y una política de eliminación. Si un artefacto coincide con los criterios tanto de la política de eliminación como de la de conservación se conserva el artefacto.
Console
Puedes crear una política de eliminación para un repositorio nuevo o existente.
Para agregar una política de eliminación a un repositorio existente, sigue estos pasos:
Abre la página Repositorios en la consola de Google Cloud.
En la lista de repositorios, selecciona el repositorio y haz clic en Editar repositorio.
En la sección Políticas de limpieza, selecciona Ejecución de prueba para probar la nueva. antes de comprometerte a borrar los artefactos. Para obtener más información sobre cómo ver los resultados de la prueba, consulta ejecución de prueba.
Una vez que te hayas asegurado de que la política funciona según lo previsto, edita tu configuración del repositorio y selecciona Borrar artefactos para aplicar política de limpieza y borra los artefactos seleccionados.
Haz clic en Agregar una política de limpieza y agrega lo siguiente:
- Nombre: Asigna un nombre a la política de limpieza. El nombre debe ser único en el grupo de políticas que aplicas a un repositorio.
- Tipo de política: Selecciona Eliminación condicional.
Estado de la etiqueta: Indica si la política debe buscar artefactos etiquetados o artefactos sin etiquetar. Los artefactos se etiquetan cuando enviar o extraer una imagen hacia o desde un repositorio. Para obtener más información sobre Docker rótulos nuevos, 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
. Si un repositorio tiene etiquetas inmutables habilitadas, los artefactos etiquetados no pueden borrarse.Para obtener más información sobre el estado de la etiqueta y cómo se aplica a políticas de limpieza, consulta la Referencia de TagState
Las siguientes son formas opcionales de definir tu política de eliminación:
- Prefijos de etiqueta: Una lista separada por comas de
prefijos de etiquetas. Por ejemplo, los prefijos
test
ystaging
coincidirían. imágenes con las etiquetastestenv
ystaging-1.5
.tagState
se debe establecer enTAGGED
para usar prefijos de etiqueta. - Prefijos de versión: Una lista separada por comas de las versiones del artefacto
prefijos. Por ejemplo,
v1
,v2
coincidiría con las versionesv1.5
,v2.0alpha
yv10.2
. - Prefijos de paquetes: Es una lista de prefijos de nombres de artefactos. Para ingresar varios prefijos, presiona
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
. - Anterior a: es el tiempo mínimo desde que se actualizó la versión de un artefacto
creada en el repositorio, especificada 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. - Posterior a: es el tiempo máximo desde la versión de un
El artefacto se creó en el repositorio y se especificó como duración.
Por ejemplo,
30d
es de 30 días.
- Prefijos de etiqueta: Una lista separada por comas de
prefijos de etiquetas. Por ejemplo, los prefijos
Para agregar más políticas de limpieza, haz clic en Agregar una política de limpieza.
Haz clic en Actualizar.
Tu política de limpieza se aplica a tu repositorio. Puedes ver tus políticas de limpieza en la sección Detalles del repositorio haciendo clic en Mostrar más.
JSON
{
"name": "DELETE_POLICY_NAME",
"action": {"type": "Delete"},
"condition": {
"tagState": "TAG_STATUS",
"tagPrefixes": ["TAG_PREFIXES"],
"versionNamePrefixes": ["VERSION_PREFIXES"],
"packageNamePrefixes": ["PACKAGE_PREFIXES"],
"olderThan": "OLDER_THAN_DURATION",
"newerThan": "NEWER_THAN_DURATION"
}
}
Una política de eliminación debe incluir un nombre, una acción y al menos una condición.
name
- En el fragmento de la política de eliminación, DELETE_POLICY_NAME es el nombre. de la política. El nombre debe ser único dentro del grupo de políticas que se aplican a un repositorio.
action
- Para una política de eliminación, el valor es
{"type": "Delete"}
. condition
- Especifica una o más de las siguientes condiciones:
tagState
: TAG_STATUS indica si la política debe buscar artefactos etiquetados o artefactos sin etiquetar. Los artefactos se etiquetan cuando se envía o extrae una imagen a un repositorio o desde él. Los valores admitidos son los que se detallan a continuación:tagged
: Solo se aplica a los artefactos etiquetados.untagged
: Solo se aplica a artefactos sin etiquetar.any
: Ignora el estado de la etiqueta y se aplica a artefactos etiquetados y no etiquetados.
Los formatos que no admiten etiquetas se tratan como
untagged
. Si un repositorio tiene habilitadas las etiquetas inmutables, no se pueden borrar los artefactos etiquetados.Para obtener más información sobre las etiquetas de Docker, consulta Conceptos de contenedores.
tagPrefixes
: TAG_PREFIXES es una lista separada por comas de prefijos de etiquetas. Por ejemplo,"test", "staging"
coincidiría con imágenes con las etiquetas"testenv"
y"staging-1.5"
.tagState
se debe establecer enTAGGED
para usar prefijos de etiqueta.versionNamePrefixes
: VERSION_PREFIXES es un Lista separada por comas de los prefijos de las versiones de los artefactos. Por ejemplo:"v1", "v2"
. coincidiría con las versiones"v1.5"
,"v2.0alpha"
y"v10.2"
.packageNamePrefixes
: PACKAGE_PREFIXES es un Lista separada por comas de prefijos de nombres de artefactos. Por ejemplo,"red", "blue"
coincidiría con los nombres de artefactos"red-team"
,"redis"
y"bluebird"
.olderThan
: OLDER_THAN_DURATION es el tiempo mínimo desde que se creó la versión de un artefacto en el 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.newerThan
: NEWER_THAN_DURATION es el tiempo máximo desde la versión de un artefacto se creó en el repositorio, especificada como un y el tiempo de actividad. Por ejemplo,30d
es de 30 días.
Crea una política de conservación condicional
Una política de retención condicional especifica los criterios para retener artefactos. Conservar funcionan con políticas de eliminación para conservar los artefactos según las especificaciones de tu política de eliminación, pero para conservar. Cuando un artefacto coincide con los criterios de una política de eliminación y una política de retención, se conserva.
Console
Puedes crear una política de conservación para un repositorio nuevo o existente.
Para agregar una política de conservación a un repositorio existente, sigue estos pasos:
Abre la página Repositorios en la consola de Google Cloud.
En la lista de repositorios, selecciona el repositorio y haz clic en Editar repositorio.
En la sección Políticas de limpieza, selecciona Ejecución de prueba para probar tu política nueva antes de comprometerte a borrar los artefactos. Debes establecer al menos una política de eliminación para ver los resultados de tu conservación política de la empresa. Para obtener más información sobre cómo ver los resultados de la prueba, consulta ejecución de prueba.
Una vez que te hayas asegurado de que tus políticas funcionan según lo previsto, edita tu configuración del repositorio y selecciona Borrar artefactos para aplicar las políticas de limpieza y borra los artefactos seleccionados.
Haz clic en Agregar una política de limpieza y agrega lo siguiente:
- Nombre: Asigna un nombre a la política de limpieza. El nombre debe ser único dentro del grupo de políticas que aplicas a un repositorio.
- Tipo de política: Selecciona Conservación condicional.
Estado de la etiqueta: Indica si la política debe buscar artefactos etiquetados o artefactos sin etiquetar. Los artefactos se etiquetan cuando enviar o extraer una imagen hacia o desde 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
. Si un repositorio tiene habilitadas etiquetas inmutables, no se pueden borrar los artefactos etiquetados. Para obtener más información sobre el estado de la etiqueta y cómo se aplica a políticas de limpieza, consulta la Referencia de TagState
Las siguientes son formas opcionales de definir tu política de conservació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 enTAGGED
para usar prefijos de etiqueta. - Prefijos de versión: Una lista separada por comas de las versiones del artefacto
prefijos. Por ejemplo,
v1
,v2
coincidiría con las versionesv1.5
,v2.0alpha
yv10.2
. - Prefijos del paquete: Es una lista separada por comas de prefijos de nombres de artefactos.
Por ejemplo,
red, blue
coincidiría con los nombres de artefactosred-team
,redis
, ybluebird
.
- Anterior a: es el tiempo mínimo desde que se actualizó la versión de un artefacto
creada en el repositorio, especificada 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. - Posterior a: es el tiempo máximo desde la versión de un
El artefacto se creó en el repositorio y se especificó como duración.
Por ejemplo,
30d
es de 30 días.
- Prefijos de etiquetas: Es una lista de prefijos de etiquetas separados por comas. Por ejemplo, los prefijos
Para agregar más políticas de limpieza, haz clic en Agregar una política de limpieza.
Haz clic en Actualizar.
Tu política de limpieza se aplica a tu repositorio.
JSON
El formato es similar a una política de eliminación. Para una política de conservación,
el valor de action
es {"type": "Keep"}
.
{
"name": "KEEP_POLICY_NAME",
"action": {"type": "Keep"},
"condition": {
"tagState": "TAG_STATUS",
"tagPrefixes": ["TAG_PREFIXES"],
"versionNamePrefixes": ["VERSION_PREFIXES"],
"packageNamePrefixes": ["PACKAGE_PREFIXES"],
"olderThan": "OLDER_THAN_DURATION",
"newerThan": "NEWER_THAN_DURATION"
}
}
Reemplaza lo siguiente:
KEEP_POLICY_NAME
por el nombre de la política de limpieza El nombre debe ser único en el grupo de políticas que aplicas a un repositorio.TAG_STATUS
con el estado de la etiqueta, que indica si la política debe buscar artefactos etiquetados o artefactos sin etiquetar. Los artefactos se etiquetan cuando se envía o extrae una imagen a un repositorio o desde él. Para obtener más información sobre las etiquetas de Docker, consulta Conceptos de contenedores.Las opciones son las siguientes:
tagged
: Solo se aplica a los artefactos etiquetados.untagged
: Solo se aplica a artefactos sin etiquetar.any
: Se aplica a todas las versiones
Los formatos que no admiten etiquetas se tratan como
untagged
. Si un repositorio tiene etiquetas inmutables habilitadas, los artefactos etiquetados no pueden borrarse. Para obtener más información sobre el estado de la etiqueta y cómo se aplica a políticas de limpieza, consulta la Referencia de TagStateTAG_PREFIXES
por una lista separada por comas de prefijos de etiquetas. Por ejemplo, los prefijostest
ystaging
coincidirían. imágenes con las etiquetastestenv
ystaging-1.5
.tagState
se debe establecer enTAGGED
para usar prefijos de etiqueta.VERSION_PREFIXES
por una lista separada por comas de la versión del artefacto prefijos. Por ejemplo,v1, v2
coincidiría con las versionesv1.5
,v2.0alpha
yv10.2
.PACKAGE_PREFIXES
por una lista de nombres de artefactos separada por comas prefijos. Por ejemplo,red, blue
coincidiría con los nombres de artefactosred-team
,redis
ybluebird
.
OLDER_THAN_DURATION
con el tiempo mínimo desde que se creó la versión de un artefacto en el repositorio, especificado como una duración. Por ejemplo,30d
es de 30 días. Puedes especificar las duraciones segundos, minutos, horas o días agregandos
,m
,h
od
, respectivamente.NEWER_THAN_DURATION
por el tiempo máximo desde el versión de un artefacto se creó en el repositorio, especificada como un y el tiempo de actividad. Por ejemplo,30d
es de 30 días.
Crea una política de conservación para las versiones más recientes
Puedes crear una política de retención para conservar una cantidad específica de versiones. No puedes usar los criterios de Conservación condicional y Conservación de las versiones más recientes en la misma política de conservación.
Haz que las políticas funcionen con políticas de eliminación para conservar los artefactos que borrar según las especificaciones de tu política de eliminación, pero quieres conservar. Cuando un artefacto coincide con los criterios de una política de eliminación y una política de conservación, se conserva el artefacto.
Console
Puedes crear una política para mantener las versiones más recientes de un repositorio nuevo o existente.
Para agregar una política de conservación de las versiones más recientes a un repositorio existente, haz lo siguiente:
Abre la página Repositorios en la consola de Google Cloud.
En la lista de repositorios, selecciona el repositorio y haz clic en Editar repositorio.
En la sección Políticas de limpieza, selecciona Ejecución de prueba para probar la nueva. antes de comprometerte a borrar los artefactos. Debes establecer al menos una política de eliminación para ver los resultados de tu conservación política de la empresa. Para obtener más información sobre cómo ver los resultados de la prueba, consulta ejecución de prueba.
Una vez que te hayas asegurado de que tus políticas funcionan según lo previsto, edita tu configuración del repositorio y selecciona Borrar artefactos para aplicar las políticas de limpieza y borra los artefactos seleccionados.
Haz clic en Agregar una política de limpieza y agrega lo siguiente:
- Nombre: Asigna un nombre a la política de limpieza. El nombre debe ser único en el grupo de políticas que aplicas a un repositorio.
- Tipo de política: Selecciona Conservar las versiones más recientes.
En el campo Keep count, ingresa la cantidad de versiones de un artefacto. para mantener en tu repositorio.
Opcional: Selecciona PackagePrefixes para especificar los prefijos de paquete que se aplicarán la política de conservación. Por ejemplo,
red, blue
coincidiría con los nombres de los artefactos.red-team
,redis
ybluebird
.Para agregar más políticas de limpieza, haz clic en Agregar una política de limpieza.
Haz clic en Actualizar.
Tu política de limpieza se aplica a tu repositorio. Puedes ver tus políticas de limpieza en la sección Detalles del repositorio haciendo clic en Mostrar más.
JSON
El formato es similar a una política de eliminación. Para una política de conservación,
el valor de action
es {"type": "Keep"}
.
Una política de conservación para retener un número específico de versiones tiene un
mostRecentVersions
en lugar de una sección condition
.
{
"name": "KEEP_POLICY_NAME",
"action": {"type": "Keep"},
"mostRecentVersions": {
"packageNamePrefixes": ["PACKAGE_PREFIXES"],
"keepCount": MINIMUM_NUMBER
}
}
Reemplaza lo siguiente:
KEEP_POLICY_NAME
con un nombre para tu política de retención. El nombre debe ser único dentro del grupo de políticas que aplicas a un repositorio.PACKAGE_PREFIXES
con los prefijos del paquete opcional que se aplicarán la política de conservación. Por ejemplo,red, blue
coincidiría con los nombres de los artefactos.red-team
,redis
ybluebird
.
MINIMUM_NUMBER
por la cantidad de versiones de un artefacto para mantener en tu repositorio.
Para aplicar la política de conservación a todos los paquetes en tu repositorio, omite el
Condición packageNamePrefixes
. El número especificado de versiones recientes de
se conserva cada paquete de tu repositorio.
Ejemplo de archivo de política
El siguiente ejemplo de archivo de políticas tiene una política de eliminación y dos políticas de conservación.
- La política
delete-prerelease
quita las versiones de artefactos 30 días después de la carga si el artefacto comienza con la cadenaalpha
ov0
. - La política
keep-tagged-release
retiene artefactos etiquetados con el prefijorelease
que tienen un nombre de archivo que comienza conwebapp
omobile
. - La política
keep-minimum-versions
conserva las cinco versiones más recientes de artefactos que tengan un nombre de archivo que comience conwebapp
,mobile
osandbox
[
{
"name": "delete-prerelease",
"action": {"type": "Delete"},
"condition": {
"tagState": "tagged",
"tagPrefixes": ["alpha", "v0"],
"olderThan": "30d"
}
},
{
"name": "keep-tagged-release",
"action": {"type": "Keep"},
"condition": {
"tagState": "tagged",
"tagPrefixes": ["release"],
"packageNamePrefixes": ["webapp", "mobile"]
}
},
{
"name": "keep-minimum-versions",
"action": {"type": "Keep"},
"mostRecentVersions": {
"packageNamePrefixes": ["webapp", "mobile", "sandbox"],
"keepCount": 5
}
}
]
Prueba tus políticas con una ejecución de prueba
Para probar las políticas de limpieza, puedes establecer la política de limpieza para la ejecución de prueba
la consola o ejecutar el
Comando gcloud artifacts set-cleanup-policies
con la marca --dry-run
.
Para analizar el efecto de tus políticas de limpieza, puedes ver los registros de auditoría de acceso a los datos del Registro de artefactos. Para recibir registros de auditoría de acceso a los datos para las políticas de limpieza, debes habilitar de forma explícita el tipo de registro de auditoría de acceso a los datos de escritura de datos para el servicio de Artifact Registry. Para habilitar los registros de auditoría de acceso a los datos, consulta Habilita los registros de auditoría.
Console
Abre la página Repositorios en la consola de Google Cloud.
En la lista de repositorios, selecciona el repositorio y haz clic en Edita el repositorio.
En la sección Políticas de limpieza, selecciona Ejecución de prueba.
Haz clic en Agregar una política de limpieza y configura las opciones para tu Eliminación condicional Conservación condicional Mantén las versiones más recientes de las políticas.
Haz clic en Actualizar.
Cuando una política de eliminación genera una acción BatchDeleteVersions
, el parámetro validateOnly
se evalúa como "true"
.
Para consultar registros de auditoría sobre ejecuciones de prueba de tus políticas de limpieza, ejecuta el siguiente comando: :
gcloud logging read 'protoPayload.serviceName="artifactregistry.googleapis.com" AND protoPayload.request.parent:"projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY" AND protoPayload.request.validateOnly=true' \
--resource-names="projects/PROJECT_ID" \
--project=PROJECT_ID
El resultado se ve de la manera siguiente:
insertId: qwe123ty3
logName: projects/my-project/logs/cloudaudit.googleapis.com%2Fdata_access
operation:
first: true
id: projects/my-project/locations/us-west1/operations/12345abc-fb9b-4b6f-b02c-9a397ee807d4
producer: artifactregistry.googleapis.com
protoPayload:
'@type': type.googleapis.com/google.cloud.audit.AuditLog
authenticationInfo:
principalEmail: service-774919394028@gcp-sa-staging-artreg.iam.gserviceaccount.com
authorizationInfo:
- granted: true
permission: artifactregistry.versions.delete
resource: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
resourceAttributes: {}
methodName: google.devtools.artifactregistry.v1.ArtifactRegistry.BatchDeleteVersions
request:
'@type': type.googleapis.com/google.devtools.artifactregistry.v1.BatchDeleteVersionsRequest
names:
- projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:4bb3756e4e75dfbc3ced87521ed62b26d16fb4e17993ae6877165f2b6551fb55
- projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:e8185538b50df953529b300be4963b2c21158808becac7aa0d610f61de8ba701
- projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:7f7fb0a9453da49f831fe92eb8b1751be13acefe1bbd44cc3f0d63d41c422246
- projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:84ac871a34560b39dd7bde57b4d333f18a7e8c1b61c8d350c1fefeb1fcd2b3ac
parent: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
validateOnly: true
requestMetadata:
callerIp: private
callerSuppliedUserAgent: stubby_client
destinationAttributes: {}
requestAttributes:
auth: {}
time: '2023-05-26T04:31:21.909465579Z'
resourceName: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
serviceName: artifactregistry.googleapis.com
receiveTimestamp: '2023-05-26T04:31:22.641338594Z'
resource:
labels:
method: google.devtools.artifactregistry.v1.ArtifactRegistry.BatchDeleteVersions
project_id: my-project
service: artifactregistry.googleapis.com
type: audited_resource
severity: INFO
timestamp: '2023-05-26T04:31:21.909004200Z'
gcloud CLI
Para realizar una ejecución de prueba con tus políticas de limpieza, ejecuta el siguiente comando:
gcloud artifacts repositories set-cleanup-policies REPOSITORY \
--project=PROJECT_ID \
--location=LOCATION \
--policy=POLICY_FILE \
--dry-run
Reemplaza lo siguiente:
REPOSITORY
por el nombre del repositorioPROJECT_ID
por el ID del proyecto de Google Cloud.LOCATION
con el regional o multirregional location del repositorio.
Cuando una política de eliminación genera una acción BatchDeleteVersions
, el parámetro
validateOnly
se evalúa como "true"
.
Para consultar registros de auditoría sobre ejecuciones de prueba de tus políticas de limpieza, ejecuta el siguiente comando: :
gcloud logging read 'protoPayload.serviceName="artifactregistry.googleapis.com" AND protoPayload.request.parent:"projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY" AND protoPayload.request.validateOnly=true' \
--resource-names="projects/PROJECT_ID" \
--project=PROJECT_ID
El resultado se ve de la manera siguiente:
insertId: qwe123ty3
logName: projects/my-project/logs/cloudaudit.googleapis.com%2Fdata_access
operation:
first: true
id: projects/my-project/locations/us-west1/operations/12345abc-fb9b-4b6f-b02c-9a397ee807d4
producer: artifactregistry.googleapis.com
protoPayload:
'@type': type.googleapis.com/google.cloud.audit.AuditLog
authenticationInfo:
principalEmail: service-774919394028@gcp-sa-staging-artreg.iam.gserviceaccount.com
authorizationInfo:
- granted: true
permission: artifactregistry.versions.delete
resource: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
resourceAttributes: {}
methodName: google.devtools.artifactregistry.v1.ArtifactRegistry.BatchDeleteVersions
request:
'@type': type.googleapis.com/google.devtools.artifactregistry.v1.BatchDeleteVersionsRequest
names:
- projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:4bb3756e4e75dfbc3ced87521ed62b26d16fb4e17993ae6877165f2b6551fb55
- projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:e8185538b50df953529b300be4963b2c21158808becac7aa0d610f61de8ba701
- projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:7f7fb0a9453da49f831fe92eb8b1751be13acefe1bbd44cc3f0d63d41c422246
- projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:84ac871a34560b39dd7bde57b4d333f18a7e8c1b61c8d350c1fefeb1fcd2b3ac
parent: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
validateOnly: true
requestMetadata:
callerIp: private
callerSuppliedUserAgent: stubby_client
destinationAttributes: {}
requestAttributes:
auth: {}
time: '2023-05-26T04:31:21.909465579Z'
resourceName: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
serviceName: artifactregistry.googleapis.com
receiveTimestamp: '2023-05-26T04:31:22.641338594Z'
resource:
labels:
method: google.devtools.artifactregistry.v1.ArtifactRegistry.BatchDeleteVersions
project_id: my-project
service: artifactregistry.googleapis.com
type: audited_resource
severity: INFO
timestamp: '2023-05-26T04:31:21.909004200Z'
Aplica políticas a un repositorio
Para usar las políticas de limpieza definidas en un archivo JSON local, aplícalas a los repositorios en los que deseas que Artifact Registry maneje la eliminación automática de versiones de artefactos con gcloud CLI.
Para aplicar políticas de limpieza configuradas como Ejecución de prueba en la consola, establece la política como Borra artefactos.
Solo puedes aplicar políticas de limpieza a repositorios estándar. No puedes aplicar políticas de limpieza a lo siguiente:
- Un proyecto de Google Cloud,
Console
Para aplicar políticas de limpieza, haz lo siguiente:
Abre la página Repositorios en la consola de Google Cloud.
En la lista de repositorios, selecciona el repositorio y haz clic en Edita el repositorio.
En la sección Políticas de limpieza, selecciona Borrar artefactos.
Artifact Registry borra y retiene los artefactos que coincidan con tus políticas mediante un trabajo en segundo plano que se ejecuta de forma periódica. Los cambios deben en el plazo aproximado de un día.
gcloud
Para aplicar políticas de limpieza, ejecuta el siguiente comando en el directorio que contiene tu archivo de la política de limpieza de datos.
gcloud artifacts repositories set-cleanup-policies REPOSITORY \
--project=PROJECT_ID \
--location=LOCATION \
--policy=POLICY_FILE \
--no-dry-run
Reemplaza lo siguiente:
REPOSITORY
por el nombre del repositorioPROJECT_ID
por el ID del proyecto de Google Cloud.LOCATION
con el regional o multirregional location del repositorio.--no-dry-run
inhabilita la funcionalidad de ejecución de prueba para el repositorio.POLICY_FILE
es el nombre del archivo con la política de limpieza.
Por ejemplo, el siguiente comando aplica políticas en policy.json
al
el repositorio my-repo
en la región us-west1
del proyecto my-project
.
gcloud artifacts repositories set-cleanup-policies my-repo \
--project=my-project \
--location=us-west1 \
--policy=policy.json
Artifact Registry borra y retiene los artefactos que coincidan con tus políticas con un trabajo en segundo plano que se ejecuta periódicamente. Deberían aplicarse los cambios en aproximadamente un día.
Actualiza una política
Console
Abre la página Repositorios en la consola de Google Cloud.
En la lista de repositorios, selecciona el repositorio y haz clic en Edita el repositorio.
En la sección Políticas de limpieza, haz clic en el nombre de la política que deseas. que configurar para modificar.
Edita la política de limpieza y haz clic en Actualizar.
Tu política de limpieza se aplica a tu repositorio.
gcloud CLI
Para actualizar las políticas existentes, edita la configuración en el archivo de políticas y, luego, ejecuta el siguiente comando para volver a aplicar las políticas.
gcloud artifacts repositories set-cleanup-policies REPOSITORY \
--project=PROJECT_ID \
--location=LOCATION \
--policy=POLICY_FILE \
--no-dry-run
Reemplaza lo siguiente:
REPOSITORY
por el nombre del repositorioPROJECT_ID
por el ID del proyecto de Google Cloud.LOCATION
con el regional o multirregional location del repositorio.--no-dry-run
inhabilita la funcionalidad de ejecución de prueba para el repositorio.POLICY_FILE
es el nombre del archivo con la política de limpieza.
Enumerar políticas de limpieza de repositorios
Puedes ver las políticas de limpieza asociadas con un repositorio.
Console
Abre la página Repositorios en la consola de Google Cloud.
En la lista de repositorios, selecciona el repositorio que deseas ver.
En la sección Detalles del repositorio, haz clic en Mostrar más.
Se muestran los nombres de las políticas de limpieza.
Para ver o editar los detalles de las políticas de limpieza del repositorio, haz clic en Edita el repositorio.
Los detalles de tus políticas de limpieza existentes se enumeran en la sección Políticas de limpieza.
gcloud CLI
Ejecuta el siguiente comando:
gcloud artifacts repositories list-cleanup-policies REPOSITORY \
--project=PROJECT_ID \
--location=LOCATION
Reemplaza lo siguiente:
REPOSITORY
por el nombre del repositorioPROJECT_ID
por el ID del proyecto de Google Cloud.LOCATION
con el regional o multirregional location del repositorio.
Quita una política de un repositorio
Quita una política de limpieza de un repositorio cuando ya no quieras Artifact Registry para borrar automáticamente las versiones de los artefactos.
Console
Abre la página Repositorios en la consola de Google Cloud.
En la lista de repositorios, selecciona el repositorio y haz clic en Editar repositorio.
En la sección Políticas de limpieza, coloca el cursor sobre el nombre de la política que deseas modificar. que quieres borrar.
Haz clic en el ícono Borrar.
Haz clic en Actualizar.
Se borró la política de limpieza.
gcloud CLI
Ejecuta el siguiente comando:
gcloud artifacts repositories delete-cleanup-policies REPOSITORY \
--policynames=POLICY_NAMES \
--project=PROJECT_ID \
--location=LOCATION
Reemplaza lo siguiente:
REPOSITORY
es el nombre del repositorio.PROJECT_ID
es el ID de tu proyecto de Google Cloud.LOCATION
es el regional o multirregional location para el repositorio.POLICY_NAMES
es una lista separada por comas de los nombres de políticas para las políticas que quieres quitar.
Por ejemplo, el siguiente comando quita una política llamada delete-test
del repositorio my-repo
en la región us-west1
del proyecto my-project
:
gcloud artifacts repositories delete-cleanup-policies my-repo \
--policynames=delete-test \
--project=my-project \
--location=us-west1
Entradas del registro de auditoría para las políticas de limpieza
Para ver las entradas de registro de la política de limpieza en Cloud Logging,
Habilitar el registro de DATA_WRITE
Cuando configuras una política de limpieza en un repositorio, la operación se registra como un
actualización del repositorio (operación UpdateRepository
).
Cuando Artifact Registry borra una versión de un artefacto, registra el evento
Consulta los registros de acceso a los datos de Cloud Logging. Las entradas de registro muestran que la cuenta de servicio de Artifact Registry realizó la eliminación. El
El ID de la cuenta de servicio de Artifact Registry tiene el formato
service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com
Otras herramientas
Para imágenes de contenedor, también puedes usar las siguientes herramientas para el ciclo de vida de la imagen administración:
- gcrane: Una herramienta de registros de contenedores que puedes usar para copiar imágenes entre los repositorios.
- gcr-cleaner: Es una herramienta para borrar un contenedor. imágenes según criterios específicos.
Las herramientas gcrane
y gcr-cleaner
no son productos oficiales de Google.