11.2. Red Hat Quay の復元
この手順は、Red Hat Quay Operator がデータベースを管理する際に Red Hat Quay を復元するために使用されます。これは、Quay レジストリーのバックアップが実行された後に実行する必要があります。
前提条件
- 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): 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.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Quay、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 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>
$ 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 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、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 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>
$ 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