Како избрисати АВС ЕЦР неозначене и старије слике?

Амазон ЕЦР је интегрисан са Амазон Еластиц Кубернетес услугом (Амазон ЕКС), Амазон Еластиц Цонтаинер Сервице (Амазон ЕЦС) и АВС Ламбда, поједностављујући ваш развој до производног процеса.

Амазон ЕЦР хостује слике у високо скалабилној и доступној архитектури, омогућавајући вам да поуздано примените контејнере за своје апликације. Важно је избрисати неозначене и старе слике ради одржавања хигијене.

Данас апликације раде као микро-сервис. Термин микро-услуга није ништа друго до контејнер који пакује сав код и његове зависности тако да апликација може да ради брзо и поуздано у било ком рачунарском окружењу. Због своје преносивости, мале величине и практичности, контејнери постају метода избора за транспорт модерних апликација.

Контејнери су дизајнирани од шаблона само за читање који се зове слика. Ове слике морају бити негде ускладиштене како би их било која машина овлашћена да их користи могла да преузме.

Ту се појављује регистар контејнера. Не тако давно, људи су користили ДоцкерХуб за чување ових слика и артефаката. Али, ако користите АВС услуге у облаку, сигуран сам да већ користите АВС ЕЦР, што је алтернатива ДоцкерХуб-у.

АВС ЕЦР је регистар контејнера којим се у потпуности управља који обезбеђује хостинг високих перформанси, омогућавајући вам да примените слике и артефакте апликација у облику јавних и приватних складишта.

Сваког дана, више апликација хостованих на АВС-у гура и извлачи милионе слика/артефаката апликација у/из одређених ЕЦР спремишта.

У овом чланку ћемо разговарати о томе како да обришете стари и застарели АВС ЕЦР и одржавате ЕЦР спремишта чистима.

Потреба: Избришите неозначене и старе слике одмах!

Примарни разлог за чишћење ЕЦР репозиторија је развојна хигијена. У сваком тренутку, нико не би желео да задржи слике старије од десет имплементација у својим ЕЦР-овима. То је такође зато што се враћања често дешавају у индустрији, али враћање које враћа промену са 5 артефаката раније је ретко.

Једноставније речено, било која слика/артефакти старији од пет имплементација су бескорисни. Подложно је променама у извештају о стратегији ваше организације, али га не бисмо препоручили као најбољу праксу.

  Разлика између грешке, дефекта, грешке, неуспеха и грешке у тестирању софтвера

Широм индустрије, означавање се користи за одређивање најстабилнијих најновијих или последњих пет најновијих слика. Као део животног циклуса развоја софтвера, слике се брзо генеришу, а ове ознаке се замењују новим сликама, остављајући старије слике неозначеним и бескорисним.

У оваквим ситуацијама, где су слике/артефакти велики, то ће такође додати трошкове складиштења на ЕЦР. Цена АВС ЕЦР-а је „0,10 УСД по ГБ/месечно за податке ускладиштене у приватним или јавним репозиторијумима“.

Ова цена вам може изгледати мала, али како кажу, капи чине океан. Све ове слике, ако се чувају на дужи период, додаће веће рачуне вашим АВС фактурама.

Предлог је да избришете ове старе и неозначене слике из ваших ЕЦР спремишта јер вам нису потребне! Једноставно! Зашто га чувати и плаћати?

Ручно брисање АВС ЕЦР слика

Метод 1: ГУИ начин!

Корак 1: Пријавите се на налог Амазон веб услуга и идите до спремишта које желите да обришете.

Корак 2: Овде можете видети да спремиште има најновију ознаку за навођење најстабилније верзије. Остале ознаке које видите могу се назвати неозначеним. Да бисте избрисали, само треба да изаберете слику и кликнете на делете.

Корак 3: Потврдите брисање

Метод 2: ЦЛИ начин!

