Saat ini, di setiap rumah ada klaster kubernetes, aplikasi diluncurkan ke klaster dengan tag. Gambar dari aplikasi yang diterapkan dikirim sebagai tag ke repositori proyek Registry GitLab, yang secara bertahap membengkak ke ukuran yang luar biasa.
Solusi yang ada
Solusi di luar kotak
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. .
Otomasi ditulis dengan python , tapi ini tidak terlalu penting. Anda dapat secara signifikan mengurangi ukuran kode dan biaya memori dengan sedikit pemikiran.