第6章 Red Hat Quay Operator によって管理される Red Hat Quay のバックアップおよび復元


OpenShift Container Platform で Red Hat Quay Operator によって管理される場合、このセクション内のコンテンツを使用して Red Hat Quay をバックアップおよび復元します。

6.1. オプション: Red Hat Quay on OpenShift Container Platform の読み取り専用モードを有効にする

Red Hat Quay on OpenShift Container Platform デプロイメントで読み取り専用モードを有効にすると、レジストリーの操作を管理できるようになります。管理者は、読み取り専用モードを有効にしてレジストリーへの書き込みアクセスを制限できます。これは、データの整合性の確保、メンテナンス期間中のリスクの軽減、レジストリーデータへの意図しない変更に対する保護に役立ちます。また、Red Hat Quay レジストリーがオンライン状態を維持し、ユーザーにイメージを提供できるようにするのにも役立ちます。

バックアップおよび復元を行う場合、Red Hat Quay on OpenShift Container Platform デプロイメントをスケールダウンする必要があります。その結果、バックアップ期間中にサービスを利用できなくなります。場合によっては、そのような状況は許容できません。読み取り専用モードを有効にすると、Red Hat Quay on OpenShift Container Platform デプロイメントのバックアップおよび復元手順を実行している間も、サービスの可用性が確保されます。

注記

場合によっては、サービスキーの挿入やその他の手動での設定変更が必要になるため、Red Hat Quay の読み取り専用オプションは使用できないことがあります。読み取り専用モードの代わりに、Red Hat Quay 管理者には DISABLE_PUSHES 機能の有効化を検討することを推奨します。このフィールドを True に設定すると、ユーザーは CLI を使用するときにイメージまたはイメージタグをレジストリーにプッシュできなくなります。DISABLE_PUSHES を有効にすることは、データベースが read-only として設定されないため、read-only モードとは異なります。

このフィールドは、Red Hat Quay 管理者がレジストリーのクォータを計算し、計算が完了するまでイメージのプッシュを無効にしたい場合など、一部の状況で役立つ場合があります。この方法を使用すると、管理者はレジストリー全体を read-only モードにしてデータベースに影響を与えることを回避できるため、ほとんどの操作を引き続き実行できます。

この設定フィールドを有効にする方法の詳細は、その他の設定フィールド を参照してください。

前提条件

  • Red Hat Enterprise Linux (RHEL) 7.x を使用している場合:

    • Red Hat Software Collections List (RHSCL) を有効にした。
    • Python 3.6 をインストールした。
    • virtualenv パッケージをダウンロードした。
    • git CLI をインストールした。
  • Red Hat Enterprise Linux (RHEL) 8 を使用している場合:

    • マシンに Python 3 をインストールした。
    • python3-virtualenv パッケージをダウンロードした。
    • git CLI をインストールした。
  • https://github.com/quay/quay.git リポジトリーのクローンを作成した。
  • oc CLI がインストールされている。
  • cluster-admin 権限でクラスターにアクセスできる。

6.1.1. Red Hat Quay on OpenShift Container Platform のサービスキーを作成する

Red Hat Quay はサービスキーを使用してさまざまなコンポーネントと通信します。サービスキーは、イメージのスキャン、ログイン、ストレージアクセスなどの要求など、完了した要求に署名するために使用されます。

