7.3. Red Hat Quay の復元
Red Hat Quay オペレーターがデータベースを管理している場合は、次の手順を使用して Red Hat Quay を復元します。これは、Red Hat Quay レジストリーをバックアップした後に実行する必要があります。詳細は、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 v3.7 以降)。 - OpenShift Container Platform クラスターのターゲット namespace で、Red Hat Quay Operator に管理される Red Hat Quay デプロイメントを実行していない。
デプロイメントに部分的に管理されていないデータベースまたはストレージコンポーネントが含まれ、PostgreSQL または S3 互換オブジェクトストレージの外部サービスを使用している場合、Red Hat Quay デプロイメントを実行するには、サービスプロバイダーまたはベンダーのドキュメントを参照して、Red Hat Quay を復元する前にバックアップからデータを復元してください。
7.3.1. バックアップからの Red Hat Quay およびその設定の復元
Red Hat Quay とその設定ファイルをバックアップから復元するには、次の手順を実行します。
これらの手順では、Red Hat Quay のバックアップ ガイドのプロセスに従い、同じ名前のバックアップファイルを作成していることを前提としています。
手順
次のコマンドを入力して、バックアップされた Red Hat Quay 設定を復元します。
$ oc create -f ./config-bundle.yaml
重要エラー
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
で再作成する必要があります。次のコマンドを入力して、生成されたキーをバックアップから復元します。
$ oc create -f ./managed-secret-keys.yaml
QuayRegistry
カスタムリソースを復元します。$ oc create -f ./quay-registry.yaml
Red Hat Quay デプロイメントのステータスを確認し、これが利用可能になるまで待機します。
$ oc wait quayregistry registry --for=condition=Available=true -n <quay-namespace>
7.3.2. Red Hat Quay デプロイメントのスケールダウン
Red Hat Quay デプロイメントをスケールダウンするには、次の手順を実行します。
手順
Red Hat Quay デプロイメントのバージョンに応じて、次のいずれかのオプションを使用してデプロイメントをスケールダウンします。
Operator バージョン 3.7 以降: Red Hat Quay の自動スケーリングを無効にし、Red Hat Quay、ミラーワーカー、および Clair (マネージドの場合) のレプリカ数をオーバーライドすることで Quay デプロイメントを縮小します。
QuayRegistry
リソースは、以下のようになります。apiVersion: quay.redhat.com/v1 kind: QuayRegistry metadata: name: registry namespace: ns spec: components: … - kind: horizontalpodautoscaler managed: false 1 - kind: quay managed: true overrides: 2 replicas: 0 - kind: clair managed: true overrides: replicas: 0 - kind: mirror managed: true overrides: replicas: 0 …
Operator バージョン 3.6 以前: まず Red Hat Quay レジストリーをスケールダウンしてからマネージドの 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>
registry-quay-app
、registry-quay-mirror
、およびregistry-clair-app
Pod (どのコンポーネントを Red Hat Quay Operator がマネージするように設定したかにより異なります) が非表示になるまで待機します。以下のコマンドを実行してステータスを確認できます。$ oc get pods -n <quay-namespace>
出力例:
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
7.3.3. Red Hat Quay データベースの復元
Red Hat Quay データベースを復元するには、次の手順を実行します。
手順
次のコマンドを入力して、
Quay
データベース Pod を識別します。$ oc get pod -l quay-component=postgres -n <quay-namespace> -o jsonpath='{.items[0].metadata.name}'
出力例:
quayregistry-quay-database-59f54bb7-58xs7
ローカル環境および Pod にコピーして、バックアップをアップロードします。
$ oc cp ./backup.sql -n <quay-namespace> registry-quay-database-66969cd859-n2ssm:/tmp/backup.sql
次のコマンドを入力して、データベースへのリモートターミナルを開きます。
$ oc rsh -n <quay-namespace> registry-quay-database-66969cd859-n2ssm
次のコマンドを実行して psql を入力します。
bash-4.4$ psql
以下のコマンドを実行してデータベースをリスト表示できます。
postgres=# \l
出力例
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 |
次のコマンドを入力してデータベースを削除します。
postgres=# DROP DATABASE "quayregistry-quay-database";
出力例
DROP DATABASE
postgres CLI を終了して bash-4.4 を再入力します。
\q
PostgreSQL データベースをバックアップデータベースにリダイレクトします。
sh-4.4$ psql < /tmp/backup.sql
次のコマンドを入力して bash を終了します。
sh-4.4$ exit
7.3.4. Red Hat Quay オブジェクトストレージデータの復元
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)
次のコマンドを入力して、
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)
以下のコマンドを実行して、すべての 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}')
7.3.5. Red Hat Quay デプロイメントのスケールアップ
Red Hat Quay デプロイメントのバージョンに応じて、次のいずれかのオプションを使用してデプロイメントをスケールアップします。
Operator バージョン 3.7 以降: 自動スケーリングを再度有効にし、必要な場合は Quay、ミラーワーカー、および Clair のレプリカオーバーライドを適宜削除して、Red Hat Quay デプロイメントをスケールアップします。
QuayRegistry
リソースは、以下のようになります。apiVersion: quay.redhat.com/v1 kind: QuayRegistry metadata: name: registry namespace: ns spec: components: … - kind: horizontalpodautoscaler managed: true 1 - kind: quay 2 managed: true - kind: clair managed: true - kind: mirror managed: true …
Operator バージョン 3.6 以前の場合: Red Hat Quay レジストリーを再度スケールアップして、Red Hat Quay デプロイメントをスケールアップします。
$ oc scale --replicas=1 deployment $(oc get deployment -n <quay-operator-namespace> | awk '/^quay-operator/ {print $1}') -n <quay-operator-namespace>
Red Hat Quay デプロイメントのステータスを確認します。
$ oc wait quayregistry registry --for=condition=Available=true -n <quay-namespace>
出力例:
apiVersion: quay.redhat.com/v1 kind: QuayRegistry metadata: ... name: registry namespace: <quay-namespace> ... spec: ... status: - lastTransitionTime: '2022-06-20T05:31:17Z' lastUpdateTime: '2022-06-20T17:31:13Z' message: All components reporting as healthy reason: HealthChecksPassing status: 'True' type: Available