17.2. 使用备份的独立内容迁移到 OpenShift Container Platform。


前提条件

  • 您的独立 Red Hat Quay 数据、blob、数据库和 config.yaml 已被备份。
  • Red Hat Quay 使用 Quay Operator 部署到 OpenShift Container Platform 上。
  • 将带有所有组件的 QuayRegistry 设置为 managed
流程

本文档中的步骤使用以下命名空间: quay-enterprise

  1. 缩减 Red Hat Quay Operator:

    $ oc scale --replicas=0 deployment quay-operator.v3.6.2 -n openshift-operators
    Copy to Clipboard Toggle word wrap
  2. 缩减应用程序并镜像部署:

    $ oc scale --replicas=0 deployment QUAY_MAIN_APP_DEPLOYMENT QUAY_MIRROR_DEPLOYMENT
    Copy to Clipboard Toggle word wrap
  3. 将数据库 SQL 备份复制到 Quay PostgreSQL 数据库实例中:

    $ oc cp /tmp/user/quay-backup/quay-database-backup.sql quay-enterprise/quayregistry-quay-database-54956cdd54-p7b2w:/var/lib/pgsql/data/userdata
    Copy to Clipboard Toggle word wrap
  4. 从 Operator 创建的 config.yaml 文件获取数据库密码:

    $ oc get deployment quay-quay-app -o json | jq '.spec.template.spec.volumes[].projected.sources' | grep -i config-secret
    Copy to Clipboard Toggle word wrap

    输出示例:

          "name": "QUAY_CONFIG_SECRET_NAME"
    Copy to Clipboard Toggle word wrap
    $ oc get secret quay-quay-config-secret-9t77hb84tb -o json | jq '.data."config.yaml"' | cut -d '"' -f2 | base64 -d -w0 > /tmp/quay-backup/operator-quay-config-yaml-backup.yaml
    Copy to Clipboard Toggle word wrap
    cat /tmp/quay-backup/operator-quay-config-yaml-backup.yaml | grep -i DB_URI
    Copy to Clipboard Toggle word wrap

    输出示例:

    postgresql://QUAY_DATABASE_OWNER:PASSWORD@DATABASE_HOST/QUAY_DATABASE_NAME
    Copy to Clipboard Toggle word wrap
  5. 在数据库 pod 中执行 shell:

    # oc exec -it quay-postgresql-database-pod -- /bin/bash
    Copy to Clipboard Toggle word wrap
  6. Enter psql:

    bash-4.4$ psql
    Copy to Clipboard Toggle word wrap
  7. 丢弃数据库:

    postgres=# DROP DATABASE "example-restore-registry-quay-database";
    Copy to Clipboard Toggle word wrap

    输出示例:

    DROP DATABASE
    Copy to Clipboard Toggle word wrap
  8. 创建新数据库并设置所有者与名称相同:

    postgres=# CREATE DATABASE "example-restore-registry-quay-database" OWNER "example-restore-registry-quay-database";
    Copy to Clipboard Toggle word wrap

    输出示例:

    CREATE DATABASE
    Copy to Clipboard Toggle word wrap
  9. 连接到数据库:

    postgres=# \c "example-restore-registry-quay-database";
    Copy to Clipboard Toggle word wrap

    输出示例:

    You are now connected to database "example-restore-registry-quay-database" as user "postgres".
    Copy to Clipboard Toggle word wrap
  10. 创建 Quay 数据库的 pg_trmg 扩展:

    example-restore-registry-quay-database=# create extension pg_trgm ;
    Copy to Clipboard Toggle word wrap

    输出示例:

    CREATE EXTENSION
    Copy to Clipboard Toggle word wrap
  11. 退出 postgres CLI 以重新输入 bash-4.4:

    \q
    Copy to Clipboard Toggle word wrap
  12. 设置 PostgreSQL 部署的密码:

    bash-4.4$ psql -h localhost -d "QUAY_DATABASE_NAME" -U QUAY_DATABASE_OWNER -W < /var/lib/pgsql/data/userdata/quay-database-backup.sql
    Copy to Clipboard Toggle word wrap

    输出示例:

    SET
    SET
    SET
    SET
    SET
    Copy to Clipboard Toggle word wrap
  13. 退出 bash 模式:

    bash-4.4$ exit
    Copy to Clipboard Toggle word wrap
  14. 为 Red Hat Quay Operator 创建新的配置捆绑包。

    $ touch config-bundle.yaml
    Copy to Clipboard Toggle word wrap
  15. 在新的 config-bundle.yaml 中,包括 registry 需要的所有信息,如 LDAP 配置、密钥以及旧 registry 的其他修改。运行以下命令,将 secret_key 移到 config-bundle.yaml 中:

    $ cat /tmp/quay-backup/config.yaml | grep SECRET_KEY > /tmp/quay-backup/config-bundle.yaml
    Copy to Clipboard Toggle word wrap
    注意

    您必须手动复制所有 LDAP、OIDC 和其他信息并将其添加到 /tmp/quay-backup/config-bundle.yaml 文件中。

  16. 在 OpenShift 集群内创建配置捆绑包 secret:

    $ oc create secret generic new-custom-config-bundle --from-file=config.yaml=/tmp/quay-backup/config-bundle.yaml
    Copy to Clipboard Toggle word wrap
  17. 扩展 Quay pod:

    $ oc scale --replicas=1 deployment quayregistry-quay-app
    deployment.apps/quayregistry-quay-app scaled
    Copy to Clipboard Toggle word wrap
  18. 扩展镜像 pod:

    $ oc scale --replicas=1  deployment quayregistry-quay-mirror
    deployment.apps/quayregistry-quay-mirror scaled
    Copy to Clipboard Toggle word wrap
  19. QuayRegistry CRD 进行补丁,使其包含对新自定义配置捆绑包的引用:

    $ oc patch quayregistry QUAY_REGISTRY_NAME --type=merge -p '{"spec":{"configBundleSecret":"new-custom-config-bundle"}}'
    Copy to Clipboard Toggle word wrap
    注意

    如果 Quay 返回 500 个内部服务器错误,您可能需要将 DISTRIBUTED_STORAGE_CONFIG 的位置 更新为 默认的

  20. /.aws/ 目录中创建一个新的 AWS credentials.yaml,并包含来自 Operator 创建的 config.yaml 文件中的 access_keysecret_key

    $ touch credentials.yaml
    Copy to Clipboard Toggle word wrap
    $ grep -i DISTRIBUTED_STORAGE_CONFIG -A10 /tmp/quay-backup/operator-quay-config-yaml-backup.yaml
    Copy to Clipboard Toggle word wrap
    $ cat > ~/.aws/credentials << EOF
    [default]
    aws_access_key_id = ACCESS_KEY_FROM_QUAY_CONFIG
    aws_secret_access_key = SECRET_KEY_FROM_QUAY_CONFIG
    EOF
    Copy to Clipboard Toggle word wrap
    注意

    如果 aws cli 不会自动从 '~/.aws/credentials 文件 收集 access_keysecret_key,您可以通过运行 aws 配置并手动输入凭证来配置 这些配置。

  21. 记录 NooBaa 的公开端点:

    $ oc get route s3 -n openshift-storage -o yaml -o jsonpath="{.spec.host}{'\n'}"
    Copy to Clipboard Toggle word wrap
  22. 将备份数据同步到 NooBaa 后端存储:

    $ aws s3 sync --no-verify-ssl --endpoint-url https://NOOBAA_PUBLIC_S3_ROUTE /tmp/quay-backup/bucket-backup/* s3://QUAY_DATASTORE_BUCKET_NAME
    Copy to Clipboard Toggle word wrap
  23. 将 Operator 扩展至 1 个 pod:

    $ oc scale –replicas=1 deployment quay-operator.v3.6.4 -n openshift-operators
    Copy to Clipboard Toggle word wrap

Operator 将使用提供的自定义配置捆绑包,并将协调所有 secret 和部署。在 OpenShift Container Platform 上,您的新 Quay 部署应包含旧部署所需的所有信息。所有镜像均应可以拉取。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat