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
输入以下命令在 172.24.10.50 中输入 psql 并创建一个新数据库来恢复 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>