18.2. 使用备份的独立内容迁移到 OpenShift Container Platform。
先决条件
-
您的独立 Red Hat Quay 数据、blob、数据库和
config.yaml
已被备份。 - 使用 Red Hat Quay Operator 在 OpenShift Container Platform 上部署 Red Hat Quay。
-
将带有所有组件的
QuayRegistry
设置为managed
。
本文档中的步骤使用以下命名空间: quay-enterprise
。
缩减 Red Hat Quay Operator:
oc scale --replicas=0 deployment quay-operator.v3.6.2 -n openshift-operators
$ oc scale --replicas=0 deployment quay-operator.v3.6.2 -n openshift-operators
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 缩减应用程序和镜像部署:
oc scale --replicas=0 deployment QUAY_MAIN_APP_DEPLOYMENT QUAY_MIRROR_DEPLOYMENT
$ oc scale --replicas=0 deployment QUAY_MAIN_APP_DEPLOYMENT QUAY_MIRROR_DEPLOYMENT
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将数据库 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
$ 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 Copied! Toggle word wrap Toggle overflow 从 Operator 创建的
config.yaml
文件获取数据库密码:oc get deployment quay-quay-app -o json | jq '.spec.template.spec.volumes[].projected.sources' | grep -i config-secret
$ oc get deployment quay-quay-app -o json | jq '.spec.template.spec.volumes[].projected.sources' | grep -i config-secret
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
"name": "QUAY_CONFIG_SECRET_NAME"
"name": "QUAY_CONFIG_SECRET_NAME"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
$ 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 Copied! Toggle word wrap Toggle overflow cat /tmp/quay-backup/operator-quay-config-yaml-backup.yaml | grep -i DB_URI
cat /tmp/quay-backup/operator-quay-config-yaml-backup.yaml | grep -i DB_URI
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
postgresql://QUAY_DATABASE_OWNER:PASSWORD@DATABASE_HOST/QUAY_DATABASE_NAME
postgresql://QUAY_DATABASE_OWNER:PASSWORD@DATABASE_HOST/QUAY_DATABASE_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在数据库 pod 中执行 shell:
oc exec -it quay-postgresql-database-pod -- /bin/bash
# oc exec -it quay-postgresql-database-pod -- /bin/bash
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入 psql :
bash-4.4$ psql
bash-4.4$ psql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 丢弃数据库:
postgres=# DROP DATABASE "example-restore-registry-quay-database";
postgres=# DROP DATABASE "example-restore-registry-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=# CREATE DATABASE "example-restore-registry-quay-database" OWNER "example-restore-registry-quay-database";
postgres=# CREATE DATABASE "example-restore-registry-quay-database" OWNER "example-restore-registry-quay-database";
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
CREATE DATABASE
CREATE DATABASE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 连接到数据库:
postgres=# \c "example-restore-registry-quay-database";
postgres=# \c "example-restore-registry-quay-database";
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
You are now connected to database "example-restore-registry-quay-database" as user "postgres".
You are now connected to database "example-restore-registry-quay-database" as user "postgres".
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为您的
Quay
数据库创建一个pg_trmg
扩展:example-restore-registry-quay-database=# create extension pg_trgm ;
example-restore-registry-quay-database=# create extension pg_trgm ;
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
CREATE EXTENSION
CREATE EXTENSION
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 部署设置密码:
bash-4.4$ psql -h localhost -d "QUAY_DATABASE_NAME" -U QUAY_DATABASE_OWNER -W < /var/lib/pgsql/data/userdata/quay-database-backup.sql
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 Copied! Toggle word wrap Toggle overflow 输出示例:
SET SET SET SET SET
SET SET SET SET SET
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 退出 bash 模式:
bash-4.4$ exit
bash-4.4$ exit
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为 Red Hat Quay Operator 创建新的配置捆绑包。
touch config-bundle.yaml
$ touch config-bundle.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在新的
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
$ cat /tmp/quay-backup/config.yaml | grep SECRET_KEY > /tmp/quay-backup/config-bundle.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您必须手动复制所有 LDAP、OIDC 和其他信息,并将其添加到 /tmp/quay-backup/config-bundle.yaml 文件中。
在 OpenShift 集群内创建配置捆绑包 secret:
oc create secret generic new-custom-config-bundle --from-file=config.yaml=/tmp/quay-backup/config-bundle.yaml
$ oc create secret generic new-custom-config-bundle --from-file=config.yaml=/tmp/quay-backup/config-bundle.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 扩展
Quay
pod:oc scale --replicas=1 deployment quayregistry-quay-app
$ oc scale --replicas=1 deployment quayregistry-quay-app deployment.apps/quayregistry-quay-app scaled
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 扩展镜像 pod:
oc scale --replicas=1 deployment quayregistry-quay-mirror
$ oc scale --replicas=1 deployment quayregistry-quay-mirror deployment.apps/quayregistry-quay-mirror scaled
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对
QuayRegistry
CRD 进行补丁,使其包含对新的自定义配置捆绑包的引用:oc patch quayregistry QUAY_REGISTRY_NAME --type=merge -p '{"spec":{"configBundleSecret":"new-custom-config-bundle"}}'
$ oc patch quayregistry QUAY_REGISTRY_NAME --type=merge -p '{"spec":{"configBundleSecret":"new-custom-config-bundle"}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果 Red Hat Quay 返回
500
内部服务器错误,您可能需要将DISTRIBUTED_STORAGE_CONFIG
的位置
更新为默认值
。在
/.aws/
目录中创建一个新的 AWScredentials.yaml
,并包含 Operator 创建的config.yaml
文件中的access_key
和secret_key
:touch credentials.yaml
$ touch credentials.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow grep -i DISTRIBUTED_STORAGE_CONFIG -A10 /tmp/quay-backup/operator-quay-config-yaml-backup.yaml
$ grep -i DISTRIBUTED_STORAGE_CONFIG -A10 /tmp/quay-backup/operator-quay-config-yaml-backup.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat > ~/.aws/credentials << EOF [default] aws_access_key_id = ACCESS_KEY_FROM_QUAY_CONFIG aws_secret_access_key = SECRET_KEY_FROM_QUAY_CONFIG EOF
$ 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 Copied! Toggle word wrap Toggle overflow 注意如果
aws cli
没有从'~/.aws/credentials 文件
自动收集access_key
和secret_key
,您可以通过运行aws 配置并手动输入凭证来配置
它们。记录 NooBaa 的公开可用端点:
oc get route s3 -n openshift-storage -o yaml -o jsonpath="{.spec.host}{'\n'}"
$ oc get route s3 -n openshift-storage -o yaml -o jsonpath="{.spec.host}{'\n'}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将备份数据同步到 NooBaa 后端存储:
aws s3 sync --no-verify-ssl --endpoint-url https://NOOBAA_PUBLIC_S3_ROUTE /tmp/quay-backup/bucket-backup/* s3://QUAY_DATASTORE_BUCKET_NAME
$ 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 Copied! Toggle word wrap Toggle overflow 将 Operator 扩展至 1 个 pod:
oc scale –replicas=1 deployment quay-operator.v3.6.4 -n openshift-operators
$ oc scale –replicas=1 deployment quay-operator.v3.6.4 -n openshift-operators
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Operator 使用所提供的自定义配置捆绑包,并协调所有 secret 和部署。OpenShift Container Platform 上新的 Red Hat Quay 部署应包含旧部署具有的所有信息。您应能够拉取所有镜像。