Limpieza del registro de GitLab para administradores de Kubernetes

Hoy en día, en cada casa hay un clúster de kubernetes, las aplicaciones se implementan en el clúster mediante la etiqueta. La imagen de la aplicación implementada se envía como una etiqueta al repositorio del proyecto Registry GitLab, que gradualmente crece hasta alcanzar tamaños increíbles.





Soluciones existentes

  • Solución lista para usar





    Settings → CI/CD → CleanUp policy for tags. , Bulk Delete , , . - , .





  • community





    1. " "





    2. .





, :





. , - , ( Job, CronJob ). , .





GitLab

GitLab registry , . , .





ron ,





sudo gitlab-ctl registry-garbage-collect
      
      







sudo gitlab-ctl registry-garbage-collect -m
      
      



: registry, push, pull.





registry readonly.





sudo vi /etc/gitlab/gitlab.rb
      
      



registry['storage'] = {
    'maintenance' => {
      'readonly' => {
        'enabled' => true
      }
    }
  }
      
      



sudo gitlab-ctl reconfigure
      
      



enabled false sudo gitlab-ctl reconfigure.





GitLab





GitLab GitLab API api + read_repository write_registry.





, registry GitLab, id id registry.





GitLab pagination

GitLab , 20 , 100 . X-Total, , .





  1. /api/v4/projects, endpoint . , id.





  2. , .





  3. project[id] /api/v4/projects/{project[id]}/registry/repositories. id .





  4. , , /api/v4/projects/{repo['project_id']}/registry/repositories/{repo['id']}/tags





, :





{
    "location": "mygitlab.abc.ru:3000/dev/my-awsome-app/base:deploy_123",
    "name": "deploy_123",
    "path": "dev/my-awsome-app/base:deploy_123"
  }
      
      



del_url, URL .





- , .





Kubernetes





Kubernetes kubernetes. , , - .





Kubernetes , kubectl rollout history < >, ReplicaSet . . , . replicaset namespace + label app replica_set.spec.template.spec.service_account. - , - . , N .





- Kubernetes, GitLab .





: Job CronJob ReplicaSet. .





, :)





" " ...





GitLab, , . .





, CronJob Job. .





La automatización está escrita en Python , pero esto no es tan importante. Puede reducir significativamente el tamaño del código y los costos de memoria con un poco de pensamiento.








All Articles