Azure – Czyszczenie ACR

Kubernetes - Azure ACR cleaning

Last updated on 20 kwietnia, 2021

Jak pewnie zauważyliście gdy dodajecie kolejne wersje obrazów do ACR(Azure Container Registry) to jego pojemność cały czas się zwiększa, dzieje się tak dlatego, że stare wersje manifestów nie są usuwane automatycznie a ich liczba rośnie.

ACR used space
ACR Repositories menu
ACR manifest count
ACR premium SKU

Jak zaczynałem z ACR to nie było takiej możliwości przez GUI by wyczyścić Registry z pozostałości po obrazach tak zwanych „untagged manifests” i trzeba było to robić ręcznie. Teraz jest to dostępne ale w wyższym SKU, jeśli ktoś nie ma ochoty podnosić swojego ACR do wyższego poziomu i płacić więcej to pokażę sposób jak zrobić to po staremu.

Polecenie wykonujemy z CLI po zalogowaniu się do tenantu i subskrypcji, w której jest nasz Container Registry:

az login

Jeśli ktoś ma więcej subskrypcji może zobaczyć ich spis:

az account list --output table

I lepiej przełączyć się na odpowiednią:

az account set --subscription "Nazwa_Subskrypcji"

Określamy zmienne, wpisujemy nazwy naszego Azure Container Registry i czyszczonego repository:

REGISTRY=nazwa_registry
REPOSITORY=nazwa_repository

Teraz możemy zobaczyć wszystkie nieprzypisane manifesty do tagów w naszym „Repository” i w następnym kroku je usunąć, żeby nie zajmowały niepotrzebnie miejsca:

az acr repository show-manifests --name $REGISTRY --repository $REPOSITORY  --query "[?tags[0]==null].digest" -o tsv | xargs -I% az acr repository delete --name $REGISTRY --image [email protected]% --yes

Polecenia powyżej musimy powtórzyć dla każdego repository w registry, podając odpowiednie wartości zmiennych.

Takie czyszczenie trzeba co jakiś czas powtarzać w zależności od tego jak często zapisujecie nowe obrazy w ACR.

Ja mam cały proces zautomatyzowany. Jest specjalny użytkownik a właściwie “App registrations” który się loguje, ma uprawnienia tylko w ACR do odczytu „Reader”  i usuwania „AcrDelete”, wykonuje skrypt, który usuwa nieprzypisane manifesty.

A wygląda to w ten sposób:

# logowanie do azure i czyszczenie 
- az login --service-principal --username $APP_ID --tenant $SP_TENANT_ID  --password $SP_PASS
- az account set --subscription  $_SUBSCRIPTION
- chmod +x clear_acr.sh
- ./clear_acr.sh

Gdyby ktoś potrzebował więcej informacji na temat ACR znajdzie je jak zawsze w dokumentacji Microsoftu pod adresem: https://docs.microsoft.com/en-us/azure/container-registry/

Więcej artykułów dotyczących Microsoft Azure znajdziesz w kategorii Azure https://lepczynski.it/category/azure/

2 myśli na “Azure – Czyszczenie ACR”

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *