Una política de limpieza de Artifact Registry define criterios para borrar automáticamente las versiones de artefactos que ya no necesitas o para conservar los artefactos que deseas almacenar 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 mantener políticas con criterios de retención de artefactos.
Si la versión de un artefacto coincide con los criterios de una política de eliminación y de una de conservación, Artifact Registry aplica la política de conservación.
Las eliminaciones activadas por políticas de eliminación se tienen en cuenta en tu cuota de solicitudes de eliminación de proyecto de Artifact Registry y se limitan a 300,000 eliminaciones por repositorio y por día.
Programa de la aplicación de políticas
Artifact Registry borra y retiene artefactos que coincidan con tus políticas de limpieza con un trabajo en segundo plano que se ejecuta de forma periódica. Los cambios se aplican en aproximadamente un día.
Cantidad máxima de políticas de limpieza por repositorio
Puedes aplicar el máximo de 10 políticas de limpieza a un repositorio.
Formatos admitidos
Durante la vista previa, puedes establecer una política de limpieza en los repositorios estándar para todos los formatos de repositorio, excepto Apt y Yum.
Funciones obligatorias
Si quieres obtener los permisos que necesitas para aplicar o quitar políticas de limpieza,
pídele a tu administrador que te otorgue el
rol de IAM Administrador de Artifact Registry (roles/artifactregistry.admin
) en el proyecto del repositorio.
Si quieres obtener más información para otorgar funciones, consulta Administra el acceso.
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 los artefactos que cumplan con los criterios de una política de limpieza, sigue estos pasos:
artifactregistry.versions.delete
Es posible que también puedas obtener estos permisos con funciones personalizadas o con otras funciones predefinidas.
La función predeterminada del agente de servicio de Artifact Registry incluye el permiso artifactregistry.versions.delete
, que se necesita 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 crear un archivo de políticas creando y editando un archivo JSON y, luego, usando Google Cloud CLI para aplicar la política o con la consola de Google Cloud. Las políticas de eliminación especifican condiciones para borrar artefactos. Las políticas de conservación especifican condiciones para conservar un artefacto o una cantidad de versiones recientes que se conservarán. No puedes usar condiciones y 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 deseas que se borren por algún motivo, crea una política de conservación conditional, o una política de conservación de versiones más recientes y de eliminación. Si un artefacto coincide con los criterios de la política de eliminación y de la política de conservación, el artefacto se conserva.
Console
Puedes crear una política de eliminación para un repositorio nuevo o existente.
Sigue estos pasos para agregar una política de eliminación a un repositorio existente:
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 cualquier artefacto. Para obtener más información sobre cómo ver los resultados de la prueba, consulta ejecución de prueba.
Una vez que estés seguro de que la política funciona según lo previsto, vuelve a editar la configuración del repositorio y selecciona Borrar artefactos para aplicar la política de limpieza y borrar 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 Eliminación condicional.
Estado de la etiqueta: Indica si la política debe verificar si hay artefactos etiquetados o no etiquetados. Los artefactos se etiquetan cuando se envía o se extrae una imagen desde o hacia 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 a artefactos etiquetados y sin etiquetar.
- Etiquetado: Solo se aplica a artefactos etiquetados.
- Sin etiquetar: Solo se aplica a artefactos sin etiquetar.
Los formatos que no admiten etiquetas se tratan como
untagged
. Para obtener más información sobre el estado de la etiqueta y su aplicación a las políticas de limpieza, consulta la referencia de TagState.
Las siguientes son formas opcionales de definir la política de eliminación:
- Prefijos de etiqueta: Es una lista de prefijos de etiqueta separados por comas. Por ejemplo, los prefijos
test
ystaging
coincidirían con las imágenes con las etiquetastestenv
ystaging-1.5
.tagState
se debe configurar comoTAGGED
para usar prefijos de etiqueta. - Prefijos de versión: Es una lista separada por comas de prefijos de versión de artefactos. 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 creó la versión de un artefacto en el repositorio, especificado como una duración.
Por ejemplo,
30d
equivale a 30 días. Puedes especificar la duración de segundos, minutos, horas o días agregandos
,m
,h
od
respectivamente. - Nuevo que: Es el tiempo máximo desde que se creó la versión de un artefacto en el repositorio, especificado como una duración.
Por ejemplo,
30d
equivale a 30 días.
- Prefijos de etiqueta: Es una lista de prefijos de etiqueta 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 Update.
Se aplicará la política de limpieza a tu repositorio. Puedes ver tus políticas de limpieza en la sección Detalles del repositorio si haces 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 aplicas 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 verificar si hay artefactos etiquetados o no. Los artefactos se etiquetan cuando se envía o se extrae una imagen desde o hacia un repositorio. Para obtener más información sobre las etiquetas de Docker, consulta Conceptos de contenedores. Los valores admitidos sontagged
,untagged
oany
. Los formatos que no admiten etiquetas se tratan comountagged
.tagPrefixes
: TAG_PREFIXES es una lista de prefijos de etiqueta separados por comas. Por ejemplo,"test", "staging"
coincidiría con las imágenes con las etiquetas"testenv"
y"staging-1.5"
.tagState
se debe configurar comoTAGGED
para usar prefijos de etiqueta.versionNamePrefixes
: VERSION_PREFIXES es una lista separada por comas de prefijos de versión de artefactos. Por ejemplo,"v1", "v2"
coincidiría con las versiones"v1.5"
,"v2.0alpha"
y"v10.2"
.packageNamePrefixes
: PACKAGE_PREFIXES es una lista separada por comas de prefijos de nombre 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
equivale a 30 días. Puedes especificar la duración de segundos, minutos, horas o días agregandos
,m
,h
od
respectivamente.newerThan
: NEWER_THAN_DURATION es el tiempo máximo desde que se creó la versión de un artefacto en el repositorio, especificado como una duración. Por ejemplo,30d
equivale a 30 días.
Crea una política de conservación condicional
Una política de conservación condicional especifica criterios para retener artefactos. Estas políticas funcionan con las políticas de eliminación para conservar los artefactos que se borrarán según las especificaciones de tu política de eliminación, pero que deseas conservar. Cuando un artefacto coincide con los criterios de una política de eliminación y de una política de conservación, el artefacto se conserva.
Console
Puedes crear una política de conservación para un repositorio nuevo o existente.
Sigue estos pasos para agregar una política de conservación a un repositorio existente:
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 cualquier artefacto. Debes establecer al menos una política de eliminación para ver los resultados de tu política de conservación. Para obtener más información sobre cómo ver los resultados de la prueba, consulta ejecución de prueba.
Una vez que estés seguro de que tus políticas funcionan según lo previsto, vuelve a editar la configuración del repositorio y selecciona Borrar artefactos para aplicar tus políticas de limpieza y borrar 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 verificar si hay artefactos etiquetados o no etiquetados. Los artefactos se etiquetan cuando se envía o se extrae una imagen desde o hacia 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 a artefactos etiquetados y sin etiquetar.
- Etiquetado: Solo se aplica a artefactos etiquetados.
- Sin etiquetar: Solo se aplica a artefactos sin etiquetar.
Los formatos que no admiten etiquetas se tratan como
untagged
. Para obtener más información sobre el estado de la etiqueta y su aplicación a las políticas de limpieza, consulta la referencia de TagState.
Las siguientes son formas opcionales de definir la política de conservación:
- Prefijos de etiqueta: Es una lista de prefijos de etiqueta separados por comas. Por ejemplo, los prefijos
test
ystaging
coincidirían con las imágenes con las etiquetastestenv
ystaging-1.5
.tagState
se debe configurar comoTAGGED
para usar prefijos de etiqueta. - Prefijos de versión: Es una lista separada por comas de prefijos de versión de artefactos. 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 separados por comas.
Por ejemplo,
red, blue
coincidiría con los nombres de artefactosred-team
,redis
ybluebird
.
- Anterior a: 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
equivale a 30 días. Puedes especificar la duración de segundos, minutos, horas o días agregandos
,m
,h
od
respectivamente. - Nuevo que: Es el tiempo máximo desde que se creó la versión de un artefacto en el repositorio, especificado como una duración.
Por ejemplo,
30d
equivale a 30 días.
- Prefijos de etiqueta: Es una lista de prefijos de etiqueta 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 Update.
Se aplicará la política de limpieza a tu repositorio.
JSON
El formato es similar al de 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
con un nombre para la política de limpieza El nombre debe ser único dentro del grupo de políticas que aplicas a un repositorio.TAG_STATUS
con el estado de etiqueta, que indica si la política debe verificar si hay artefactos etiquetados o no. Los artefactos se etiquetan cuando se envía o se extrae una imagen hacia o desde un repositorio. 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 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
. Para obtener más información sobre el estado de la etiqueta y su aplicación a las políticas de limpieza, consulta la referencia de TagState.TAG_PREFIXES
por una lista de prefijos de etiqueta separados por comas. Por ejemplo, los prefijostest
ystaging
coincidirían con las imágenes con las etiquetastestenv
ystaging-1.5
.tagState
se debe configurar comoTAGGED
para usar prefijos de etiqueta.VERSION_PREFIXES
por una lista separada por comas de prefijos de la versión de los artefactos Por ejemplo,v1, v2
coincidiría con las versionesv1.5
,v2.0alpha
yv10.2
.PACKAGE_PREFIXES
por 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
.
OLDER_THAN_DURATION
por 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
equivale a 30 días. Puedes especificar la duración de segundos, minutos, horas o días si agregass
,m
,h
od
, respectivamente.NEWER_THAN_DURATION
por el tiempo máximo desde que se creó la versión de un artefacto en el repositorio, especificado como una duración. Por ejemplo,30d
equivale a 30 días.
Crea una política de conservación de versiones más reciente
Puedes crear una política de conservación para conservar una cantidad específica de versiones. No puedes usar los criterios de mantención condicional y Mantener las versiones más recientes en la misma política de conservación.
Las políticas funcionan con las políticas de eliminación para conservar los artefactos que se borrarían de acuerdo con las especificaciones de tu política de eliminación, pero que deseas conservar. Cuando un artefacto coincide con los criterios de una política de eliminación y de una política de conservación, el artefacto se conserva.
Console
Puedes crear una política de conservación de las versiones más recientes para un repositorio nuevo o existente.
Sigue estos pasos para agregar una política de conservación de versiones más recientes a un repositorio existente:
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 cualquier artefacto. Debes establecer al menos una política de eliminación para ver los resultados de tu política de conservación. Para obtener más información sobre cómo ver los resultados de la prueba, consulta ejecución de prueba.
Una vez que estés seguro de que tus políticas funcionan según lo previsto, vuelve a editar la configuración del repositorio y selecciona Borrar artefactos para aplicar tus políticas de limpieza y borrar 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 Conservar las versiones más recientes.
En el campo Recuento de Keep, ingresa la cantidad de versiones de un artefacto que se conservarán en tu repositorio.
Opcional: Selecciona Prefijos de paquetes para especificar los prefijos de paquetes a los que se aplicará la política de conservación. Por ejemplo,
red, blue
coincidiría con los nombres de artefactosred-team
,redis
ybluebird
.Para agregar más políticas de limpieza, haz clic en Agregar una política de limpieza.
Haz clic en Update.
Se aplicará la política de limpieza a tu repositorio. Puedes ver tus políticas de limpieza en la sección Detalles del repositorio si haces clic en Mostrar más.
JSON
El formato es similar al de 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 una cantidad específica de versiones tiene una sección mostRecentVersions
en lugar de condition
.
{
"name": "KEEP_POLICY_NAME",
"action": {"type": "Keep"},
"mostRecentVersions": {
"packageNamePrefixes": ["PACKAGE_PREFIXES"],
"keepCount": MINIMUM_NUMBER
}
}
Reemplaza lo siguiente:
KEEP_POLICY_NAME
por un nombre para la política de conservación El nombre debe ser único dentro del grupo de políticas que aplicas a un repositorio.PACKAGE_PREFIXES
con los prefijos de paquete opcionales a los que se aplicará la política de conservación Por ejemplo,red, blue
coincidiría con los nombres de artefactosred-team
,redis
ybluebird
.
MINIMUM_NUMBER
por la cantidad de versiones de un artefacto que se conservarán en tu repositorio.
Para aplicar la política de conservación a todos los paquetes en tu repositorio, omite la condición packageNamePrefixes
. Se conserva la cantidad especificada de versiones recientes de cada paquete en tu repositorio.
Ejemplo de archivo de política
En el siguiente ejemplo de archivo de política, hay una política de eliminación y dos políticas de conservación.
- La política
delete-prerelease
quita las versiones de los artefactos 30 días después de la carga si este comienza con la cadenaalpha
ov0
. - La política
keep-tagged-release
conserva los 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 los artefactos cuyo nombre de archivo comienza 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 configurarla para que se ejecute de prueba en
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 consultar los registros de auditoría de acceso a los datos de Artifact Registry. Si quieres recibir registros de auditoría de acceso a los datos para políticas de limpieza, debes habilitar de forma explícita el tipo de escritura de datos de registros de auditoría de acceso a los 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 Editar 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 las políticas de Eliminación condicional, Conservación condicional o Conservar las versiones más recientes.
Haz clic en Update.
Cuando una política de eliminación genera una acción BatchDeleteVersions
, el parámetro validateOnly
se evalúa como "true"
.
Para consultar los registros de auditoría de las ejecuciones de prueba de las 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
por la ubicación regional o multirregional 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 los registros de auditoría de las ejecuciones de prueba de las 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
Las políticas de limpieza creadas en la consola de Google Cloud se aplican en el momento de la creación o actualización.
Para usar las políticas de limpieza definidas en un archivo JSON local, aplícalas a los repositorios en los que quieras que Artifact Registry controle la eliminación automática de las versiones de los artefactos con gcloud CLI.
Solo puedes aplicar políticas de limpieza a repositorios estándar. No puedes aplicar políticas de limpieza a los siguientes elementos:
- Un proyecto de Google Cloud,
- Repositorios virtuales.
Para aplicar políticas de limpieza, ejecuta el siguiente comando en el directorio con el archivo de políticas de limpieza.
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
por la ubicación regional o multirregional 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, con el siguiente comando, se aplican políticas en policy.json
al repositorio my-repo
en la región us-east1
del proyecto my-project
.
gcloud artifacts repositories set-cleanup-policies my-repo \
--project=my-project \
--location=us-east1 \
--policy=policy.json
Artifact Registry borra y conserva los artefactos que coincidan con tus políticas mediante un trabajo en segundo plano que se ejecuta de forma periódica. Los cambios deberían aplicarse en el plazo de un día aproximadamente.
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 Editar repositorio.
En la sección Políticas de limpieza, haz clic en el nombre de la política que quieres modificar.
Edita la política de limpieza y haz clic en Actualizar.
Se aplicará la política de limpieza 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 aplicar las políticas nuevamente.
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
por la ubicación regional o multirregional 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 Editar repositorio.
Los detalles de las 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
por la ubicación regional o multirregional del repositorio
Quita una política de un repositorio
Quita una política de limpieza de un repositorio cuando ya no quieras que Artifact Registry borre 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 borrar.
Haz clic en el ícono Borrar.
Haz clic en Update.
Se borrará 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 la ubicación regional o multirregional del repositorio.POLICY_NAMES
es una lista separada por comas de los nombres de las políticas que deseas quitar.
Por ejemplo, con el siguiente comando, se quita una política llamada delete-test
del
repositorio my-repo
en la región us-east1
del proyecto my-project
:
gcloud artifacts repositories delete-cleanup-policies my-repo \
--policynames=delete-test \
--project=my-project \
--location=us-east1
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, debes enable el registro de DATA_WRITE
.
Cuando configuras una política de limpieza en un repositorio, la operación se registra como una actualización del repositorio (operación UpdateRepository
).
Cuando Artifact Registry borra una versión de un artefacto, registra el evento en 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
ID de la cuenta de servicio de Artifact Registry tiene el formato
service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com
Otras herramientas
Para las imágenes de contenedor, también puedes usar las siguientes herramientas de administración del ciclo de vida de las imágenes:
- gcrane: Una herramienta de Container Registry que puedes usar para copiar imágenes entre repositorios.
- gcr-cleaner: una herramienta para borrar imágenes de contenedor según criterios específicos
Las herramientas de gcrane
y gcr-cleaner
no son productos oficiales de Google.