6.9. Red Hat Quay API を使用したクォータの確立
組織またはユーザーのクォータを設定し、レジストリーのニーズに合わせてクォータポリシーをカスタマイズできます。
次のセクションでは、組織とユーザーのクォータを設定する方法と、それらの設定を変更する方法を説明します。
6.9.1. Red Hat Quay API を使用した組織のクォータの管理
組織を初めて作成した時点では、クォータは設定されていません。API を使用して、組織のクォータ制限を確認、作成、変更、または削除できます。
前提条件
- OAuth アクセストークンを生成した。
手順
組織のクォータを設定するには、
POST /api/v1/organization/{orgname}/quota
エンドポイントを使用します。$ curl -X POST "https://<quay-server.example.com>/api/v1/organization/<orgname>/quota" \ -H "Authorization: Bearer <access_token>" \ -H "Content-Type: application/json" \ -d '{ "limit_bytes": 10737418240, "limits": "10 Gi" }'
出力例
"Created"
GET /api/v1/organization/{orgname}/quota
コマンドを使用して、他の組織のクォータエンドポイントに必要なポリシーに関する情報 (ID 番号など) を返します。以下に例を示します。$ curl -k -X GET -H "Authorization: Bearer <token>" -H 'Content-Type: application/json' https://example-registry-quay-quay-enterprise.apps.docs.gcp.quaydev.org/api/v1/organization/testorg/quota | jq
出力例
[{"id": 1, "limit_bytes": 10737418240, "limit": "10.0 GiB", "default_config": false, "limits": [], "default_config_exists": false}]
ID 番号を取得したら、
GET /api/v1/organization/{orgname}/quota/{quota_id}
コマンドを使用してクォータポリシーをリスト表示できます。以下に例を示します。$ curl -X GET "https://<quay-server.example.com>/api/v1/organization/<orgname>/quota/<quota_id>" \ -H "Authorization: Bearer <access_token>"
出力例
{"id": 1, "limit_bytes": 10737418240, "limit": "10.0 GiB", "default_config": false, "limits": [], "default_config_exists": false}
既存のクォータ制限を変更するには、
PUT /api/v1/organization/{orgname}/quota/{quota_id}
コマンドを使用します。その場合はポリシー ID が必要であることに注意してください。以下に例を示します。$ curl -X PUT "https://<quay-server.example.com>/api/v1/organization/<orgname>/quota/<quota_id>" \ -H "Authorization: Bearer <access_token>" \ -H "Content-Type: application/json" \ -d '{ "limit_bytes": <limit_in_bytes> }'
出力例
{"id": 1, "limit_bytes": 21474836480, "limit": "20.0 GiB", "default_config": false, "limits": [], "default_config_exists": false}
組織のクォータを削除するには、
DELETE /api/v1/organization/{orgname}/quota/{quota_id}
コマンドを使用します。以下に例を示します。$ curl -X DELETE "https://<quay-server.example.com>/api/v1/organization/<orgname>/quota/<quota_id>" \ -H "Authorization: Bearer <access_token>"
このコマンドは出力を返しません。
6.9.2. Red Hat Quay API を使用して組織のクォータ制限を設定する
組織に対して特定のクォータ制限を設定すると、それを超過した場合に警告が返されるか、プッシュされたイメージが完全に拒否されるようになります。
手順
POST /api/v1/organization/{orgname}/quota/{quota_id}/limit
コマンドを使用して、割り当てられたクォータを超えた場合にイメージを拒否するクォータポリシーを作成します。以下に例を示します。$ curl -X POST "https://<quay-server.example.com>/api/v1/organization/<orgname>/quota/<quota_id>/limit" \ -H "Authorization: Bearer <access_token>" \ -H "Content-Type: application/json" \ -d '{ "limit_bytes": 21474836480, "type": "Reject", 1 "threshold_percent": 90 2 }'
出力例
"Created"
GET /api/v1/organization/{orgname}/quota/{quota_id}/limit
を使用して、クォータ制限の ID を取得します。以下に例を示します。$ curl -X GET "https://<quay-server.example.com>/api/v1/organization/<orgname>/quota/<quota_id>/limit" \ -H "Authorization: Bearer <access_token>"
出力例
[{"id": 2, "type": "Reject", "limit_percent": 90}]
PUT/api/v1/organization/{orgname}/quota/{quota_id}/limit/{limit_id}
エンドポイントを使用して、ポリシーを更新します。以下に例を示します。$ curl -X PUT "https://<quay-server.example.com>/api/v1/organization/<orgname>/quota/<quota_id>/limit/<limit_id>" \ -H "Authorization: Bearer <access_token>" \ -H "Content-Type: application/json" \ -d '{ "type": "<type>", "threshold_percent": <threshold_percent> }'
出力例
{"id": 3, "limit_bytes": 10737418240, "limit": "10.0 GiB", "default_config": false, "limits": [{"id": 2, "type": "Warning", "limit_percent": 80}], "default_config_exists": false}
DELETE/api/v1/organization/{orgname}/quota/{quota_id}/limit/{limit_id}
エンドポイントを使用して、クォータ制限を削除できます。$ curl -X DELETE "https://<quay-server.example.com>/api/v1/organization/<orgname>/quota/<quota_id>/limit/<limit_id>" \ -H "Authorization: Bearer <access_token>"
このコマンドは出力を返しません。
6.9.3. Red Hat Quay API を使用してユーザーのクォータ制限を取得する
ユーザーに対してクォータと制限を指定して、それを超過した場合に警告が返されるか、プッシュされたイメージが完全に拒否されるようにできます。ユーザーのクォータ制限は、Red Hat Quay UI で設定する必要があります。次の API を使用して、ログインしているユーザーのクォータ制限を表示できます。
手順
GET /api/v1/user/quota
コマンドを使用して、クォータ制限に関する情報を返します。$ curl -X GET "https://<quay-server.example.com>/api/v1/user/quota" \ -H "Authorization: Bearer <access_token>"
出力例
[{"id": 4, "limit_bytes": 2199023255552, "limit": "2.0 TiB", "default_config": false, "limits": [], "default_config_exists": false}]
クォータ ID を受け取ったら、
GET /api/v1/user/quota/{quota_id}
エンドポイントでそれを渡し、制限に関する情報を返すことができます。$ curl -X GET "https://<quay-server.example.com>/api/v1/user/quota/{quota_id}" \ -H "Authorization: Bearer <access_token>"
出力例
{"id": 4, "limit_bytes": 2199023255552, "limit": "2.0 TiB", "default_config": false, "limits": [], "default_config_exists": false}
制限は、
GET /api/v1/user/quota/{quota_id}/limit
エンドポイントを使用して確認できます。以下に例を示します。$ curl -X GET "https://<quay-server.example.com>/api/v1/user/quota/{quota_id}/limit" \ -H "Authorization: Bearer <access_token>"
出力例
[{"id": 3, "type": "Reject", "limit_percent": 100}]
GET /api/v1/user/quota/{quota_id}/limit/{limit_id}
エンドポイントを使用して、ポリシー全体に関する追加情報を返すことができます。$ curl -X GET "https://<quay-server.example.com>/api/v1/user/quota/{quota_id}/limit/{limit_id}" \ -H "Authorization: Bearer <access_token>"
出力例
{"id": 4, "limit_bytes": 2199023255552, "limit": "2.0 TiB", "default_config": false, "limits": [{"id": 3, "type": "Reject", "limit_percent": 100}], "default_config_exists": false}