15.3. Red Hat Quay を使用してリモートレジストリーをプロキシーする
次の手順では、Red Hat Quay を使用してリモートレジストリーをプロキシーする方法を説明します。この手順は、プロキシー quay.io に設定されています。これにより、ユーザーは podman
を使用して、quay.io 上の任意の名前空間から任意のパブリックイメージをプルできます。
前提条件
-
config.yaml の
FEATURE_PROXY_CACHE
がtrue
に設定されている。 - Member チームのロールが割り当てられている。チームのロールの詳細は、Red Hat Quay のユーザーおよび組織 を参照してください。
手順
-
UI の Quay 組織 (たとえば
cache-quayio
) で、左側のペインの Organization Settings をクリックします。 オプション: Add Storage Quota をクリックして、組織のクォータ管理を設定します。クォータ管理の詳細は、クォータ管理 を参照してください。
注記場合によっては、Podman を使用してイメージをプルすると、プル中にクォータ制限に達したときに
unable to pull image: Error parsing image configuration: Error fetching blob: invalid status code from registry 403 (Forbidden)
エラーが返されることがあります。エラー403
は不正確であり、Podman が正しい API エラーQuota has been exceeded on namespace
を非表示にしているために発生します。この既知の問題は、将来の Podman 更新で修正される予定です。Remote Registry に、キャッシュするリモートレジストリーの名前 (
quay.io
など) を入力し、Save をクリックします。注記Remote Registry に名前空間 (たとえば
quay.io/<namespace>
) を追加すると、組織内のユーザーはその名前空間からのみプロキシーできるようになります。オプション: Remote Registry Username および Remote Registry Password を追加します。
注記Remote Registry Username および Remote Registry Password を設定しない場合は、プロキシーキャッシュを削除して新しいレジストリーを作成しない限り、パスワードを追加できません。
オプション: Expiration フィールドに時間を設定します。
注記- プロキシー組織でキャッシュされたイメージのデフォルトのタグ Expiration フィールドは 86400 秒に設定されています。プロキシー組織では、タグがプルされるたびに、タグの有効期限が UI の Expiration フィールドに設定された値に更新されます。この機能は、Quay のデフォルトの 個別タグ有効期限 機能とは異なります。プロキシー組織では、個々のタグ機能をオーバーライドできます。これが発生すると、プロキシー組織の Expiration フィールドに従って、個々のタグの有効期限がリセットされます。
- 期限切れのイメージは、割り当てられた時間が経過すると消えますが、Quay に保存されます。イメージが完全に削除されるタイミング、またはコレクションされるタイミングは、組織の Time Machine の設定によって異なります。特に指定がない限り、ガベージコレクションのデフォルトの時間は 14 日です。
- Save をクリックします。
CLI で、プロキシーキャッシュとして機能するパブリックイメージ (quay.io など) をレジストリーからプルします。
$ podman pull <registry_url>/<organization_name>/<quayio_namespace>/<image_name>
重要組織がリモートレジストリー内の単一の名前空間からプルするように設定されている場合は、リモートレジストリーの名前空間を URL から省略する必要があります。たとえば、
podman pull <registry_url>/<organization_name>/<image_name>
です。
15.3.1. プロキシー組織でのストレージクォータ制限の活用
Red Hat Quay 3.8 では、プロキシーキャッシュ機能が強化され、タグ付きイメージの自動プルーニング機能が追加されました。イメージタグの自動プルーニングは、プロキシーされた名前空間にクォータ制限が設定されている場合にのみ使用できます。現在、イメージサイズが組織のクォータより大きい場合は、管理者が必要なスペースを作成するまで、イメージのアップロードはスキップされます。現在、割り当てられたスペースを超えるイメージがプッシュされると、自動プルーニングの機能強化により、使用頻度の最も低いタグが削除対象としてマークされます。その結果、新しいイメージタグが保存され、最も使用頻度の低いイメージタグが削除対象としてマークされます。
- 自動プルーニング機能の一部として、削除対象としてマークされたタグは、最終的にガベージコレクター (gc) ワーカープロセスによってガベージコレクションされます。そのため、この期間中はクォータサイズの制限が完全には適用されません。
- 現在、名前空間クォータサイズの計算では、マニフェストの子のサイズは考慮されていません。これは既知の問題であり、Red Hat Quay の今後のバージョンで修正される予定です。
15.3.1.1. プロキシー組織でのストレージクォータ制限機能のテスト
次の手順を使用して、プロキシーキャッシュとストレージクォータ制限が有効になっている組織の自動プルーニング機能をテストします。
前提条件
- 組織がプロキシー組織として機能するように設定されている。次の例では、quay.io からプロキシーします。
-
config.yaml
ファイルのFEATURE_PROXY_CACHE
がtrue
に設定されている。 -
config.yaml
ファイルでFEATURE_QUOTA_MANAGEMENT
がtrue
に設定されている。 -
組織には
150 MB
などのクォータ制限が設定されている。
手順
プロキシー組織からリポジトリーにイメージをプルします。以下に例を示します。
$ podman pull quay-server.example.com/proxytest/projectquay/quay:3.7.9
リポジトリーに残っているスペースによっては、プロキシー組織から追加のイメージのプルが必要になる場合があります。以下に例を示します。
$ podman pull quay-server.example.com/proxytest/projectquay/quay:3.6.2
Red Hat Quay レジストリー UI で、リポジトリーの名前をクリックします。
-
ナビゲーションペインで Tags をクリックし、
quay:3.7.9
とquay:3.6.2
がタグ付けされていることを確認します。
-
ナビゲーションペインで Tags をクリックし、
リポジトリーが、割り当てられたクォータを超えることになる最後のイメージをプルします。以下に例を示します。
$ podman pull quay-server.example.com/proxytest/projectquay/quay:3.5.1
-
Red Hat Quay レジストリーの Tags ページを更新します。プッシュした最初のイメージ (
quay:3.7.9
など) は、自動プルーニングされているはずです。Tags ページにはquay:3.6.2
とquay:3.5.1
が表示されるはずです。