Как обрабатывать политики хранения в реестре контейнеров GCP

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

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

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

1
задан 6 February 2019 в 20:01
1 ответ

Похоже, что в настоящее время нет возможности добавить политику удержания в реестр контейнеров. Удаление дополнительных изображений может быть автоматизировано с помощью 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.

EDIT: Вот инструмент, который я сделал https://bitbucket.org/Fleuri/containerretention. Не стесняйтесь!

2
ответ дан 3 December 2019 в 20:10

Теги

Похожие вопросы