Настройка политик жизненного цикла
Политики жизненного цикла позволяют автоматически управлять хранением и удалением артефактов в реестре. В этом руководстве приведены примеры настройки политик для различных сценариев использования.
Подготовьте облако к работе
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления
, затем войдите в Yandex Cloud или зарегистрируйтесь. - На странице Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVEилиTRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака
Подробнее об облаках и каталогах.
Пример 1: Политика для Docker-образов Ubuntu
В этом примере создается политика для управления Docker-образами с префиксом пути ubuntu.*. Политика содержит три правила:
- Жесткое удаление всех Docker-образов без тегов старше 7 дней.
- Мягкое удаление Docker-образов с тегами, если их количество превышает 10 (период ожидания — 7 дней).
- Сохранение последних 5 версий образов с тегами.
Подготовьте правила
Создайте файл ubuntu-policy-rules.json со следующим содержимым:
[
{
"path_prefix": "ubuntu.*",
"delete": {
"type": "HARD_DELETE",
"older_than_days": 7
},
"docker_filters": {
"tag_status": "UNTAGGED"
}
},
{
"path_prefix": "ubuntu.*",
"delete": {
"type": "SOFT_DELETE",
"cooldown_period_days": 7,
"version_condition": {
"versions_count_greater_than": 10
}
},
"docker_filters": {
"tag_status": "TAGGED"
}
},
{
"path_prefix": "ubuntu.*",
"keep_by_version": {
"keep_versions_count": 5
},
"docker_filters": {
"tag_status": "TAGGED"
}
}
]
-
Первое правило (
HARD_DELETE) безвозвратно удаляет все Docker-образы без тегов, которые старше 7 дней. Это помогает очистить реестр от промежуточных образов, созданных в процессе сборки. -
Второе правило (
SOFT_DELETE) помечает для удаления Docker-образы с тегами, если количество Docker-образов превышает 10. Docker-образы остаются в реестре в течение 7 дней (период ожидания), после чего удаляются безвозвратно. Это позволяет сохранить историю версий, но ограничивает их количество. -
Третье правило (
keep_by_version) защищает от удаления последние 5 версий Docker-образов с тегами, даже если они попадают под условия второго правила. Это гарантирует, что всегда будут доступны последние рабочие версии.
Примечание
Правила применяются в порядке приоритета: сначала правила сохранения (keep_by_version), затем правила удаления. Поэтому последние 5 версий будут защищены от удаления вторым правилом.
Создайте политику
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Создайте политику жизненного цикла:
yc cloud-registry registry lifecycle-policy create \
--name ubuntu-lifecycle-policy \
--description "Политика для управления Docker-образами Ubuntu" \
--registry-id <идентификатор_реестра> \
--state DISABLED \
--rules ubuntu-policy-rules.json
Где:
--name — имя политики.
--description — описание политики.
--registry-id — идентификатор реестра, для которого создается политика.
--state — состояние политики после создания (DISABLED — выключена).
--rules — путь к файлу ubuntu-policy-rules.json.
Чтобы создать политику жизненного цикла, воспользуйтесь методом REST API Create для ресурса LifecyclePolicy или вызовом gRPC API LifecyclePolicyService/Create.
Пример 2: Политика для Java-артефактов
В этом примере создается политика для управления Java-артефактами с префиксом пути com/example/myapp/.*. Политика содержит два правила:
- Жесткое удаление всех снапшотов.
- Сохранение последних 2 снапшотов.
Подготовьте правила
Создайте файл maven-policy-rules.json со следующим содержимым:
[
{
"path_prefix": "com/example/myapp/.*",
"delete": {
"type": "HARD_DELETE",
"always": true
},
"maven_filters": {
"version_type": "SNAPSHOT"
}
},
{
"path_prefix": "com/example/myapp/.*",
"keep_by_version": {
"keep_versions_count": 2
},
"maven_filters": {
"version_type": "SNAPSHOT"
}
}
]
-
Первое правило (
HARD_DELETE) удаляет все снапшоты Java-артефактов, соответствующих префиксу пути. Это помогает автоматически очищать реестр от устаревших снапшотов, которые обычно используются только для разработки и тестирования. -
Второе правило (
keep_by_version) защищает от удаления последние 2 снапшота. Это гарантирует, что разработчики всегда имеют доступ к последним собранным снапшотам, даже если они будут удалены первым правилом.
Примечание
Правило сохранения (keep_by_version) имеет более высокий приоритет, чем правило удаления. Поэтому последние 2 снапшота будут сохранены, несмотря на первое правило, которое удаляет все снапшоты.
Создайте политику
Создайте политику жизненного цикла:
yc cloud-registry registry lifecycle-policy create \
--name maven-snapshot-policy \
--description "Политика для управления снапшотами Java-артефактов" \
--registry-id <идентификатор_реестра> \
--state DISABLED \
--rules maven-policy-rules.json
Где:
--name — имя политики.
--description — описание политики.
--registry-id — идентификатор реестра, для которого создается политика.
--state — состояние политики после создания (DISABLED — выключена).
--rules — путь к файлу maven-policy-rules.json.
Чтобы создать политику жизненного цикла, воспользуйтесь методом REST API Create для ресурса LifecyclePolicy или вызовом gRPC API LifecyclePolicyService/Create.
Рекомендации
- Создавайте политики в состоянии
DISABLED— это позволит проверить правила перед их применением. - Используйте мягкое удаление (
SOFT_DELETE) для важных артефактов, чтобы иметь возможность восстановить их в течение периода ожидания. - Используйте правила сохранения (
KEEP) для явной защиты артефактов от удаления — правилаkeep_by_versionиkeep_by_ageимеют более высокий приоритет, чем правила удаления, и гарантируют сохранение указанных артефактов. - Комбинируйте правила сохранения и удаления для гибкого управления артефактами.