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

Fle*_*uri 3 google-cloud-storage google-cloud-platform docker-registry gcloud

GCP 容器注册表构建在 GCP Cloud Storage 之上,可以在那里设置相当复杂的保留策略。

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

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

Fle*_*uri 6

目前似乎无法向 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;
Run Code Online (Sandbox Code Playgroud)

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

稍后我将提供 Kubernetes CronJob 规范。

编辑:这是我制作的工具https://bitbucket.org/Fleuri/containerretention。放心使用!

  • 我也会把它加入到混合中,它是 alpha,但似乎比 bash 脚本更健壮。https://github.com/marekaf/gcr-lifecycle-policy (2认同)