18.2. バックアップされたスタンドアロンコンテンツを使用した OpenShift Container Platform への移行
前提条件
-
スタンドアロン Red Hat Quay のデータ、Blob、データベース、および
config.yamlがバックアップされている。 - Red Hat Quay が、Red Hat Quay Operator を使用して OpenShift Container Platform にデプロイされている。
-
すべてのコンポーネントが
managedに設定されたQuayRegistry。
このドキュメントの手順では、quay-enterprise の namespace を使用します。
Red Hat Quay Operator をスケールダウンします。
$ oc scale --replicas=0 deployment quay-operator.v3.6.2 -n openshift-operatorsアプリケーションをスケールダウンし、デプロイメントをミラーリングします。
$ oc scale --replicas=0 deployment QUAY_MAIN_APP_DEPLOYMENT QUAY_MIRROR_DEPLOYMENTデータベース SQL バックアップを
QuayPostgreSQL データベースインスタンスにコピーします。$ oc cp /tmp/user/quay-backup/quay-database-backup.sql quay-enterprise/quayregistry-quay-database-54956cdd54-p7b2w:/var/lib/pgsql/data/userdataオペレーターが作成した
config.yamlファイルからデータベースパスワードを取得します。$ oc get deployment quay-quay-app -o json | jq '.spec.template.spec.volumes[].projected.sources' | grep -i config-secret出力例:
"name": "QUAY_CONFIG_SECRET_NAME"$ 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.yamlcat /tmp/quay-backup/operator-quay-config-yaml-backup.yaml | grep -i DB_URI出力例:
postgresql://QUAY_DATABASE_OWNER:PASSWORD@DATABASE_HOST/QUAY_DATABASE_NAMEデータベース Pod 内でシェルを実行します。
# oc exec -it quay-postgresql-database-pod -- /bin/bashpsql を入力します。
bash-4.4$ psqlデータベースを削除します。
postgres=# DROP DATABASE "example-restore-registry-quay-database";出力例:
DROP DATABASE新しいデータベースを作成し、所有者を同じ名前に設定します。
postgres=# CREATE DATABASE "example-restore-registry-quay-database" OWNER "example-restore-registry-quay-database";出力例:
CREATE DATABASEデータベースに接続します。
postgres=# \c "example-restore-registry-quay-database";出力例:
You are now connected to database "example-restore-registry-quay-database" as user "postgres".Quayデータベースのpg_trmgエクステンションを作成します。example-restore-registry-quay-database=# create extension pg_trgm ;出力例:
CREATE EXTENSIONpostgres CLI を終了して bash-4.4 を再入力します。
\qPostgreSQL デプロイメントのパスワードを設定します。
bash-4.4$ psql -h localhost -d "QUAY_DATABASE_NAME" -U QUAY_DATABASE_OWNER -W < /var/lib/pgsql/data/userdata/quay-database-backup.sql出力例:
SET SET SET SET SETbash モードを終了します。
bash-4.4$ exitRed Hat Quay Operator の新規設定バンドルを作成します。
$ touch config-bundle.yaml新規の
config-bundle.yamlで、LDAP 設定、キー、古いレジストリーのその他の変更など、レジストリーに必要なすべての情報を含めます。以下のコマンドを実行してsecret_keyをconfig-bundle.yamlに移動します。$ cat /tmp/quay-backup/config.yaml | grep SECRET_KEY > /tmp/quay-backup/config-bundle.yaml注記すべての LDAP、OIDC、およびその他の情報を手動でコピーし、それを /tmp/quay-backup/config-bundle.yaml ファイルに追加する必要があります。
OpenShift クラスター内に設定バンドルシークレットを作成します。
$ oc create secret generic new-custom-config-bundle --from-file=config.yaml=/tmp/quay-backup/config-bundle.yamlQuayPod をスケールアップします。$ oc scale --replicas=1 deployment quayregistry-quay-app deployment.apps/quayregistry-quay-app scaledミラー Pod をスケールアップします。
$ oc scale --replicas=1 deployment quayregistry-quay-mirror deployment.apps/quayregistry-quay-mirror scaledQuayRegistryCRD にパッチを適用し、新規カスタム設定バンドルへの参照が含まれるようにします。$ oc patch quayregistry QUAY_REGISTRY_NAME --type=merge -p '{"spec":{"configBundleSecret":"new-custom-config-bundle"}}'注記Red Hat Quay が内部サーバーエラー
500を返した場合、DISTRIBUTED_STORAGE_CONFIGのlocationをdefaultに更新する必要がある場合があります。/.aws/ディレクトリーに新しい AWScredentials.yamlを作成し、Operator が作成したconfig.yamlファイルからaccess_keyとsecret_keyを含めます。$ touch credentials.yaml$ grep -i DISTRIBUTED_STORAGE_CONFIG -A10 /tmp/quay-backup/operator-quay-config-yaml-backup.yaml$ cat > ~/.aws/credentials << EOF [default] aws_access_key_id = ACCESS_KEY_FROM_QUAY_CONFIG aws_secret_access_key = SECRET_KEY_FROM_QUAY_CONFIG EOF注記aws cliが`~/.aws/credentials fileファイルからaccess_keyおよびsecret_keyを自動的に収集しない場合、aws configureを実行して手動でクレデンシャルを入力することで、それを設定できます。NooBaa の公開されているエンドポイントを記録します。
$ oc get route s3 -n openshift-storage -o yaml -o jsonpath="{.spec.host}{'\n'}"バックアップデータを NooBaa バックエンドストレージに同期します。
$ aws s3 sync --no-verify-ssl --endpoint-url https://NOOBAA_PUBLIC_S3_ROUTE /tmp/quay-backup/bucket-backup/* s3://QUAY_DATASTORE_BUCKET_NAMEOperator のバックアップを最大 1 Pod にスケールアップします。
$ oc scale –replicas=1 deployment quay-operator.v3.6.4 -n openshift-operators
Operator は、指定されたカスタム設定バンドルを使用して、すべてのシークレットとデプロイメントを調整します。OpenShift Container Platform 上の新しい Red Hat Quay デプロイメントには、古いデプロイメントに含まれていたすべての情報が含まれています。すべてのイメージを取得できるはずです。