Да бисте избрисали слику помоћу ЦЛИ-а, биће вам потребни сви АВС ИАМ приступни кључеви конфигурисани на вашој машини и потребна ИАМ дозвола да бисте добили приступ спремиштима.

У овом случају, већ смо га конфигурисали. То можете да урадите из АВС водича за основе конфигурације ако већ нисте.

Ако нисте сигурни да сте конфигурисали АВС ЦЛИ на свом рачунару, користите следећу команду да бисте проверили.

aws sts get-caller-identity

Сада када смо потврдили да можемо да користимо АВС ЦЛИ, можете да користите следећу команду да избришете неозначену ЕЦР слику.

aws ecr batch-delete-image --repository-name test-ecr-policy --image-ids imageTag=custom-image-6

Овде радимо нешто слично ономе што смо урадили у ГУИ. Избрисаћемо слику означену као цустом-имаге-6 која се налази у тест-ецр-политику спремишта.

Метод 3: Скриптни начин!

Предуслов за ову методу је конфигурисање АВС Аццесс кључа на машини на којој радите.

Скрипта за брисање неозначених слика.

import boto3

client = boto3.client('ecr')

response = client.list_images(repositoryName="test-ecr-policy")

untaggedImageList = [image for image in response['imageIds'] if image['imageTag'] == 'custom-build-4']

response2 = client.batch_delete_image(repositoryName="aws-test-ecrpolicy", imageIds=untaggedImageList)

print(response2)

Одговор би вам дао листу избрисаних ИД-ова слика, заједно са грешком ако их је било.

  Како се даљински одјавити са Скајпа

Метод планирања за брисање ЕЦР слика

Ако сте инжењер ДевОпс-а или редовно управљате АВС ЕЦР-ом, већ ћете знати за болове ручног брисања ових слика.

Покретање скрипте/команде олакшава ствари, али сигурни смо да бисте пожелели нешто што би аутоматски избрисало ове слике саме, а да не морате да бринете о њима.

Добре вести, АВС ЕЦР нуди смернице животног циклуса за ваше слике, које можете подесити да бришете ове слике на време или по распореду. Хајде да видимо како то учинити.

Метод 1: ГУИ начин!

Корак 1: Идите до спремишта где желите да поставите смернице животног циклуса. На левом панелу можете видети смернице животног циклуса. Можете кликнути на њега да бисте започели.

Корак 2: Можете кликнути на њега и креирати своје прво правило.

Корак 3: ЕЦР вам омогућава да избришете слике под два услова, од којих је један ако су ваше слике старе одређене дане или ако су означене/неозначене, а желите да их задржите само, рецимо, Кс број дана.

Да видимо како се то ради. Сада можете да подесите да ли желите да избришете неозначене слике ако су старе један дан или више или ако број слика неозначених прелази један.

Изаберите у складу са вашим случајем употребе. Не заборави; можете повећати ове бројеве на број по вашем избору. Сачувајте да бисте покренули правило животног циклуса.

Метод 2: ЦЛИ начин!

АВС ЕЦР ЦЛИ команда за постављање смерница животног циклуса је пут-лифецицле-полици.

Хајде да видимо како то учинити. За ово морате да креирате ЈСОН датотеку која наводи услове политике. Можете га назвати полици.јсон или било којим именом по вашем избору.

Али пре тога, погледајмо елементе политике животног циклуса.

rulePriority (Type: integer, Required: yes):

Редослед правила од нижег до вишег. Правила смерница животног циклуса са приоритетом један се прво примењују, затим 2, итд. Свако правило смерница животног циклуса мора да има јединствену вредност правила.

Правилима политике нису потребне узастопне вредности. Било која означена правила морају имати највиши приоритет правила и последња се прегледају.

description (Type: string, Required: no):

Објашњава чему служи правило у политици животног циклуса.

tagStatus (Type: string, Required: yes):

Проверава да ли додато правило смерница животног циклуса наводи ознаку слике. Означено, неозначено или било шта је у реду. Ако ниједна није наведена, процењују се све слике. Таггед захтева вредност тагПрефикЛист. Неозначено захтева изостављање тагПрефикЛист.

tagPrefixList (Type: list[string], Required: yes, only if tagStatus is set to tagged):

Ако је „тагСтатус“ „означен“, ваша смерница животног циклуса захтева листу префикса ознака слике раздвојену зарезима.

  Увод у СНМП за почетнике

Користећи префикс ознаке прод, можете одредити све слике означене као прод, прод1, прод2, итд. Више ознака бира само слике са свим ознакама.

countType (Type: string, Required: yes):

Наведите цоунтНумбер ако је цоунтТипе имагеЦоунтМореТхан да бисте ограничили број слика у вашем спремишту.

Наведите цоунтУнит и цоунтНумбер ако је цоунтТипе синцеИмагеПусхед да бисте ограничили слике спремишта.

countUnit (Type: string, Required: yes, only if countType is set to sinceImagePushed):

Наведите јединицу бројања само када је цоунтТипе синцеИмагеПусхед; у супротном, долази до грешке.

countNumber (Type: integer, Required: yes):

Само позитивни цели бројеви (0 није прихваћена вредност). Ако је цоунтТипе имагеЦоунтМореТхан, вредност је максималан број фотографија које треба задржати. Коришћење СинцеИмагеПусхед као цоунтТипе одређује максималну старост слике.

 type (Type: string, Required: yes):

Изаберите врсту акције. Вредност која се може користити је „истекне“.

Ево моје „полици.јсон“.

{

"rules": [

{

"rulePriority": 1,

"description": "Expire images older than 10 days",

"selection": {

"tagStatus": "untagged",

"countType": "sinceImagePushed",

"countUnit": "days",

"countNumber": 14

},

"action": {

"type": "expire"

}

}

]

}

Према захтевима ваше организације. „синцеИмагеПусхед“ се може заменити са „имагеЦоунтМореТхан“.

ЦЛИ команда за постављање ове политике би била:

aws ecr put-lifecycle-policy --repository-name "test-ecr-polict" --lifecycle-policy-text "file://policy.json"

Метод 3: Скриптни начин!

Користићемо команду бото3 да бисмо то постигли. Можемо да користимо исти „полици.јсон“ за подешавање. Испод је коришћени исечак кода.

import boto3

client = boto3.client('ecr')

response = client.put_lifecycle_policy(
registryId='PODES12342',
repositoryName="test-ecr-policy",
lifecyclePolicyText="plicy.json"
)

print(response)

Како применити једну политику на више ЕЦР репозиторија?

Често се постављају питања о томе како применити исту политику на више спремишта.

Ручно постављање смерница је задатак који се понавља и досадан.

Ево исечка кода који се може користити у производном систему за примену политике на више од 100с складишта.

from boto3 import Session,client

from os import getenv
AWS_ACCESS_KEY_ID = getenv("ACCESSKEY")


AWS_SECRET_ACCESS_KEY = getenv("SECRETKEY")
session = Session(
aws_access_key_id=AWS_ACCESS_KEY_ID,
aws_secret_access_key=AWS_SECRET_ACCESS_KEY
)

client = client('ecr')

response = client.describe_repositories()

repositories = response['repositories']

globalLifecyclePolicy = 'put your policy here’’

for repo in repositories:

repoName = repo['repositoryName']

client.put_lifecycle_policy( repositoryName = repoName,lifecyclePolicyText = globalLifecyclePolicy)

Закључак

Лако можемо да направимо ЕЦР политику животног циклуса и уништимо старије слике према наведеним параметрима. АВС пружа обимну документацију, као и узорке смерница животног циклуса.

Такође можете експериментисати са алтернативним смерницама за означене слике, као што је подударање критеријума са датумом када је слика отпремљена.

Такође можете истражити неке АВС кључне терминологије које унапређују ваше АВС учење.