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


先决条件

  • 您的独立 Red Hat Quay 数据、blob、数据库和 config.yaml 已备份。
  • Red Hat Quay 使用 Red Hat 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. 输入 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
    注意

    如果 Red Hat Quay 返回一个 500 internal server 错误,您可能需要将 DISTRIBUTED_STORAGE_CONFIG 的位置 更新为 default

  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 上的新 Red Hat Quay 部署应包含旧部署具有的所有信息。您应能够拉取所有镜像。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat