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
" "
.
, :
. , - , ( 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, , .
/api/v4/projects, endpoint . , id.
, .
project[id] /api/v4/projects/{project[id]}/registry/repositories. id .
, , /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.