手順

  1. 次のコマンドを入力して、Red Hat Quay Pod のリストを取得します。

    $ oc get pods -n <namespace>
    Copy to Clipboard Toggle word wrap

    出力例

    example-registry-clair-app-7dc7ff5844-4skw5           0/1     Error                    0             70d
    example-registry-clair-app-7dc7ff5844-nvn4f           1/1     Running                  0             31d
    example-registry-clair-app-7dc7ff5844-x4smw           0/1     ContainerStatusUnknown   6 (70d ago)   70d
    example-registry-clair-app-7dc7ff5844-xjnvt           1/1     Running                  0             60d
    example-registry-clair-postgres-547d75759-75c49       1/1     Running                  0             70d
    example-registry-quay-app-76c8f55467-52wjz            1/1     Running                  0             70d
    example-registry-quay-app-76c8f55467-hwz4c            1/1     Running                  0             70d
    example-registry-quay-app-upgrade-57ghs               0/1     Completed                1             70d
    example-registry-quay-database-7c55899f89-hmnm6       1/1     Running                  0             70d
    example-registry-quay-mirror-6cccbd76d-btsnb          1/1     Running                  0             70d
    example-registry-quay-mirror-6cccbd76d-x8g42          1/1     Running                  0             70d
    example-registry-quay-redis-85cbdf96bf-4vk5m          1/1     Running                  0             70d
    Copy to Clipboard Toggle word wrap
  2. 次のコマンドを入力して、Quay コンテナーへのリモートシェルセッションを開きます。

    $ oc rsh example-registry-quay-app-76c8f55467-52wjz
    Copy to Clipboard Toggle word wrap
  3. 次のコマンドを入力して、必要なサービスキーを作成します。

    sh-4.4$ python3 tools/generatekeypair.py quay-readonly
    Copy to Clipboard Toggle word wrap

    出力例

    Writing public key to quay-readonly.jwk
    Writing key ID to quay-readonly.kid
    Writing private key to quay-readonly.pem
    Copy to Clipboard Toggle word wrap

6.1.2. PostgreSQL データベースへのキーの追加

PostgreSQL データベースにサービスキーを追加するには、次の手順に従います。

前提条件

  • サービスキーを作成した。

手順

  1. 次のコマンドを入力して、Red Hat Quay データベース環境に入ります。

    $ oc rsh example-registry-quay-app-76c8f55467-52wjz psql -U <database_username> -d <database_name>
    Copy to Clipboard Toggle word wrap
  2. 次のコマンドを入力して、servicekeyapproval の承認タイプと関連する注記を表示します。

    quay=# select * from servicekeyapproval;
    Copy to Clipboard Toggle word wrap

    出力例

     id | approver_id |          approval_type           |       approved_date        | notes
    ----+-------------+----------------------------------+----------------------------+-------
      1 |             | ServiceKeyApprovalType.AUTOMATIC | 2024-05-07 03:47:48.181347 |
      2 |             | ServiceKeyApprovalType.AUTOMATIC | 2024-05-07 03:47:55.808087 |
      3 |             | ServiceKeyApprovalType.AUTOMATIC | 2024-05-07 03:49:04.27095  |
      4 |             | ServiceKeyApprovalType.AUTOMATIC | 2024-05-07 03:49:05.46235  |
      5 |           1 | ServiceKeyApprovalType.SUPERUSER | 2024-05-07 04:05:10.296796 |
    ...
    Copy to Clipboard Toggle word wrap
  3. 次のクエリーを入力して、Red Hat Quay データベースにサービスキーを追加します。

    quay=# INSERT INTO servicekey
      (name, service, metadata, kid, jwk, created_date, expiration_date)
      VALUES ('quay-readonly',
               'quay',
               '{}',
               '{<contents_of_.kid_file>}',
               '{<contents_of_.jwk_file>}',
               '{<created_date_of_read-only>}',
               '{<expiration_date_of_read-only>}');
    Copy to Clipboard Toggle word wrap

    出力例

    INSERT 0 1
    Copy to Clipboard Toggle word wrap
  4. 次のクエリーを使用してキー承認を追加します。

    quay=# INSERT INTO servicekeyapproval ('approval_type', 'approved_date', 'notes')
      VALUES ("ServiceKeyApprovalType.SUPERUSER", "CURRENT_DATE",
               {include_notes_here_on_why_this_is_being_added});
    Copy to Clipboard Toggle word wrap

    出力例

    INSERT 0 1
    Copy to Clipboard Toggle word wrap
  5. 作成されたサービスキー行の approval_id フィールドを、作成されたサービスキー承認の id フィールドに設定します。必要な ID を取得するには、次の SELECT ステートメントを使用できます。

    UPDATE servicekey
    SET approval_id = (SELECT id FROM servicekeyapproval WHERE approval_type = 'ServiceKeyApprovalType.SUPERUSER')
    WHERE name = 'quay-readonly';
    Copy to Clipboard Toggle word wrap
    UPDATE 1
    Copy to Clipboard Toggle word wrap

