Google-Cloud-Platform

如何處理 GCP Container Registry 中的保留政策

  • February 13, 2019

GCP Container Registry 建立在 GCP Cloud Storage 之上,可以在那裡設置相當複雜的保留策略。

但是,容器系統資料庫中沒有這樣的功能,並且由於儲存中的圖像之間沒有區別(所有圖像文件名都是 sha-hashes 並且位於同一儲存桶中的同一目錄中),因此無法例如設置保留策略只有單個圖像的最後五個版本。

有誰知道是否可以為 GCP 中的圖像設置更複雜的保留策略以及應該如何做?

目前似乎沒有辦法將保留策略添加到 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;

可以通過修改tail’s -n 選項來更改保留圖像的數量,值為 +(N+1),N 是要保留的圖像數量。

稍後我將提供 Kubernetes CronJob 規範。

編輯:這是我製作的工具https://bitbucket.org/Fleuri/containerretention。隨意使用!

引用自:https://serverfault.com/questions/952570