現在、すべての家にkubernetesクラスターがあり、アプリケーションはタグによってクラスターにロールアウトされます。デプロイされたアプリケーションのイメージは、レジストリGitLabプロジェクトのリポジトリにタグとして送信されます。このプロジェクトは、信じられないほどのサイズに徐々に膨らみます。
既存のソリューション
すぐに使えるソリューション
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. .
自動化はPythonで書かれていますが、これはそれほど重要ではありません。少し考えれば、コードサイズとメモリコストを大幅に削減できます。