ライフサイクルポリシーの例
次に、ライフサイクルポリシーの例を構文で示します。
イメージの経過日数によるフィルタリング
次の例で、タグ付けされていない 14
日以上経ったイメージを期限切れにするポリシーのライフサイクルポリシーの構文を示します。
{ "rules": [ { "rulePriority": 1, "description": "Expire images older than 14 days", "selection": { "tagStatus": "untagged", "countType": "sinceImagePushed", "countUnit": "days", "countNumber": 14 }, "action": { "type": "expire" } } ] }
イメージ数によるフィルタリング
次の例で、タグ付けされていないイメージを 1 つだけ保持して残りはすべて期限切れにするポリシーのライフサイクルポリシーの構文を示します。
{ "rules": [ { "rulePriority": 1, "description": "Keep only one untagged image, expire all others", "selection": { "tagStatus": "untagged", "countType": "imageCountMoreThan", "countNumber": 1 }, "action": { "type": "expire" } } ] }
複数のルールによるフィルタリング
以下は、ライフサイクルポリシーで複数のルールを使用する例です。サンプルのリポジトリとライフサイクルポリシーが結果の説明とともに示されています。
例 A
リポジトリのコンテンツ
-
Image A, Taglist: ["beta-1", "prod-1"], Pushed: 10 days ago
-
Image B, Taglist: ["beta-2", "prod-2"], Pushed: 9 days ago
-
Image C, Taglist: ["beta-3"], Pushed: 8 days ago
ライフサイクルポリシーのテキスト
{ "rules": [ { "rulePriority": 1, "description": "Rule 1", "selection": { "tagStatus": "tagged", "tagPrefixList": ["prod"], "countType": "imageCountMoreThan", "countNumber": 1 }, "action": { "type": "expire" } }, { "rulePriority": 2, "description": "Rule 2", "selection": { "tagStatus": "tagged", "tagPrefixList": ["beta"], "countType": "imageCountMoreThan", "countNumber": 1 }, "action": { "type": "expire" } } ] }
このライフサイクルポリシーのロジックは次のようになります。
-
ルール 1 は、
prod
というプレフィックスでタグ付けされたイメージを特定します。最も古いイメージから始めて、一致するイメージが 1 つか数個になるまでマークし続けます。イメージ A が期限切れとしてマークされます。 -
ルール 2 は、
beta
というプレフィックスでタグ付けされたイメージを特定します。最も古いイメージから始めて、一致するイメージが 1 つか数個になるまでマークし続けます。イメージ A とイメージ B の両方が期限切れとしてマークされます。ただし、イメージ A はルール 1 ですでに確認されていて、もしイメージ B が期限切れであれば、ルール 1 に違反してしまうので、スキップされます。 -
結果: イメージ A は期限切れです。
例 B
これは前の例と同じリポジトリですが、結果を説明するためにルールの優先順位が変更されています。
リポジトリのコンテンツ
-
Image A, Taglist: ["beta-1", "prod-1"], Pushed: 10 days ago
-
Image B, Taglist: ["beta-2", "prod-2"], Pushed: 9 days ago
-
Image C, Taglist: ["beta-3"], Pushed: 8 days ago
ライフサイクルポリシーのテキスト
{ "rules": [ { "rulePriority": 1, "description": "Rule 1", "selection": { "tagStatus": "tagged", "tagPrefixList": ["beta"], "countType": "imageCountMoreThan", "countNumber": 1 }, "action": { "type": "expire" } }, { "rulePriority": 2, "description": "Rule 2", "selection": { "tagStatus": "tagged", "tagPrefixList": ["prod"], "countType": "imageCountMoreThan", "countNumber": 1 }, "action": { "type": "expire" } } ] }
このライフサイクルポリシーのロジックは次のようになります。
-
ルール 1 は、
beta
でタグ付けされたイメージを特定します。最も古いイメージから始めて、一致するイメージが 1 つか数個になるまでマークし続けます。3 つのすべてのイメージが確認され、イメージ A とイメージ B が期限切れとしてマークされます。 -
ルール 2 は、
prod
でタグ付けされたイメージを特定します。最も古いイメージから始めて、一致するイメージが 1 つか数個になるまでマークし続けます。今回は、使用可能なイメージはすべてルール 1 で確認済みのため、確認できるイメージがありません。そのため、追加でイメージをマークすることはありません。 -
結果: イメージ A と B は期限切れです。
単一のルールで複数のタグをフィルタリングする
次の例で、単一のルールでの複数のタグプレフィックスのライフサイクルポリシーの構文を指定します。サンプルのリポジトリとライフサイクルポリシーが結果の説明とともに示されています。
例 A
単一のルールで複数のタグプレフィックスが指定されたときは、イメージはすべてのリストされたタグプレフィックスに一致する必要があります。
リポジトリのコンテンツ
-
Image A, Taglist: ["alpha-1"], Pushed: 12 days ago
-
Image B, Taglist: ["beta-1"], Pushed: 11 days ago
-
Image C, Taglist: ["alpha-2", "beta-2"], Pushed: 10 days ago
-
Image D, Taglist: ["alpha-3"], Pushed: 4 days ago
-
Image E, Taglist: ["beta-3"], Pushed: 3 days ago
-
Image F, Taglist: ["alpha-4", "beta-4"], Pushed: 2 days ago
{ "rules": [ { "rulePriority": 1, "description": "Rule 1", "selection": { "tagStatus": "tagged", "tagPrefixList": ["alpha", "beta"], "countType": "sinceImagePushed", "countNumber": 5, "countUnit": "days" }, "action": { "type": "expire" } } ] }
このライフサイクルポリシーのロジックは次のようになります。
-
ルール 1 は、
alpha
およびbeta
でタグ付けされたイメージを特定します。イメージ C と F が確認されます。5 日より古いイメージをマークするので、イメージ C がマークされます。 -
結果: イメージ C は期限切れです。
例 B
次の例では、タグは排他的ではないことを説明します。
リポジトリのコンテンツ
-
Image A, Taglist: ["alpha-1", "beta-1", "gamma-1"], Pushed: 10 days ago
-
Image B, Taglist: ["alpha-2", "beta-2"], Pushed: 9 days ago
-
Image C, Taglist: ["alpha-3", "beta-3", "gamma-2"], Pushed: 8 days ago
{ "rules": [ { "rulePriority": 1, "description": "Rule 1", "selection": { "tagStatus": "tagged", "tagPrefixList": ["alpha", "beta"], "countType": "imageCountMoreThan", "countNumber": 1 }, "action": { "type": "expire" } } ] }
このライフサイクルポリシーのロジックは次のようになります。
-
ルール 1 は、
alpha
およびbeta
でタグ付けされたイメージを特定します。すべてのイメージが確認されます。最も古いイメージから始めて、一致するイメージが 1 つか数個になるまでマークし続けます。イメージ A と B が期限切れとしてマークされます。 -
結果: イメージ A と B は期限切れです。
すべてのイメージでのフィルタリング
次のライフサイクルポリシーの例では、異なるフィルタですべてのイメージを指定します。サンプルのリポジトリとライフサイクルポリシーが結果の説明とともに示されています。
例 A
次に、すべてのルールを適用する一方、イメージを 1 つだけ保持して残りはすべて期限切れにするポリシーのライフサイクルポリシーの構文を示します。
リポジトリのコンテンツ
-
Image A, Taglist: ["alpha-1"], Pushed: 4 days ago
-
Image B, Taglist: ["beta-1"], Pushed: 3 days ago
-
Image C, Taglist: [], Pushed: 2 days ago
-
Image D, Taglist: ["alpha-2"], Pushed: 1 day ago
{ "rules": [ { "rulePriority": 1, "description": "Rule 1", "selection": { "tagStatus": "any", "countType": "imageCountMoreThan", "countNumber": 1 }, "action": { "type": "expire" } } ] }
このライフサイクルポリシーのロジックは次のようになります。
-
ルール 1 は、すべてのイメージを特定します。イメージ A、B、C、D が確認されます。最も新しいもの以外のすべてのイメージが期限切れとされます。イメージ A、B、C が期限切れとしてマークされます。
-
結果: イメージ A、B、C は期限切れです。
例 B
以下の例は、単一のポリシーのすべてのルールのタイプを組み合わせるライフサイクルポリシーを示しています。
リポジトリのコンテンツ
-
Image A, Taglist: ["alpha-", "beta-1", "-1"], Pushed: 4 days ago
-
Image B, Taglist: [], Pushed: 3 days ago
-
Image C, Taglist: ["alpha-2"], Pushed: 2 days ago
-
Image D, Taglist: ["git hash"], Pushed: 1 day ago
-
Image E, Taglist: [], Pushed: 1 day ago
{ "rules": [ { "rulePriority": 1, "description": "Rule 1", "selection": { "tagStatus": "tagged", "tagPrefixList": ["alpha"], "countType": "imageCountMoreThan", "countNumber": 1 }, "action": { "type": "expire" } }, { "rulePriority": 2, "description": "Rule 2", "selection": { "tagStatus": "untagged", "countType": "sinceImagePushed", "countUnit": "days", "countNumber": 1 }, "action": { "type": "expire" } }, { "rulePriority": 3, "description": "Rule 3", "selection": { "tagStatus": "any", "countType": "imageCountMoreThan", "countNumber": 1 }, "action": { "type": "expire" } } ] }
このライフサイクルポリシーのロジックは次のようになります。
-
ルール 1 は、
alpha
でタグ付けされたイメージを特定します。イメージ A と B を識別します。最も新しいイメージを保持し、残りは期限切れとしてマークされます。イメージ A が期限切れとしてマークされます。 -
ルール 2 は、タグ付けされていないイメージを特定します。イメージ B と E を識別します。有効期限が 1 日より古いすべてのイメージがマークされます。イメージ B が期限切れとしてマークされます。
-
ルール 3 は、すべてのイメージを特定します。イメージ A、B、C、D、E を識別します。最も新しいイメージを保持し、残りは期限切れとしてマークされます。ただし、優先度がより高いルールにより識別されるため、イメージ A、B、C、または E をマークすることはできません。イメージ D が期限切れとしてマークされます。
-
結果: イメージ A、B、D は期限切れです。