6.1.3. Red Hat Quay on OpenShift Container Platform を読み取り専用モードに設定する

サービスキーを作成し、PostgreSQL データベースに追加したら、OpenShift Container Platform デプロイメントで Quay コンテナーを再起動する必要があります。

重要

OpenShift Container Platform に Red Hat Quay を読み取り専用モードでデプロイするには、OpenShift Container Platform クラスター内に保存されているシークレットを変更する必要があります。シークレットを変更する前に、シークレットのバックアップを作成することを強く推奨します。

前提条件

  • サービスキーを作成し、PostgreSQL データベースに追加した。

手順

  1. 次のコマンドを入力して、Red Hat Quay on OpenShift Container Platform デプロイメントのシークレット名を読み取ります。

    $ oc get deployment -o yaml <quay_main_app_deployment_name>
    Copy to Clipboard Toggle word wrap
  2. base64 コマンドを使用して、quay-readonly.kid ファイルと quay-readonly.pem ファイルをエンコードします。

    $ base64 -w0 quay-readonly.kid
    Copy to Clipboard Toggle word wrap

    出力例

    ZjUyNDFm...
    Copy to Clipboard Toggle word wrap
    $ base64 -w0 quay-readonly.pem
    Copy to Clipboard Toggle word wrap

    出力例

    LS0tLS1CRUdJTiBSU0E...
    Copy to Clipboard Toggle word wrap
  3. 次のコマンドを入力して、現在の設定バンドルとシークレットを取得します。

    $ oc get secret quay-config-secret-name -o json | jq '.data."config.yaml"' | cut -d '"' -f2 | base64 -d -w0 > config.yaml
    Copy to Clipboard Toggle word wrap
  4. config.yaml ファイルを編集し、次の情報を追加します。

    # ...
    REGISTRY_STATE: readonly
    INSTANCE_SERVICE_KEY_KID_LOCATION: 'conf/stack/quay-readonly.kid'
    INSTANCE_SERVICE_KEY_LOCATION: 'conf/stack/quay-readonly.pem'
    # ...
    Copy to Clipboard Toggle word wrap
  5. 次のコマンドを実行してファイルを保存し、base64 でエンコードします。

    $ base64 -w0 quay-config.yaml
    Copy to Clipboard Toggle word wrap
  6. Red Hat Quay Operator Pod を 0 にスケールダウンします。これにより、シークレットの編集後に Operator がシークレットを調整することがなくなります。

    $ oc scale --replicas=0 deployment quay-operator -n openshift-operators
    Copy to Clipboard Toggle word wrap
  7. シークレットを編集し、新しい内容を追加します。

    $ oc edit secret quay-config-secret-name -n quay-namespace
    Copy to Clipboard Toggle word wrap
    # ...
    data:
      "quay-readonly.kid": "ZjUyNDFm..."
      "quay-readonly.pem": "LS0tLS1CRUdJTiBSU0E..."
      "config.yaml": "QUNUSU9OX0xPR19..."
    # ...
    Copy to Clipboard Toggle word wrap

    Red Hat Quay on OpenShift Container Platform デプロイメントを読み取り専用モードで実行すると、レジストリーの操作を安全に管理しながら、バックアップや復元などのアクションを実行できます。

Red Hat Quay on OpenShift Container Platform を読み取り専用モードにしておく必要がなくなったら、デプロイメントをスケールアップし、追加した内容をシークレットから削除できます。

手順

  1. config.yaml ファイルを編集し、次の情報を削除します。

    # ...
    REGISTRY_STATE: readonly
    INSTANCE_SERVICE_KEY_KID_LOCATION: 'conf/stack/quay-readonly.kid'
    INSTANCE_SERVICE_KEY_LOCATION: 'conf/stack/quay-readonly.pem'
    # ...
    Copy to Clipboard Toggle word wrap
  2. 次のコマンドを入力して、Red Hat Quay Operator をスケールアップします。

    oc scale --replicas=1 deployment quay-operator -n openshift-operators
    Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat