Изменить политику удаления
После создания политики удаления вы можете изменить ее правила, а также статус, имя или описание.
- В консоли управления
выберите каталог, в котором создан реестр. - В списке сервисов выберите Container Registry.
- Выберите реестр и нажмите на строку с его именем.
- Выберите репозиторий и нажмите на строку с его именем.
- На панели слева нажмите
Жизненный цикл. - В строке с нужной политикой удаления нажмите кнопку
и выберите Редактировать. - Измените параметры политики удаления:
-
Имя.
-
Описание.
-
Статус.
-
В блоке Правила политики удаления измените параметры правил:
- Тег — тег Docker-образа для фильтрации. Поддерживаются регулярные выражения языка Java. Например, выражение
test.*позволяет получить все образы с тегами, начинающимися наtest. - Образов без тегов — флаг для применения правила к Docker-образам без тегов.
- Время от создания образа, в сутках — время, через которое Docker-образ может попадать под политику удаления.
- Образов оставить — количество Docker-образов, которые не будут удалены, даже если подходят по правилу.
- Описание.
- Тег — тег Docker-образа для фильтрации. Поддерживаются регулярные выражения языка Java. Например, выражение
-
- Нажмите кнопку Сохранить.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
-
Посмотрите описание команды CLI для обновления параметров политики:
yc container repository lifecycle-policy update --help -
Измените параметры политики, например, переименуйте политику:
yc container repository lifecycle-policy update <идентификатор_политики> \ --new-name=new-policyЧтобы узнать идентификатор политики, получите список политик удаления в репозитории или в реестре.
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Откройте конфигурационный файл и отредактируйте фрагмент с описанием политики:
resource "yandex_container_repository_lifecycle_policy" "my_lifecycle_policy" { name = "best-policy" status = "active" repository_id = "crpfvi6o4ra7********" rule { description = "rule for applying policy" untagged = true tag_regexp = ".*" retained_top = 1 expire_period = "48h" } } -
Примените изменения:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validateЕсли конфигурация является корректной, появится сообщение:
Success! The configuration is valid. -
Выполните команду:
terraform planВ терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply -
Подтвердите изменения: введите в терминале слово
yesи нажмите Enter.
-
После этого в указанном репозитории будет изменена политика удаления. Проверить изменение политики можно в консоли управления
yc container repository lifecycle-policy list --registry-id <идентификатор_реестра>
Чтобы изменить политику удаления, воспользуйтесь методом Update для ресурса LifecyclePolicyService. В свойстве lifecycle_policy_id укажите идентификатор политики.
Получить список политик удаления можно с помощью метода List для ресурса LifecyclePolicyService.
Примеры
Изменить правила политики удаления
-
Подготовьте новые правила политики и сохраните их в файл
new-rules.json.Пример содержимого файла с правилами, где:
description— описание правила политики.tag_regexp— тег Docker-образа для фильтрации. Поддерживаются регулярные выражения языка Java. Например, выражениеtest.*позволяет получить все образы с тегами, начинающимися наtest.untagged— флаг для применения правила к Docker-образам без тегов.expire_period— время, через которое Docker-образ может попадать под политику удаления. Формат параметра — число и единица измеренияs,m,hилиd(секунды, минуты, часы или дни).expire_periodдолжен быть кратен 24 часам.retained_top— количество Docker-образов, которые не будут удалены, даже если подходят по правилу.
[ { "description": "delete prod Docker images older than 60 days but retain 20 last ones", "tag_regexp": "prod", "expire_period": "60d", "retained_top": 20 }, { "description": "delete all test Docker images except 10 last ones", "tag_regexp": "test.*", "retained_top": 10 }, { "description": "delete all untagged Docker images older than 48 hours", "untagged": true, "expire_period": "48h" } ] -
Измените правила политики, выполнив команду со следующим параметром:
new-rules— путь к файлу с новым описанием политик.
Внимание
Обновление политики полностью перезаписывает все текущие правила — они будут удалены.
yc container repository lifecycle-policy update crp6lg1868p3******** --new-rules ./new-rules.jsonРезультат:
WARN: All current lifecycle rules will be overwritten. Are you sure?[y/N] y id: crp6lg1868p3******** name: test-policy ... expire_period: 172800s tag_regexp: test.* untagged: true
Изменить статус политики удаления
Активируйте политику удаления
Сделайте выключенную политику активной, выполнив команду с флагом --activate:
yc container repository lifecycle-policy update crp6lg1868p3******** --activate
Результат:
id: crp6lg1868p3********
name: test-policy
repository_id: crp3cpm16edq********
...
expire_period: 172800s
tag_regexp: test.*
untagged: true
Выключите политику удаления
Выключите активную политику, выполнив команду с флагом --disable:
yc container repository lifecycle-policy update crp6lg1868p3******** --disable
Результат:
id: crp6lg1868p3********
name: test-policy
repository_id: crp3cpm16edq********
...
expire_period: 172800s
tag_regexp: test.*
untagged: true
Изменить имя политики удаления
Измените имя политики, выполнив команду:
yc container repository lifecycle-policy update crp6lg1868p3******** --new-name new-policy
Где --new-name — новое имя политики. Требования к имени:
- длина — от 2 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
Результат:
id: crp6lg1868p3********
name: new-policy
repository_id: crp3cpm16edq********
...
expire_period: 172800s
tag_regexp: test.*
untagged: true
Изменить описание политики удаления
Измените описание политики, выполнив команду:
yc container repository lifecycle-policy update crp6lg1868p3******** --new-description "new description"
Где --new-description — новое описание политики.
Результат:
id: crp6lg1868p3********
name: test-policy
repository_id: crp3cpm16edq********
...
expire_period: 172800s
tag_regexp: test.*
untagged: true