Политика жизненного цикла ECR

В нашем ECR у нас есть несколько репозиториев для каждого микросервиса.

Сервис 1

Сервис 2

Сервис 3

при построении кода (для любого сервиса), создании из него образа и отправке в ECR, мы помечаем его ключевым словом - dev и build-XXX-XXX-XXX-XXX.

Если мы повторим этот процесс, новое изображение будет помечено, как указано выше, но изображение выше (теперь предыдущее) будет помечено только как build-XXX-XXX-XXX-XXX.

Как настроить политику жизненного цикла для удаления только тех изображений, которые помечены только как build-XXX-XXX-XXX-XXX

Я установил политику ниже, но во время тестового прогона я вижу, что она также выбирает те изображения, которые помечены как dev, которые я не хочу удалять.

Изображение с тегом dev всегда будет присутствовать с тегом build-XXX-XXX-XXX-XXX.

{
  "rules": [
    {
      "action": {
        "type": "expire"
      },
      "selection": {
        "countType": "imageCountMoreThan",
        "countNumber": 5,
        "tagStatus": "tagged",
        "tagPrefixList": [
          "build"
        ]
      },
      "description": "remove images starting with build",
      "rulePriority": 1
    }
  ]
}

В том же репозитории я также помещаю тестовые изображения и образы UAT с соответствующими тегами (test и uat) с помощью описанного выше процесса (с build-XXX-XXX -XXX-XXX) и не хочу их удалять.


person Vaibhav    schedule 20.05.2020    source источник
comment
Тег dev не может существовать на двух изображениях одновременно. Я не уверен, что вы спрашиваете здесь.   -  person jordanm    schedule 20.05.2020
comment
Очевидным решением было бы изменить ваше соглашение о тегах и пометить сборки dev каким-либо другим словом, не содержащим сборку.   -  person Oleksii Donoha    schedule 20.05.2020
comment
Привет Джорданм. Да, конечно, тег dev не может существовать на двух изображениях. Если я впервые соберу образ - он будет с двумя тегами - dev и build-XXX-XX, и если я снова соберу второй образ - теперь он будет помечен dev и build-YY-YYY, а более ранний образ останется только с сборка-XXX-XXX. Надеюсь, это проясняет.   -  person Vaibhav    schedule 21.05.2020


Ответы (1)


Срок действия изображения, соответствующего требованиям к тегам правила, не может быть прекращен правилом с более низким приоритетом.

Если вы хотите сохранить одно изображение с тегом dev, вам нужно добавить для этого дополнительное правило, установить для этого правила наивысший приоритет (в приведенном ниже примере я установил 10) и уменьшить приоритет вашего правила с тегом build (я установил 100), для пример:

{
  "rules": [
    {
      "rulePriority": 10,
      "description": "Remove dev except one",
      "selection": {
        "tagStatus": "tagged",
        "tagPrefixList": [
          "dev"
        ]
        "countType": "imageCountMoreThan",
        "countNumber": 1
      },
      "action": {
        "type": "expire"
      }
    },
    {
      "rulePriority": 100,
      "description": "Remove images starting with build",
      "selection": {
        "countType": "imageCountMoreThan",
        "countNumber": 5,
        "tagStatus": "tagged",
        "tagPrefixList": [
          "build"
        ]
      },
      "action": {
        "type": "expire"
      }
    }
  ]
}

Таким же образом добавьте правила для тегов uat и test с разным приоритетом (например, 20 и 30), но выше build.

person Vadim Yangunaev    schedule 01.09.2020