11.2. 恢复 Red Hat Quay
当 Red Hat Quay Operator 管理数据库时,这个流程用于恢复 Red Hat Quay。它应该在执行 Quay registry 备份后执行。
先决条件
- Red Hat Quay 使用 Quay Operator 在 OpenShift Container Platform 上部署。
- 您的 Red Hat Quay 数据库已被备份。
流程
恢复备份的 Quay 配置和随机生成的密钥:
oc create -f ./config-bundle.yaml
$ oc create -f ./config-bundle.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc create -f ./managed-secret-keys.yaml
$ oc create -f ./managed-secret-keys.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果您收到错误
Error from server (AlreadyExists):创建 "./config-bundle.yaml": secrets "config-bundle-secret" already exists
时的错误,您必须使用 $ oc delete Secret config-bundle-secret -n <quay
重新创建它。-namespace
>恢复 QuayRegistry 自定义资源:
oc create -f ./quay-registry.yaml
$ oc create -f ./quay-registry.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 缩减 Quay Operator:
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-operator-namespace> |awk '/^quay-operator/ {print $1}') -n <quay-operator-namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 缩减 Quay 命名空间:
oc scale --replicas=0 deployment $(oc get deployment -n <quay-namespace> -l quay-component=quay -o jsonpath='{.items[0].metadata.name}') -n <quay-namespace>
$ oc scale --replicas=0 deployment $(oc get deployment -n <quay-namespace> -l quay-component=quay -o jsonpath='{.items[0].metadata.name}') -n <quay-namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 识别您的 Quay 数据库 pod:
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-58xs7
Copy 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.sql
Copy 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-n2ssm
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Enter psql:
bash-4.4$ psql
bash-4.4$ psql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以运行以下命令来列出数据库:
postgres=# \l
postgres=# \l
Copy 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 DATABASE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 退出 postgres CLI 以重新输入 bash-4.4 :
\q
\q
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将您的 PostgreSQL 数据库重定向到备份数据库:
psql < /tmp/backup.sql
sh-4.4$ psql < /tmp/backup.sql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 退出 bash:
exit
sh-4.4$ exit
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 导出
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 扩展 Quay Operator:
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 扩展 Quay 命名空间:
oc scale --replicas=1 deployment $(oc get deployment -n <quay-namespace> -l quay-component=quay -o jsonpath='{.items[0].metadata.name}') -n <quay-namespace>
$ oc scale --replicas=1 deployment $(oc get deployment -n <quay-namespace> -l quay-component=quay -o jsonpath='{.items[0].metadata.name}') -n <quay-namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查 Operator 的状态,并确保它重新上线:
oc get quayregistry -n <quay-namespace> <registry-name> -o yaml
$ oc get quayregistry -n <quay-namespace> <registry-name> -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow