9
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Google Container Registryのお掃除ツールを作ってみた

Last updated at Posted at 2018-07-22

はじめに

Google Container Registryにおいて、適当に並列化してイメージ削除するようなツール作ってみました。

経緯

Google Container Registryでタグ無しの不要なイメージを精神衛生上消したいな…と思った時、コンソール画面から行うと・・・。

10件以上まとめて行うとほぼ確実に、下記のように
1つ以上の選択したイメージを削除できませんでした。
と表示されていくつかの削除に失敗します。
image.png

じゃあシェルから下記のように実行すると、安定して削除できるけれども1つのイメージ削除に、5秒くらいかかり、 ものすごく遅い。

# get image list 
gcloud container images list-tags asia.gcr.io/{project-id}/${image-name}  --filter="NOT tags:* AND timestamp.datetime < '2018-06-01'"

# delete image
gcloud container images delete asia.gcr.io/{project-id}/${image-name}@sha256:{digest} --force-delete-tags  --quiet

それじゃ並列化して削除すればいいじゃん!って事でツール作ってみました。

ツール

できたもの

削除対象の確認

$ java -jar gcr-garbage-collect-0.0.1-SNAPSHOT.jar --dry-run=true

削除実行

$ java -jar gcr-garbage-collect-0.0.1-SNAPSHOT.jar --dry-run=false

特定のイメージだけ削除

java -jar gcr-garbage-collect-0.0.1-SNAPSHOT.jar --gcloud.container.image=asia.gcr.io/{gcp-project-id}/{image-name}

並列数の変更

$ java -jar gcr-garbage-collect-0.0.1-SNAPSHOT.jar --parallelism=16

作成に関して

  • container registryに対するAPIが、Googleドキュメント見てもない…。仕方がないのでgcloud直接実行形式にしてます。
  • windows環境では、application.yaml、もしくは実行時引数として
     --gcloud.command="C:/Program Files (x86)/Google/Cloud SDK/google-cloud-sdk/bin/gcloud.cmd"
    等指定してください。

その他

  • 久々にProcessBuilder使ったけど、OS毎による < や、" の扱い、やっぱ吸収してくれないのね。
  • docker image化しようと思ったけど、gcloudの認証周りめんどくさいし、やめました。
  • どれくらい早くなったかなーと思って比較しようと思いましたが、そもそも速度図っていないのでやめました。
  • 精神衛生上だけの問題で削除してます。別に古いのが残っていたとしてもたいして実害無いです。(GCSの料金も気になるほどじゃないです )
9
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?