если кому интересно - проверил в версии gitlab ee 12.10.2 развернутом через helm чистку регистри.
1. Включение Container Registry tag expiration policy и настраивается это в проекте в настройках ci/cd которое они в 12.8 добавили
для проектов созданных до 12.8 это все не работает
2. удалять можно теги через апишечку, можно через свой гитлаб в Packages-container registry, можно скриптами, они есть в инете. Возможно попрозже выложу репу свою, как это делаю я, надо только причесать.
3. переводить регистри в maintaince режим не нужно, проверьте только работает ли кто-то в этот момент с регистри или нет. Если у вас много людей - то лучше перевести.
можно командой без обновления версии с указанием конкретного чарта helm upgrade gitlab gitlab/gitlab --version 3.3.2 -f gitlab.yaml --set registry.maintenance.readOnly.enabled=true --wait обратно так же но false.
4. чистить нужно внутри контейнера:
kubectl exec -it gitlab-registry-664847585b-wwv49 -n gitlab -- bin/registry garbage-collect --delete-untagged=true /etc/docker/registry/config.yml
- - два дефиса перед bin показывают, что дальше идут параметры.
5. без --delete-untagged=true не удаляются без образы без тега.
во остальных контейнерах если у вас несколько реплик можно операцию не проводить.