Przejdź do treści

Azure – Czyszczenie ACR

Kubernetes - Azure ACR cleaning 2022

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 $REPOSITORY@% --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 komentarze do “Azure – Czyszczenie ACR”

    1. Tak zgadza się, od jakiegoś czasu można także użyć polecenia acr purge z parametrem –untagged. Jak będę miał chwilę uaktualnię artykuł o ten sposób czyszczenia ACR.

Możliwość komentowania została wyłączona.