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.




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/
Microsoft już rozwiązał ten problem:
https://docs.microsoft.com/en-us/azure/container-registry/container-registry-auto-purge
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.