17.3. 在独立部署中恢复 Red Hat Quay


此流程描述了如何在独立部署中恢复 Red Hat Quay。

先决条件

  • 您已备份了 Red Hat Quay 部署。

流程

  1. 创建一个新目录,它将绑定到 Red Hat Quay 容器内的 /conf/stack

    $ mkdir /opt/new-quay-install
  2. 将在 独立部署上的 Red Hat Quay 时创建的临时备份目录内容复制到第 1 步中创建的 new-quay-install1 目录中:

    $ cp /tmp/quay-backup/quay-backup.tar.gz /opt/new-quay-install/
  3. 输入以下命令进入 new-quay-install 目录:

    $ cd /opt/new-quay-install/
  4. 提取 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
  5. 输入以下命令从您备份的 config.yaml 文件中重新调用 DB_URI

    $ grep DB_URI config.yaml

    输出示例:

    postgresql://<username>:test123@172.24.10.50/quay
  6. 运行以下命令来进入 PostgreSQL 数据库服务器:

    $ sudo postgres
  7. 输入以下命令在 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
  8. 运行以下命令来连接到数据库:

    postgres=# \c "example-restore-registry-quay-database";

    输出示例:

    You are now connected to database "example-restore-registry-quay-database" as user "postgres".
  9. 运行以下命令,为您的 Quay 数据库创建一个 pg_trmg 扩展:

    example_restore_registry_quay_database=> CREATE EXTENSION IF NOT EXISTS pg_trgm;

    输出示例:

    CREATE EXTENSION
  10. 输入以下命令退出 postgres CLI:

    \q
  11. 运行以下命令,将数据库备份导入到您的新数据库中:

    $ 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 > 的值。

  12. /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. 使用在第 13 步中获取的 access_key 凭证导出 AWS_ACCESS_KEY_ID

    $ export AWS_ACCESS_KEY_ID=<access_key>
  14. 使用在第 13 步中获取的 secret_key 导出 AWS_SECRET_ACCESS_KEY

    $ export AWS_SECRET_ACCESS_KEY=<secret_key>
  15. 输入以下命令创建一个新的 s3 存储桶:

    $ aws s3 mb s3://<new_bucket_name>  --region us-east-2

    输出示例:

    $ make_bucket: quay
  16. 输入以下命令将所有 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
    ...
  17. 在重启 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>
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.