2
0

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 1 year has passed since last update.

Azure Container Registryのリポジトリ世代管理方法を考える

Last updated at Posted at 2023-06-28

ACRの世代管理について検討したのでまとめます。
まずレジストリやタグ、マニフェストといった各種用語を理解しておくことが重要です。
レジストリ、リポジトリ、成果物について

タグなしマニフェストって?

  • ACRを使っていると、Azure Portalからリポジトリを見たときに、タグ数とマニフェスト数がずれていることが見られます。
    image.png

  • これはACRに同じタグでpushしたときに前回のタグがnoneとなることによって発生します。

  • この例では52のマニフェストがタグなしであることが分かります。

  • このタグなしマニフェストはAzure Portalから確認することができません。以下コマンドを実行することでタグなしのマニフェストを確認することができます。

$ az acr manifest list-metadata --registry [レジストリ名] --name [リポジトリ名]

マニフェストのタグを削除する

  • ACRタスクを使って定期的にコマンドを実行できるようにします。
  • 今回のコマンドだと以下条件で動作します。
    • 90日以上更新がないマニフェストのタグを削除します
    • 90日以上更新がなくても10世代は残します
    • 毎日JST20時にこの処理は動作します
$ PURGE_CMD="acr purge --ago 90d --filter '[リポジトリ名]:.*' --keep 10"

$ az acr task create --name purgeTagTask \
  --cmd "$PURGE_CMD" \
  --schedule "0 11 * * *" \
  --registry [レジストリ名] \
  --context /dev/null
  • タスクが作成されたか確認します。
$ az acr task list-runs -r [レジストリ名]

タグが付いていないマニフェストを削除する

  • こちらもACRタスクを使って定期実行します。
  • タグが付いていないマニフェストが対象となるため、マニフェストのタグを削除した後に実行するようにしています。
  • 今回のコマンドだと以下条件で動作します。
    • タグが付いていないマニフェストを全て削除します。
      • --ago 90dオプションは--untaggedオプションを付けているときは無効になるのがポイントです(--agoは必須オプションなので指定は必要だが無効になっている)
    • 毎日JST21時にこの処理は動作します
$ PURGE_CMD="acr purge --ago 90d --filter '[リポジトリ名]:.*' --keep 10 --untagged"

$ az acr task create --name purgeManifestTask \
  --cmd "$PURGE_CMD" \
  --schedule "0 12 * * *" \
  --registry [レジストリ名] \
  --context /dev/null
  • タスクが作成されたか確認します。
$ az acr task list-runs -r [レジストリ名]

ACRタスク実行ログ確認

  • ACRタスクの実行をログを確認する方法です。指定したタスクの最新の実行結果ログが確認可能です。
$ az acr task logs --registry [レジストリ名] -n [タスク名]

Azure Portalからの設定

  • ACRの左メニューに[保持(プレビュー)]という項目があります。
    image.png

  • ここで保持日数を設定することが可能です。
    image.png

  • ただしあくまでもタグなしマニフェストの削除にしか使えません。タグありをタグなしに変更して世代管理するには現時点ではコマンドラインで組むしかなさそうです。

  • あとPortalから設定した場合、設定したタイミング以降に作られたマニフェストのみが対象になります。設定以前に作られたマニフェストは本設定の対象とはならないため注意が必要です。

以上です。

2
0
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?