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 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>