Создать политику удаления
Задать политику удаления можно только для репозитория. Чтобы узнать имя репозитория, получите список репозиториев в реестре.
- В консоли управления
выберите каталог, в котором создан реестр. - В списке сервисов выберите Container Registry.
- Выберите реестр и нажмите на строку с его именем.
- Выберите репозиторий и нажмите на строку с его именем.
- На панели слева нажмите
Жизненный цикл. - В правом верхнем углу нажмите кнопку Создать.
- Задайте параметры политики удаления:
- (Опционально) Имя.
- (Опционально) Описание.
- Статус — статус политики удаления после создания. Не рекомендуется создавать сразу активную политику со статусом
ACTIVE
. - В блоке Правила политики удаления добавьте правила:
-
Нажмите кнопку Добавить.
-
Задайте параметры правила:
- Тег — тег Docker-образа для фильтрации. Поддерживаются регулярные выражения языка Java. Например, выражение
test.*
позволяет получить все образы с тегами, начинающимися наtest
. - Образов без тегов — флаг для применения правила к Docker-образам без тегов.
- Время от создания образа, в сутках — время, через которое Docker-образ может попадать под политику удаления.
- Образов оставить — количество Docker-образов, которые не будут удалены, даже если подходят по правилу.
- (Опционально) Описание.
- Тег — тег Docker-образа для фильтрации. Поддерживаются регулярные выражения языка Java. Например, выражение
-
- Нажмите кнопку Создать.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
-
Подготовьте правила политики и сохраните их в файл
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" } ]
-
Создайте политику удаления, выполнив команду:
yc container repository lifecycle-policy create \ --repository-name crp3cpm16edq********/ubuntu \ --name test-policy \ --description "disabled lifecycle-policy for tests" \ --rules ./rules.json
Где:
-
--repository-name
— имя репозитория. -
--rules
— путь к файлу с описанием политик. -
--description
— (опционально) описание политики удаления. -
--name
— (опционально) имя политики. Требования к имени:- длина — от 3 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
Примечание
Политика по умолчанию создается выключенной (в статусе
DISABLED
). Не рекомендуется создавать сразу активную политику с флагом--active
.Результат:
id: crp6lg1868p3******** name: test-policy repository_id: crp3cpm16edq******** ... - description: delete all untagged Docker images older than 48 hours expire_period: 172800s untagged: true
Значение параметра
expired_period
в ответе отображается в секундах. Это техническое ограничение, формат будет изменен. -
-
Проверьте, что политика создалась, выполнив команду:
yc container repository lifecycle-policy list --repository-name crp3cpm16edq********/ubuntu
Где
repository-name
— имя репозитория.Результат:
+----------------------+-------------+----------------------+----------+---------------------+-------------------------------+ | ID | NAME | REPOSITORY ID | STATUS | CREATED | DESCRIPTION | +----------------------+-------------+----------------------+----------+---------------------+-------------------------------+ | crp6lg1868p3******** | test-policy | crp3cpm16edq******** | DISABLED | 2020-05-28 15:05:58 | disabled lifecycle-policy for | | | | | | | tests | +----------------------+-------------+----------------------+----------+---------------------+-------------------------------+
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Опишите в конфигурационном файле параметры ресурсов, которые необходимо создать:
resource "yandex_container_repository_lifecycle_policy" "my_lifecycle_policy" { name = "<имя_политики>" status = "<статус_политики>" repository_id = "<идентификатор_репозитория>" rule { description = "<описание_правила>" untagged = true tag_regexp = ".*" retained_top = 1 expire_period = "48h" } }
Где:
name
— имя политики.status
— статус политики. Может принимать значенияactive
иdisabled
.repository_id
— идентификатор репозитория.rule
— блок с правилом политики. Содержит следующие параметры:description
— описание правила.untagged
— если значение параметраtrue
, правило применяется ко всем Docker-образам без тега.tag_regexp
— тег Docker-образа для фильтрации. Поддерживаются регулярные выражения языка Java. Например, выражениеtest.*
позволяет получить все образы с тегами, начинающимися наtest
.retained_top
— количество Docker-образов, которые не будут удалены, даже если подходят под правила политики удаления.expire_period
— время, через которое Docker-образ попадает под политику удаления. Формат параметра — число и единица измеренияs
,m
,h
илиd
(секунды, минуты, часы или дни).expire_period
должен быть кратен 24 часам.
Более подробную информацию о параметрах ресурса
yandex_container_repository_lifecycle_policy
в Terraform, см. в документации провайдера . -
Создайте ресурсы:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validate
Если конфигурация является корректной, появится сообщение:
Success! The configuration is valid.
-
Выполните команду:
terraform plan
В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply
-
Подтвердите изменения: введите в терминале слово
yes
и нажмите Enter.
-
После этого в указанном репозитории будет создана политика удаления. Проверить появление политики и ее настройки можно в консоли управления
yc container repository lifecycle-policy list --registry-id <идентификатор_реестра>
Чтобы создать политику удаления, воспользуйтесь методом Create для ресурса LifecyclePolicyService.
Совет
Вы можете протестировать политику удаления, чтоб проверить, какие Docker-образы соответствуют правилам политики. Реального удаления Docker-образов при тестовом запуске не происходит.