如何处理 GCP Container Registry 中的保留策略

如何处理 GCP Container Registry 中的保留策略

GCP 容器注册表建立在 GCP 云存储之上,人们可以在那里设置相当复杂的保留策略。

但是,容器注册表中没有这样的功能,并且由于存储中的图像之间没有区分(所有图像文件名都是 sha-hashes,并位于同一个存储桶中的同一个目录中),因此无法设置策略来仅保留单个图像的最后五个版本。

是否有人知道是否可以在 GCP 中为图像设置更复杂的保留策略以及应该如何做?

答案1

目前似乎没有办法向 Container Registry 添加保留策略。不过,可以使用 gcloud 自动删除多余的图像。这是我编写的一个可以用作 cronjob 的脚本:它会遍历图像并删除除五个最新版本之外的所有图像。

#!/bin/bash

for image_name in $(gcloud container images list); do
    for digest in $(gcloud container images list-tags $image_name --format=json | awk '/digest/{ print $2 }' | sed -e 's/^"//' -e 's/.\{2\}$//' | tail -n +6); do 
            gcloud container images -q delete $image_name@$digest; 
    done;
done;

可以通过修改 -n 选项来更改保留的图像数量tail,该选项的值为 +(N+1),N 表示想要保留的图像数量。

稍后我将提供 Kubernetes CronJob 规范。

编辑:这是我制作的工具https://bitbucket.org/Fleuri/containerretention.请随意使用!

相关内容