17.3. 在独立部署中恢复 Red Hat Quay
此流程描述了如何在独立部署中恢复 Red Hat Quay。
先决条件
- 您已备份了 Red Hat Quay 部署。
流程
在 Red Hat Quay 容器中创建一个将 bind-mount 到
/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 并在 IANA10.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 registry 端点必须在备份和恢复前相同。
输出示例:
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>