Назад | Перейти на главную страницу

Как работать с политиками хранения в GCP Container Registry

Реестр контейнеров GCP построен поверх облачного хранилища GCP, и там можно установить довольно сложные политики хранения.

Однако в реестре контейнеров такой функциональности нет, и поскольку нет разделения между изображениями в хранилище (все имена файлов изображений являются ша-хешами и находятся в одном каталоге в одном сегменте), нельзя, например, установить политику сохранения только последние пять версий одного изображения.

Кто-нибудь знает, можно ли установить более сложные политики хранения для изображений в GCP и как это делать?

Похоже, что в настоящее время нет возможности добавить политики хранения в реестр контейнеров. Однако удаление лишних изображений можно автоматизировать с помощью gcloud. Вот сценарий, который я написал, который можно использовать в качестве задания cron: он выполняет итерацию по изображениям и удаляет все, кроме пяти новейших версий изображения.

#!/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. Не стесняйтесь использовать!