16.2. 恢复 Red Hat Quay
此流程用于在 Red Hat Quay Operator 管理数据库时恢复 Red Hat Quay。它应该在执行 Red Hat Quay registry 备份后执行。如需更多信息,请参阅 备份 Red Hat Quay。
前提条件
- Red Hat Quay 使用 Red Hat Quay Operator 在 OpenShift Container Platform 上部署。
- 由 Red Hat Quay Operator 管理的 Red Hat Quay 配置的备份已按照 备份 Red Hat Quay 部分中的说明创建。
- 您的 Red Hat Quay 数据库已经备份。
- Red Hat Quay 使用的对象存储存储桶已被备份。
-
组件
quay、postgres和objectstorage被设置为managed: true -
如果组件
clair设置为managed: true,则组件clairpostgres也设置为managed: true(从 Red Hat Quay Operator v3.7 或更高版本开始) - 在 OpenShift Container Platform 集群上的目标命名空间中,没有运行由 Red Hat Quay Operator 管理的 Red Hat Quay 部署
如果您的部署包含部分非受管数据库或存储组件,且您使用 Postgres 或 S3 兼容对象存储来运行您的 Red Hat Quay 部署,您必须参考服务提供商或厂商文档从备份中恢复其数据,然后才能恢复 Red Hat Quay
16.2.1. 从备份中恢复 Red Hat Quay 及其配置 复制链接链接已复制到粘贴板!
这些说明假定您已遵循了 备份 Red Hat Quay 指南中的流程,并使用相同名称创建备份文件。
恢复备份的 Red Hat Quay 配置以及备份中生成的密钥:
oc create -f ./config-bundle.yaml oc create -f ./managed-secret-keys.yaml
$ oc create -f ./config-bundle.yaml $ oc create -f ./managed-secret-keys.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要如果您接收到错误
Error from server (AlreadyExists): error when creating "./config-bundle.yaml": secrets "config-bundle-secret" already exists,您需要使用$ oc delete Secret config-bundle-secret -n <quay-namespace>删除现有的资源,并使用$ oc create -f ./config-bundle.yaml重新创建它。恢复
QuayRegistry自定义资源:oc create -f ./quay-registry.yaml
$ oc create -f ./quay-registry.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 检查 Red Hat Quay 部署的状态,并等待它可用:
oc wait quayregistry registry --for=condition=Available=true -n <quay-namespace>
$ oc wait quayregistry registry --for=condition=Available=true -n <quay-namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
16.2.2. 缩减 Red Hat Quay 部署 复制链接链接已复制到粘贴板!
对于 Operator 版本 3.7 及更新版本: 通过禁用自动扩展并覆盖 Quay 的副本数,镜像 worker 和 Clair (如果管理)来缩减 Red Hat Quay 部署。您的
QuayRegistry资源应类似于以下内容:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于 Operator 版本 3.6 和更早版本: 首先缩减 Red Hat Quay Operator,然后缩减托管的 Red Hat Quay 资源,以缩减 Red Hat Quay 部署:
oc scale --replicas=0 deployment $(oc get deployment -n <quay-operator-namespace>|awk '/^quay-operator/ {print $1}') -n <quay-operator-namespace> oc scale --replicas=0 deployment $(oc get deployment -n <quay-namespace>|awk '/quay-app/ {print $1}') -n <quay-namespace> oc scale --replicas=0 deployment $(oc get deployment -n <quay-namespace>|awk '/quay-mirror/ {print $1}') -n <quay-namespace> oc scale --replicas=0 deployment $(oc get deployment -n <quay-namespace>|awk '/clair-app/ {print $1}') -n <quay-namespace>$ oc scale --replicas=0 deployment $(oc get deployment -n <quay-operator-namespace>|awk '/^quay-operator/ {print $1}') -n <quay-operator-namespace> $ oc scale --replicas=0 deployment $(oc get deployment -n <quay-namespace>|awk '/quay-app/ {print $1}') -n <quay-namespace> $ oc scale --replicas=0 deployment $(oc get deployment -n <quay-namespace>|awk '/quay-mirror/ {print $1}') -n <quay-namespace> $ oc scale --replicas=0 deployment $(oc get deployment -n <quay-namespace>|awk '/clair-app/ {print $1}') -n <quay-namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 等待
registry-quay-app、registry-quay-mirror和registry-clair-apppod (取决于您设置为由 Operator 管理的组件)消失。您可以运行以下命令来检查其状态:oc get pods -n <quay-namespace>
$ oc get pods -n <quay-namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
registry-quay-config-editor-77847fc4f5-nsbbv 1/1 Running 0 9m1s registry-quay-database-66969cd859-n2ssm 1/1 Running 0 6d1h registry-quay-redis-7cc5f6c977-956g8 1/1 Running 0 5d21h
registry-quay-config-editor-77847fc4f5-nsbbv 1/1 Running 0 9m1s registry-quay-database-66969cd859-n2ssm 1/1 Running 0 6d1h registry-quay-redis-7cc5f6c977-956g8 1/1 Running 0 5d21hCopy to Clipboard Copied! Toggle word wrap Toggle overflow
16.2.3. 恢复 Red Hat Quay 数据库 复制链接链接已复制到粘贴板!
确定您的 Quay 数据库容器集:
oc get pod -l quay-component=postgres -n <quay-namespace> -o jsonpath='{.items[0].metadata.name}'$ oc get pod -l quay-component=postgres -n <quay-namespace> -o jsonpath='{.items[0].metadata.name}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
quayregistry-quay-database-59f54bb7-58xs7
quayregistry-quay-database-59f54bb7-58xs7Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过从本地环境复制到 pod 来上传备份:
oc cp ./backup.sql -n <quay-namespace> registry-quay-database-66969cd859-n2ssm:/tmp/backup.sql
$ oc cp ./backup.sql -n <quay-namespace> registry-quay-database-66969cd859-n2ssm:/tmp/backup.sqlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为数据库打开一个远程终端:
oc rsh -n <quay-namespace> registry-quay-database-66969cd859-n2ssm
$ oc rsh -n <quay-namespace> registry-quay-database-66969cd859-n2ssmCopy to Clipboard Copied! Toggle word wrap Toggle overflow Enter psql:
bash-4.4$ psql
bash-4.4$ psqlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以运行以下命令来列出数据库:
postgres=# \l
postgres=# \lCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges ----------------------------+----------------------------+----------+------------+------------+----------------------- postgres | postgres | UTF8 | en_US.utf8 | en_US.utf8 | quayregistry-quay-database | quayregistry-quay-database | UTF8 | en_US.utf8 | en_US.utf8 |List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges ----------------------------+----------------------------+----------+------------+------------+----------------------- postgres | postgres | UTF8 | en_US.utf8 | en_US.utf8 | quayregistry-quay-database | quayregistry-quay-database | UTF8 | en_US.utf8 | en_US.utf8 |Copy to Clipboard Copied! Toggle word wrap Toggle overflow 丢弃数据库:
postgres=# DROP DATABASE "quayregistry-quay-database";
postgres=# DROP DATABASE "quayregistry-quay-database";Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
DROP DATABASE
DROP DATABASECopy to Clipboard Copied! Toggle word wrap Toggle overflow 退出 postgres CLI 以重新输入 bash-4.4:
\q
\qCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将 PostgreSQL 数据库重定向到您的备份数据库:
psql < /tmp/backup.sql
sh-4.4$ psql < /tmp/backup.sqlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 退出 bash:
exit
sh-4.4$ exitCopy to Clipboard Copied! Toggle word wrap Toggle overflow
16.2.4. 恢复 Red Hat Quay 对象存储数据 复制链接链接已复制到粘贴板!
导出
AWS_ACCESS_KEY_ID:export AWS_ACCESS_KEY_ID=$(oc get secret -l app=noobaa -n <quay-namespace> -o jsonpath='{.items[0].data.AWS_ACCESS_KEY_ID}' |base64 -d)$ export AWS_ACCESS_KEY_ID=$(oc get secret -l app=noobaa -n <quay-namespace> -o jsonpath='{.items[0].data.AWS_ACCESS_KEY_ID}' |base64 -d)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 导出
AWS_SECRET_ACCESS_KEY:export AWS_SECRET_ACCESS_KEY=$(oc get secret -l app=noobaa -n <quay-namespace> -o jsonpath='{.items[0].data.AWS_SECRET_ACCESS_KEY}' |base64 -d)$ export AWS_SECRET_ACCESS_KEY=$(oc get secret -l app=noobaa -n <quay-namespace> -o jsonpath='{.items[0].data.AWS_SECRET_ACCESS_KEY}' |base64 -d)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将所有 blob 上传到存储桶:
aws s3 sync --no-verify-ssl --endpoint https://$(oc get route s3 -n openshift-storage -o jsonpath='{.spec.host}') ./blobs s3://$(oc get cm -l app=noobaa -n <quay-namespace> -o jsonpath='{.items[0].data.BUCKET_NAME}')$ aws s3 sync --no-verify-ssl --endpoint https://$(oc get route s3 -n openshift-storage -o jsonpath='{.spec.host}') ./blobs s3://$(oc get cm -l app=noobaa -n <quay-namespace> -o jsonpath='{.items[0].data.BUCKET_NAME}')Copy to Clipboard Copied! Toggle word wrap Toggle overflow
16.2.5. 扩展 Red Hat Quay 部署 复制链接链接已复制到粘贴板!
对于 Operator 版本 3.7 及更新版本: 如果需要,通过重新启用自动扩展、删除 Quay worker 和 Clair 的副本覆盖,以扩展 Red Hat Quay 部署。您的
QuayRegistry资源应类似于以下内容:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于 Operator 版本 3.6 和更早版本: 通过再次扩展 Red Hat Quay Operator 来扩展 Red Hat Quay 部署:
oc scale --replicas=1 deployment $(oc get deployment -n <quay-operator-namespace> | awk '/^quay-operator/ {print $1}') -n <quay-operator-namespace>$ oc scale --replicas=1 deployment $(oc get deployment -n <quay-operator-namespace> | awk '/^quay-operator/ {print $1}') -n <quay-operator-namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查 Red Hat Quay 部署的状态:
oc wait quayregistry registry --for=condition=Available=true -n <quay-namespace>
$ oc wait quayregistry registry --for=condition=Available=true -n <quay-namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow