16.3. Red Hat Quay UI を使用した自動プルーニングポリシーの管理
レジストリー全体の自動プルーニングポリシーを除くすべての自動プルーニングポリシーは、Red Hat Quay v2 UI または API を使用して作成されます。これは、自動プルーニング機能と v2 UI を有効にするように Red Hat Quay の config.yaml
ファイルを設定した後に実行できます。
この機能は、Red Hat Quay レガシー UI を使用している場合には使用できません。
16.3.1. Red Hat Quay 自動プルーニング機能の設定
自動プルーニング機能を有効にするには、以下の手順に従って Red Hat Quay config.yaml
ファイルを設定します。
前提条件
-
config.yaml
ファイルでFEATURE_UI_V2
をtrue
に設定している。
手順
Red Hat Quay の
config.yaml
ファイルに、FEATURE_AUTO_PRUNE
環境変数を追加してTrue
に設定します。以下に例を示します。# ... FEATURE_AUTO_PRUNE: true # ...
16.3.2. レジストリー全体の自動プルーニングポリシーの作成
レジストリー全体の自動プルーニングポリシーを、新規および既存の組織で設定できます。この機能により、レジストリー全体にルールを適用することで、Red Hat Quay 管理者の時間、労力、ストレージが節約されます。
Red Hat Quay 管理者は、DEFAULT_NAMESPACE_AUTOPRUNE_POLICY
設定フィールドと、number_of_tags
または creation_date
メソッドのいずれかを追加して config.yaml
ファイルを更新し、この機能を有効にする必要があります。現在、この機能は v2 UI または API を使用して有効にすることはできません。
Red Hat Quay レジストリーの自動プルーニングポリシーを作成するには、次の手順に従います。
前提条件
-
FEATURE_AUTO_PRUNE
機能を有効にしている。
手順
config.yaml
ファイルを更新して、DEFAULT_NAMESPACE_AUTOPRUNE_POLICY
設定フィールドを追加します。指定したタグの数まで作成日順に最も古いタグを削除するポリシーメソッドを設定するには、
number_of_tags
メソッドを使用します。# ... DEFAULT_NAMESPACE_AUTOPRUNE_POLICY: method: number_of_tags value: 2 1 # ...
- 1
- この場合、2 つのタグが残ります。
指定した期間 (たとえば
5d
) よりも作成日が古いタグを削除するポリシーメソッドを設定するには、creation_date
メソッドを使用します。DEFAULT_NAMESPACE_AUTOPRUNE_POLICY: method: creation_date value: 5d
- Red Hat Quay デプロイメントを再起動します。
オプション: この機能をテストするためにイメージにタグを付けてプッシュする必要がある場合、以下を実行します。
Red Hat Quay レジストリーにプッシュする 4 つのサンプルイメージにタグを付けます。以下に例を示します。
$ podman tag docker.io/library/busybox <quay-server.example.com>/<quayadmin>/busybox:test
$ podman tag docker.io/library/busybox <quay-server.example.com>/<quayadmin>/busybox:test2
$ podman tag docker.io/library/busybox <quay-server.example.com>/<quayadmin>/busybox:test3
$ podman tag docker.io/library/busybox <quay-server.example.com>/<quayadmin>/busybox:test4
次のコマンドを入力して、自動プルーニングを有効にした状態で 4 つのサンプルイメージをレジストリーにプッシュします。
$ podman push <quay-server.example.com>/quayadmin/busybox:test
$ podman push <quay-server.example.com>/<quayadmin>/busybox:test2
$ podman push <quay-server.example.com>/<quayadmin>/busybox:test3
$ podman push <quay-server.example.com>/<quayadmin>/busybox:test4
- イメージのプッシュ先のレジストリーで 4 つのタグがあることを確認します。
-
デフォルトでは、レジストリーレベルの自動プルーナーワーカーが 24 時間ごとに実行されます。この手順を実行した場合、24 時間後に最も古い 2 つのイメージタグが削除され、
test3
タグとtest4
タグが残ります。Red Hat Quay 組織をチェックして、最も古い 2 つのタグが削除されていることを確認します。
16.3.3. Red Hat Quay v2 UI を使用した組織の自動プルーニングポリシーの作成
Red Hat Quay v2 UI を使用して組織の自動プルーニングポリシーを作成するには、次の手順に従います。
前提条件
-
FEATURE_AUTO_PRUNE
機能を有効にしている。 - 組織にはプッシュされたイメージタグがあります。
手順
- Red Hat Quay v2 UI で、ナビゲーションペインの Organizations をクリックします。
-
自動プルーニング機能を適用する組織の名前を選択します (例:
test_organization
)。 - Settings をクリックします。
Auto-Prune Policies をクリックします。以下に例を示します。
- ドロップダウンメニューをクリックして、目的のポリシー (By number of tags など) を選択します。
- 保持するタグの数を選択します。デフォルトでは、これは 20 タグに設定されています。この例では、保持するタグの数は 3 に設定されています。
オプション: 正規表現 の導入により、自動プルーニングポリシーを細かく設定するための次のオプションが提供されます。
- Match: このオプションを選択すると、自動プルーナーは指定された 正規表現 パターンに一致するすべてのタグをプルーニングします。
Does not match: このオプションを選択すると、自動プルーナーは 正規表現 パターンに 一致しない すべてのタグをプルーニングします。
オプションを選択しない場合、自動プルーナーはデフォルトですべてのイメージタグをプルーニングします。
この例では、Tag pattern ボックスをクリックして、match を選択します。正規表現ボックスに、タグを照合するパターンを入力します。たとえば、すべての
test
タグを自動的にプルーニングするには、^test.*
と入力します。
- オプション: Add Policy をクリックして必要な情報を入力することで、2 番目の自動プルーニングポリシーを作成できます。
Save をクリックします。自動プルーニングポリシーが更新されたという通知が表示されます。
この例では、組織は
^test.*
という名前の最新の 3 つのタグを保持するように設定されています。
検証
組織のリポジトリーの Tags ページに移動します。数分後、自動プルーナーワーカーが、設定した基準に適合しないタグを削除します。この例では、
busybox:test
タグを削除し、busybox:test2
タグ、busybox:test3
タグ、およびbusybox:test4
タグを保持します。タグは自動的にプルーニングされると、Red Hat Quay タイムマシン期間に移行します。この期間は、タグが削除されてからガベージコレクションが行われるまでの、タグにアクセスできる期間を指します。イメージタグの有効期限は、組織の設定によって異なります。詳細は、Red Hat Quay ガベージコレクション を参照してください。
16.3.4. Red Hat Quay API を使用した名前空間の自動プルーニングポリシーの作成
Red Hat Quay API エンドポイントを使用して、名前空間の自動プルーニングポリシーを管理できます。
前提条件
-
config.yaml
ファイルでBROWSER_API_CALLS_XHR_ONLY: false
を設定している。 - OAuth アクセストークンを作成している。
- Red Hat Quay にログインしている。
手順
次の
POST /api/v1/organization/{orgname}/autoprunepolicy/
コマンドを入力して、組織で許可されるタグの数を制限する新しいポリシーを作成します。$ curl -X POST -H "Authorization: Bearer <access_token>" -H "Content-Type: application/json" -d '{"method": "number_of_tags", "value": 10}' http://<quay-server.example.com>/api/v1/organization/<organization_name>/autoprunepolicy/
または、タグの作成日から指定期間が経過すると期限切れになるようにタグを設定することもできます。
$ curl -X POST -H "Authorization: Bearer <access_token>" -H "Content-Type: application/json" -d '{ "method": "creation_date", "value": "7d"}' http://<quay-server.example.com>/api/v1/organization/<organization_name>/autoprunepolicy/
出力例
{"uuid": "73d64f05-d587-42d9-af6d-e726a4a80d6e"}
オプション: 組織にポリシーを追加し、
tagPattern
フィールドとtagPatternMatches
フィールドを渡して、指定された正規表現パターンに一致するタグのみをプルーニングできます。以下に例を示します。$ curl -X POST \ -H "Authorization: Bearer <bearer_token>" \ -H "Content-Type: application/json" \ -d '{ "method": "creation_date", "value": "7d", "tagPattern": "^v*", "tagPatternMatches": <true> 1 }' \ "https://<quay-server.example.com>/api/v1/organization/<organization_name>/autoprunepolicy/"
- 1
tagPatternMatches
をtrue
に設定すると、指定された正規表現パターンに一致するタグがプルーニングされます。この例では、^v*
に一致するタグがプルーニングされます。
出力例
{"uuid": "ebf7448b-93c3-4f14-bf2f-25aa6857c7b0"}
PUT /api/v1/organization/{orgname}/autoprunepolicy/{policy_uuid}
コマンドを使用して、組織の自動プルーニングポリシーを更新できます。以下に例を示します。$ curl -X PUT -H "Authorization: Bearer <bearer_token>" -H "Content-Type: application/json" -d '{ "method": "creation_date", "value": "4d", "tagPattern": "^v*", "tagPatternMatches": true }' "<quay-server.example.com>/api/v1/organization/<organization_name>/autoprunepolicy/<uuid>"
このコマンドは出力を返しません。次のステップに進みます。
次のコマンドを入力して、自動プルーニングポリシーを確認します。
$ curl -X GET -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/organization/<organization_name>/autoprunepolicy/
出力例
{"policies": [{"uuid": "ebf7448b-93c3-4f14-bf2f-25aa6857c7b0", "method": "creation_date", "value": "4d", "tagPattern": "^v*", "tagPatternMatches": true}, {"uuid": "da4d0ad7-3c2d-4be8-af63-9c51f9a501bc", "method": "number_of_tags", "value": 10, "tagPattern": null, "tagPatternMatches": true}, {"uuid": "17b9fd96-1537-4462-a830-7f53b43f94c2", "method": "creation_date", "value": "7d", "tagPattern": "^v*", "tagPatternMatches": true}]}
次のコマンドを入力すると、組織の自動プルーニングポリシーを削除できます。ポリシーを削除するには UUID が必要であることに注意してください。
$ curl -X DELETE -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/organization/<organization_name>/autoprunepolicy/73d64f05-d587-42d9-af6d-e726a4a80d6e
16.3.5. API を使用した現行ユーザーの名前空間の自動プルーニングポリシーの作成
Red Hat Quay API エンドポイントを使用して、自分のアカウントの自動プルーニングポリシーを管理できます。
以下のコマンドで使用している /user/
は、現在 Red Hat Quay にログインしているユーザーを表しています。
前提条件
-
config.yaml
ファイルでBROWSER_API_CALLS_XHR_ONLY: false
を設定している。 - OAuth アクセストークンを作成している。
- Red Hat Quay にログインしている。
手順
次の
POST
コマンドを入力して、現在のユーザーのタグ数を制限する新しいポリシーを作成します。$ curl -X POST -H "Authorization: Bearer <access_token>" -H "Content-Type: application/json" -d '{"method": "number_of_tags", "value": 10}' http://<quay-server.example.com>/api/v1/user/autoprunepolicy/
出力例
{"uuid": "8c03f995-ca6f-4928-b98d-d75ed8c14859"}
次のコマンドを入力して、自動プルーニングポリシーを確認します。
$ curl -X GET -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/user/autoprunepolicy/
または、UUID を含めることもできます。
$ curl -X GET -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/user/autoprunepolicy/8c03f995-ca6f-4928-b98d-d75ed8c14859
出力例
{"policies": [{"uuid": "8c03f995-ca6f-4928-b98d-d75ed8c14859", "method": "number_of_tags", "value": 10}]}
次のコマンドを入力すると、自動プルーニングポリシーを削除できます。ポリシーを削除するには UUID が必要であることに注意してください。
$ curl -X DELETE -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/user/autoprunepolicy/8c03f995-ca6f-4928-b98d-d75ed8c14859
出力例
{"uuid": "8c03f995-ca6f-4928-b98d-d75ed8c14859"}
16.3.6. Red Hat Quay v2 UI を使用したリポジトリーの自動プルーニングポリシーの作成
以下の手順に従って、Red Hat Quay v2 UI を使用してリポジトリーの自動プルーニングポリシーを作成します。
前提条件
-
FEATURE_AUTO_PRUNE
機能を有効にしている。 - イメージタグをリポジトリーにプッシュしている。
手順
- Red Hat Quay v2 UI のナビゲーションペインで Repository をクリックします。
-
自動プルーニング機能を適用する組織の名前を選択します (例:
<organization_name>/<repository_name>
)。 - Settings をクリックします。
- Repository Auto-Prune Policies をクリックします。
- ドロップダウンメニューをクリックして、目的のポリシー (By age of tags など) を選択します。
-
指定した時間枠より古いタグを削除するには、時間 (例:
5
) と間隔 (例:minutes
) を設定します。この例では、5 分経過したタグは削除対象としてマークされます。 オプション: 正規表現 の導入により、自動プルーニングポリシーを細かく設定するための次のオプションが提供されます。
- Match: このオプションを選択すると、自動プルーナーは指定された 正規表現 パターンに一致するすべてのタグをプルーニングします。
Does not match: このオプションを選択すると、自動プルーナーは 正規表現 パターンに 一致しない すべてのタグをプルーニングします。
オプションを選択しない場合、自動プルーナーはデフォルトですべてのイメージタグをプルーニングします。
この例では、Tag pattern ボックスをクリックし、Does not match を選択します。正規表現 ボックスに、タグを照合するパターンを入力します。たとえば、
test
タグと 一致しない すべてのタグを自動的にプルーニングするには、^test.*
と入力します。
- オプション: Add Policy をクリックして必要な情報を入力することで、2 番目の自動プルーニングポリシーを作成できます。
- Save をクリックします。自動プルーニングポリシーが更新されたという通知が表示されます。
検証
組織のリポジトリーの Tags ページに移動します。この例では、プルーナーの実行時に、
^test.*
正規表現 タグに 一致しない 5 分経過したタグが自動的にプルーニングされます。タグは自動的にプルーニングされると、Red Hat Quay タイムマシン期間に移行します。この期間は、タグが削除されてからガベージコレクションが行われるまでの、タグにアクセスできる期間を指します。イメージタグの有効期限は、組織の設定によって異なります。詳細は、Red Hat Quay ガベージコレクション を参照してください。
16.3.7. Red Hat Quay API を使用したリポジトリーの自動プルーニングポリシーの作成
Red Hat Quay API エンドポイントを使用して、リポジトリーの自動プルーニングポリシーを管理できます。
前提条件
-
config.yaml
ファイルでBROWSER_API_CALLS_XHR_ONLY: false
を設定している。 - OAuth アクセストークンを作成している。
- Red Hat Quay にログインしている。
手順
次の
POST /api/v1/repository/{repository}/autoprunepolicy/
コマンドを入力して、組織で許可されるタグの数を制限する新しいポリシーを作成します。$ curl -X POST -H "Authorization: Bearer <access_token>" -H "Content-Type: application/json" -d '{"method": "number_of_tags","value": 2}' http://<quay-server.example.com>/api/v1/repository/<organization_name>/<repository_name>/autoprunepolicy/
または、タグの作成日から指定期間が経過すると期限切れになるようにタグを設定することもできます。
$ curl -X POST -H "Authorization: Bearer <access_token>" -H "Content-Type: application/json" -d '{"method": "creation_date", "value": "7d"}' http://<quay-server.example.com>/api/v1/repository/<organization_name>/<repository_name>/autoprunepolicy/
出力例
{"uuid": "ce2bdcc0-ced2-4a1a-ac36-78a9c1bed8c7"}
オプション: ポリシーを追加し、
tagPattern
フィールドとtagPatternMatches
フィールドを渡して、指定された正規表現パターンに一致するタグのみをプルーニングできます。以下に例を示します。$ curl -X POST \ -H "Authorization: Bearer <access_token>" \ -H "Content-Type: application/json" \ -d '{ "method": "<creation_date>", "value": "<7d>", "tagPattern": "<^test.>*", "tagPatternMatches": <false> 1 }' \ "https://<quay-server.example.com>/api/v1/repository/<organization_name>/<repository_name>/autoprunepolicy/"
- 1
tagPatternMatches
をfalse
に設定すると、指定された正規表現パターンに 一致しない すべてのタグがプルーニングされます。この例では、^test.
以外 のすべてのタグがプルーニングされます。
出力例
{"uuid": "b53d8d3f-2e73-40e7-96ff-736d372cd5ef"}
PUT /api/v1/repository/{repository}/autoprunepolicy/{policy_uuid}
コマンドを使用して UUID を渡すことで、リポジトリーのポリシーを更新できます。以下に例を示します。$ curl -X PUT \ -H "Authorization: Bearer <bearer_token>" \ -H "Content-Type: application/json" \ -d '{ "method": "number_of_tags", "value": "5", "tagPattern": "^test.*", "tagPatternMatches": true }' \ "https://quay-server.example.com/api/v1/repository/<namespace>/<repo_name>/autoprunepolicy/<uuid>"
このコマンドは出力を返しません。次の手順に進み、自動プルーニングポリシーを確認します。
次のコマンドを入力して、自動プルーニングポリシーを確認します。
$ curl -X GET -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/repository/<organization_name>/<repository_name>/autoprunepolicy/
または、UUID を含めることもできます。
$ curl -X GET -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/repository/<organization_name>/<repository_name>/autoprunepolicy/ce2bdcc0-ced2-4a1a-ac36-78a9c1bed8c7
出力例
{"policies": [{"uuid": "ce2bdcc0-ced2-4a1a-ac36-78a9c1bed8c7", "method": "number_of_tags", "value": 10}]}
次のコマンドを入力すると、自動プルーニングポリシーを削除できます。ポリシーを削除するには UUID が必要であることに注意してください。
$ curl -X DELETE -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/repository/<organization_name>/<repository_name>/autoprunepolicy/ce2bdcc0-ced2-4a1a-ac36-78a9c1bed8c7
出力例
{"uuid": "ce2bdcc0-ced2-4a1a-ac36-78a9c1bed8c7"}
16.3.8. API を使用するユーザーのリポジトリーでの自動プルーニングポリシーの作成
リポジトリーに対する admin
権限がある限り、Red Hat Quay API エンドポイントを使用して、自分以外のユーザーアカウントのリポジトリーに対する自動プルーニングポリシーを管理できます。
前提条件
-
config.yaml
ファイルでBROWSER_API_CALLS_XHR_ONLY: false
を設定している。 - OAuth アクセストークンを作成している。
- Red Hat Quay にログインしている。
-
ポリシーを作成するリポジトリーの
admin
権限がある。
手順
次の
POST /api/v1/repository/<user_account>/<user_repository>/autoprunepolicy/
コマンドを入力して、ユーザーのタグの数を制限する新しいポリシーを作成します。$ curl -X POST -H "Authorization: Bearer <access_token>" -H "Content-Type: application/json" -d '{"method": "number_of_tags","value": 2}' https://<quay-server.example.com>/api/v1/repository/<user_account>/<user_repository>/autoprunepolicy/
出力例
{"uuid": "7726f79c-cbc7-490e-98dd-becdc6fefce7"}
オプション: 現在のユーザーに対してポリシーを追加し、
tagPattern
フィールドとtagPatternMatches
フィールドを渡して、指定された正規表現パターンに一致するタグのみをプルーニングできます。以下に例を示します。$ curl -X POST \ -H "Authorization: Bearer <bearer_token>" \ -H "Content-Type: application/json" \ -d '{ "method": "creation_date", "value": "7d", "tagPattern": "^v*", "tagPatternMatches": true }' \ "http://<quay-server.example.com>/api/v1/repository/<user_account>/<user_repository>/autoprunepolicy/"
出力例
{"uuid": "b3797bcd-de72-4b71-9b1e-726dabc971be"}
PUT /api/v1/repository/<user_account>/<user_repository>/autoprunepolicy/<policy_uuid>
コマンドを使用して、現在のユーザーのポリシーを更新できます。以下に例を示します。$ curl -X PUT -H "Authorization: Bearer <bearer_token>" -H "Content-Type: application/json" -d '{ "method": "creation_date", "value": "4d", "tagPattern": "^test.", "tagPatternMatches": true }' "https://<quay-server.example.com>/api/v1/repository/<user_account>/<user_repository>/autoprunepolicy/<policy_uuid>"
ポリシーを更新しても、CLI に出力は返されません。
次のコマンドを入力して、自動プルーニングポリシーを確認します。
$ curl -X GET -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/repository/<user_account>/<user_repository>/autoprunepolicy/
または、UUID を含めることもできます。
$ curl -X GET -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/repository/<user_account>/<user_repository>/autoprunepolicy/7726f79c-cbc7-490e-98dd-becdc6fefce7
出力例
{"uuid": "81ee77ec-496a-4a0a-9241-eca49437d15b", "method": "creation_date", "value": "7d", "tagPattern": "^v*", "tagPatternMatches": true}
次のコマンドを入力すると、自動プルーニングポリシーを削除できます。ポリシーを削除するには UUID が必要であることに注意してください。
$ curl -X DELETE -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/repository/<user_account>/<user_repository>/autoprunepolicy/<policy_uuid>
出力例
{"uuid": "7726f79c-cbc7-490e-98dd-becdc6fefce7"}