第18章 スタンドアロンデプロイメントでの Red Hat Quay のバックアップと復元

このセクションの内容を使用して、スタンドアロンデプロイメントの Red Hat Quay をバックアップおよび復元します。

18.1. スタンドアロンデプロイメントでの Red Hat Quay のバックアップ

この手順では、スタンドアロンデプロイメントで Red Hat Quay のバックアップを作成する方法について説明します。

手順

  1. 一時バックアップディレクトリーを作成します (例: quay-backup)。

    $ mkdir /tmp/quay-backup
  2. 以下のコマンド例は、Red Hat Quay が開始されたローカルディレクトリー (/opt/quay-install など) を示しています。

    $ podman run --name quay-app \
       -v /opt/quay-install/config:/conf/stack:Z \
       -v /opt/quay-install/storage:/datastorage:Z \
       registry.redhat.io/quay/quay-rhel8:v3.8.15

    次のコマンドを実行して、コンテナー内の /conf/stack にバインドマウントするディレクトリー (/opt/quay-install など) に移動します。

    $ cd /opt/quay-install
  3. 以下のコマンドを入力して、Red Hat Quay デプロイメントの内容を quay-backup ディレクトリーのアーカイブに圧縮します。

    $ tar cvf /tmp/quay-backup/quay-backup.tar.gz *

    出力例:

    config.yaml
    config.yaml.bak
    extra_ca_certs/
    extra_ca_certs/ca.crt
    ssl.cert
    ssl.key
  4. 次のコマンドを入力して、Quay コンテナーサービスをバックアップします。

    $ podman inspect quay-app | jq -r '.[0].Config.CreateCommand | .[]' | paste -s -d ' ' -
    
      /usr/bin/podman run --name quay-app \
      -v /opt/quay-install/config:/conf/stack:Z \
      -v /opt/quay-install/storage:/datastorage:Z \
      registry.redhat.io/quay/quay-rhel8:v3.8.15
  5. 次のコマンドを入力して、conf/stack/config.yaml ファイルの内容を一時的に作成した quay-config.yaml ファイルにリダイレクトします。

    $ podman exec -it quay cat /conf/stack/config.yaml > /tmp/quay-backup/quay-config.yaml
  6. 以下のコマンドを入力して、一時的に作成した quay-config.yaml にある DB_URI を取得します。

    $ grep DB_URI /tmp/quay-backup/quay-config.yaml

    出力例:

    $ postgresql://<username>:test123@172.24.10.50/quay
  7. 次のコマンドを入力して、PostgreSQL の内容をバックアップ .sql ファイルの一時バックアップディレクトリーに抽出します。

    $ pg_dump -h 172.24.10.50  -p 5432 -d quay  -U  <username>   -W -O > /tmp/quay-backup/quay-backup.sql
  8. 次のコマンドを入力して、DISTRIBUTED_STORAGE_CONFIG の内容を出力します。

    DISTRIBUTED_STORAGE_CONFIG:
       default:
        - S3Storage
        - s3_bucket: <bucket_name>
          storage_path: /registry
          s3_access_key: <s3_access_key>
          s3_secret_key: <s3_secret_key>
          host: <host_name>
  9. ステップ 7 で取得した access_key 認証情報を使用して、AWS_ACCESS_KEY_ID をエクスポートします。

    $ export AWS_ACCESS_KEY_ID=<access_key>
  10. ステップ 7 で取得した secret_key を使用して、AWS_SECRET_ACCESS_KEY をエクスポートします。

    $ export AWS_SECRET_ACCESS_KEY=<secret_key>
  11. DISTRIBUTED_STORAGE_CONFIGhostname から quay バケットを /tmp/quay-backup/blob-backup/ ディレクトリーに同期します。

    $ aws s3 sync s3://<bucket_name>  /tmp/quay-backup/blob-backup/ --source-region us-east-2

    出力例:

    download: s3://<user_name>/registry/sha256/9c/9c3181779a868e09698b567a3c42f3744584ddb1398efe2c4ba569a99b823f7a to registry/sha256/9c/9c3181779a868e09698b567a3c42f3744584ddb1398efe2c4ba569a99b823f7a
    download: s3://<user_name>/registry/sha256/e9/e9c5463f15f0fd62df3898b36ace8d15386a6813ffb470f332698ecb34af5b0d to registry/sha256/e9/e9c5463f15f0fd62df3898b36ace8d15386a6813ffb470f332698ecb34af5b0d

機密情報が含まれているため、quay バケットを同期した後は quay-config.yaml ファイルを削除することをお勧めします。quay-config.yaml ファイルは quay-backup.tar.gz ファイルにバックアップされるため、失われることはありません。