17.3. スタンドアロンデプロイメントでの Red Hat Quay の復元
この手順では、スタンドアロンデプロイメントで Red Hat Quay を復元する方法について説明します。
前提条件
- Red Hat Quay デプロイメントをバックアップしている。
手順
Red Hat Quay コンテナー内の
/conf/stack
にバインドマウントする新しいディレクトリーを作成します。$ mkdir /opt/new-quay-install
スタンドアロンデプロイメントでの Red Hat Quay のバックアップ で作成した一時バックアップディレクトリーの内容を、ステップ 1 で作成した
new-quay-install1
ディレクトリーにコピーします。$ cp /tmp/quay-backup/quay-backup.tar.gz /opt/new-quay-install/
次のコマンドを入力して、
new-quay-install
ディレクトリーに移動します。$ cd /opt/new-quay-install/
Red Hat Quay ディレクトリーの内容を抽出します。
$ tar xvf /tmp/quay-backup/quay-backup.tar.gz *
出力例:
config.yaml config.yaml.bak extra_ca_certs/ extra_ca_certs/ca.crt ssl.cert ssl.key
次のコマンドを入力して、バックアップした
config.yaml
ファイルからDB_URI
を呼び出します。$ grep DB_URI config.yaml
出力例:
postgresql://<username>:test123@172.24.10.50/quay
次のコマンドを実行して、PostgreSQL データベースサーバーに入ります。
$ sudo postgres
次のコマンドを入力して、psql と入力し、172.24.10.50 に新しいデータベースを作成して、quay データベースを復元します (例:
example_restore_registry_quay_database
)。$ psql "host=172.24.10.50 port=5432 dbname=postgres user=<username> password=test123" postgres=> CREATE DATABASE example_restore_registry_quay_database;
出力例:
CREATE DATABASE
次のコマンドを実行して、データベースに接続します。
postgres=# \c "example-restore-registry-quay-database";
出力例:
You are now connected to database "example-restore-registry-quay-database" as user "postgres".
次のコマンドを実行して、Quay データベースの
pg_trmg
エクステンションを作成します。example_restore_registry_quay_database=> CREATE EXTENSION IF NOT EXISTS pg_trgm;
出力例:
CREATE EXTENSION
次のコマンドを入力して、postgres CLI を終了します。
\q
次のコマンドを実行して、データベースのバックアップを新しいデータベースにインポートします。
$ psql "host=172.24.10.50 port=5432 dbname=example_restore_registry_quay_database user=<username> password=test123" -W < /tmp/quay-backup/quay-backup.sql
出力例:
SET SET SET SET SET
Red Hat Quay のデプロイメントを再起動する前に
config.yaml
のDB_URI
の値をpostgresql://<username>:test123@172.24.10.50/quay
からpostgresql://<username>:test123@172.24.10.50/example-restore-registry-quay-database
に更新してください。注記DB_URI の形式は
DB_URI postgresql://<login_user_name>:<login_user_password>@<postgresql_host>/<quay_database>
です。ある PostgreSQL サーバーから別の PostgreSQL サーバーに移動する場合は、<login_user_name>
、<login_user_password>
、および<postgresql_host>
の値を同時に更新します。/opt/new-quay-install
ディレクトリーで、DISTRIBUTED_STORAGE_CONFIG
バンドルの内容を出力します。$ cat config.yaml | grep DISTRIBUTED_STORAGE_CONFIG -A10
出力例:
DISTRIBUTED_STORAGE_CONFIG: default: DISTRIBUTED_STORAGE_CONFIG: default: - S3Storage - s3_bucket: <bucket_name> storage_path: /registry s3_access_key: <s3_access_key> s3_region: <region> s3_secret_key: <s3_secret_key> host: <host_name>
注記Red Hat Quay のデプロイメントを再起動する前に
/opt/new-quay-install
にあるDISTRIBUTED_STORAGE_CONFIG
を更新する必要があります。ステップ 13 で取得した
access_key
認証情報を使用して、AWS_ACCESS_KEY_ID
をエクスポートします。$ export AWS_ACCESS_KEY_ID=<access_key>
ステップ 13 で取得した
secret_key
を使用して、AWS_SECRET_ACCESS_KEY
をエクスポートします。$ export AWS_SECRET_ACCESS_KEY=<secret_key>
次のコマンドを入力して、新しい s3 バケットを作成します。
$ aws s3 mb s3://<new_bucket_name> --region us-east-2
出力例:
$ make_bucket: quay
次のコマンドを入力して、すべての Blob を新しい s3 バケットにアップロードします。
$ aws s3 sync --no-verify-ssl \ --endpoint-url <example_endpoint_url> 1 /tmp/quay-backup/blob-backup/. s3://quay/
- 1
- Red Hat Quay レジストリーのエンドポイントは、バックアップ前と復元後に同じである必要があります。
出力例:
upload: ../../tmp/quay-backup/blob-backup/datastorage/registry/sha256/50/505edb46ea5d32b5cbe275eb766d960842a52ee77ac225e4dc8abb12f409a30d to s3://quay/datastorage/registry/sha256/50/505edb46ea5d32b5cbe275eb766d960842a52ee77ac225e4dc8abb12f409a30d upload: ../../tmp/quay-backup/blob-backup/datastorage/registry/sha256/27/27930dc06c2ee27ac6f543ba0e93640dd21eea458eac47355e8e5989dea087d0 to s3://quay/datastorage/registry/sha256/27/27930dc06c2ee27ac6f543ba0e93640dd21eea458eac47355e8e5989dea087d0 upload: ../../tmp/quay-backup/blob-backup/datastorage/registry/sha256/8c/8c7daf5e20eee45ffe4b36761c4bb6729fb3ee60d4f588f712989939323110ec to s3://quay/datastorage/registry/sha256/8c/8c7daf5e20eee45ffe4b36761c4bb6729fb3ee60d4f588f712989939323110ec ...
Red Hat Quay デプロイメントを再起動する前に、config.yaml でストレージ設定を更新します。
DISTRIBUTED_STORAGE_CONFIG: default: DISTRIBUTED_STORAGE_CONFIG: default: - S3Storage - s3_bucket: <new_bucket_name> storage_path: /registry s3_access_key: <s3_access_key> s3_secret_key: <s3_secret_key> s3_region: <region> host: <host_name>