Политика жизненного цикла в Yandex Cloud Registry
Политика жизненного цикла — это набор правил, которые управляют хранением или удалением артефактов в реестре. Политики помогают автоматически удалять старые или неиспользуемые версии артефактов для экономии места и снижения затрат на хранение.
Правила задаются при создании политики жизненного цикла в виде массива объектов правил в формате JSON.
Каждое правило в политике содержит фильтр по префиксу пути (path_prefix). Он определяет выборку артефактов, к которым применяется правило.
Примеры
| Префикс | Выборка |
|---|---|
.* |
Все артефакты в реестре |
ubuntu/.* |
Артефакты, пути которых начинаются с префикса ubuntu/ |
Важно
Правила применяются по пакетам. Если задать правило «Хранить только 10 последних версий» с path_prefix = .* для реестра, в котором есть два пакета (например, ubuntu и vault), это правило применится к каждому пакету отдельно. В результате в каждом пакете сохранится по 10 последних версий, а не 10 версий суммарно по всем пакетам.
На количество политик жизненного цикла и количество правил в них действуют квоты и лимиты.
Типы правил
Правила в политике жизненного цикла:
- применяются только к артефактам, которые попали в выборку;
- определяют, какие из попавших в выборку артефактов нужно сохранить или удалить.
KEEP — сохранение артефактов
Правила типа KEEP описывают, какие артефакты нужно сохранить от удаления политикой жизненного цикла. Эти правила имеют более высокий приоритет, чем правила удаления (HARD_DELETE и SOFT_DELETE).
Возможные условия сохранения:
- По возрасту — сохраняет артефакты, которые моложе указанного количества дней.
- По количеству версий — сохраняет указанное количество последних версий артефактов (например, 5 последних версий по дате создания).
HARD_DELETE — жесткое удаление
Правило типа HARD_DELETE безвозвратно удаляет артефакты, которые соответствуют условиям правила. После применения этого правила артефакты удаляются навсегда и не могут быть восстановлены.
Возможные условия удаления:
- По возрасту — удаляет те артефакты, которые старше указанного количества дней.
- По количеству версий — удаляет самые старые артефакты, если их количество превышает указанное (удаляются самые старые версии).
- Всегда — удаляет все артефакты.
SOFT_DELETE — мягкое удаление
Правило типа SOFT_DELETE помечает артефакты для удаления, но не удаляет их сразу. Артефакты остаются в реестре в течение периода ожидания (cooldown period), указанного в правиле. После истечения этого периода артефакты удаляются безвозвратно.
Примечание
Артефакты, помеченные для мягкого удаления, продолжают тарифицироваться до истечения периода ожидания.
Условия для мягкого удаления аналогичны описанным для правила HARD_DELETE.
Фильтры правил
Каждое правило содержит фильтры, которые определяют выборку артефактов, к которым применяется правило:
- Префикс пути (
path_prefix) — определяет, к каким артефактам применяется правило по их пути. Если указать.*, правило будет применяться ко всем артефактам всех пакетов в реестре. Можно указать конкретный префикс пути, например@path/prefix.*. - Docker-фильтры — позволяют дополнительно фильтровать Docker-образы по статусу тегов (с тегами, без тегов).
- Maven-фильтры — позволяют дополнительно фильтровать Java-артефакты по типу версии (релизные версии, снапшоты).
Правила по количеству версий или дате применяются к выборке артефактов, которые попадают под все указанные фильтры.
Применение политик
Политики жизненного цикла применяются автоматически по расписанию. Обработка правил происходит ежедневно в указанное время. Изменения политик вступают в силу не сразу, а применяются при следующем запуске обработки.
Правила применяются в следующем порядке приоритета:
- Правила
KEEP— определяются артефакты, которые должны быть сохранены. - Правила
HARD_DELETEиSOFT_DELETE— определяются артефакты для удаления, за исключением тех, которые защищены правиламиKEEP.
Объект правила (LifecycleRule)
Поля keep_by_age, keep_by_version и delete — взаимоисключающие, можно указать только одно действие в правиле.
| Поле | Тип | Описание |
|---|---|---|
path_prefix |
string |
Префикс пути, определяющий выборку артефактов, к которым применяется правило. Если не указан, правило применяется ко всем артефактам. |
keep_by_age |
KeepByAgeLifecycleRule | Хранение артефактов по возрасту. |
keep_by_version |
KeepByVersionLifecycleRule | Хранение артефактов по количеству версий. |
delete |
DeleteLifecycleRule | Удаление артефактов. |
docker_filters |
DockerFilters | Фильтры для правил, применяемых к Docker-образам. |
maven_filters |
MavenFilters | Фильтры для правил, применяемых к Java-артефактам. |
version_regexp |
string |
Регулярное выражение для поиска версии пакета или тега Docker-образа. |
Объект KeepByAgeLifecycleRule
| Поле | Тип | Описание |
|---|---|---|
younger_than_days |
integer |
Хранить артефакты моложе указанного количества дней. |
Объект KeepByVersionLifecycleRule
| Поле | Тип | Описание |
|---|---|---|
keep_versions_count |
integer |
Хранить указанное количество версий артефакта. |
Объект DeleteLifecycleRule
Поля older_than_days, version_condition и always — взаимоисключающие, можно указать только одно условие удаления.
| Поле | Тип | Описание |
|---|---|---|
type |
string |
Тип удаления:
|
cooldown_period_days |
integer |
Период ожидания в днях перед удалением. |
older_than_days |
integer |
Удалять артефакты старше указанного количества дней. |
version_condition |
DeleteByVersionCondition | Удаление артефактов по количеству версий. |
always |
boolean |
Удалять все артефакты, которые попали в выборку. |
Объект DeleteByVersionCondition
| Поле | Тип | Описание |
|---|---|---|
versions_count_greater_than |
integer |
Удалять артефакты, если количество версий превышает указанное число. |
Объект DockerFilters
| Поле | Тип | Описание |
|---|---|---|
tag_status |
string |
Фильтровать Docker-образы по статусу тега:
|
Объект MavenFilters
| Поле | Тип | Описание |
|---|---|---|
version_type |
string |
Фильтровать Java-артефакты по типу версии:
|