第16章 Red Hat Quay Operator によって管理される Red Hat Quay のバックアップおよび復元
OpenShift Container Platform の Red Hat Quay Operator で管理される場合は、このセクション内のコンテンツを使用して Red Hat Quay をバックアップおよび復元します。
16.1. Red Hat Quay のバックアップ リンクのコピーリンクがクリップボードにコピーされました!
この手順では、Red Hat Quay Operator を使用して OpenShift Container Platform にデプロイされた Red Hat Quay のバックアップを作成する方法を説明します。
前提条件
-
Red Hat Quay Operator を使用して、OpenShift Container Platform で正常に Red Hat Quay がデプロイメントされている (状況条件
Available
がtrue
に設定されている)。 -
コンポーネント
quay
、postgres
、およびobjectstorage
がmanaged: true
に設定されている。 -
コンポーネント
clair
がmanaged: true
に設定されていおり、コンポーネントclairpostgres
もmanaged: true
に設定されている (Red Hat Quay Operator v3.7 以降で開始)。
デプロイメントに部分的に管理されていないデータベースまたはストレージコンポーネントが含まれ、Postgres または S3 互換オブジェクトストレージの外部サービスを使用している場合に、Red Hat Quay デプロイメントを実行するには、サービスプロバイダーまたはベンダーのドキュメントを参照してデータのバックアップを作成してください。このガイドで説明されているツールは、外部 Postgres データベースまたはオブジェクトストレージのバックアップの開始点として参照できます。
16.1.1. Red Hat Quay 設定のバックアップ リンクのコピーリンクがクリップボードにコピーされました!
QuayRegistry
カスタムリソースをエクスポートしてバックアップします。oc get quayregistry <quay-registry-name> -n <quay-namespace> -o yaml > quay-registry.yaml
$ oc get quayregistry <quay-registry-name> -n <quay-namespace> -o yaml > quay-registry.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 作成される
quayregistry.yaml
を編集し、ステータスセクションおよび以下のメタデータフィールドを削除します。metadata.creationTimestamp metadata.finalizers metadata.generation metadata.resourceVersion metadata.uid
metadata.creationTimestamp metadata.finalizers metadata.generation metadata.resourceVersion metadata.uid
Copy to Clipboard Copied! Toggle word wrap Toggle overflow マネージドキーシークレットをバックアップします。
注記Red Hat Quay 3.7.0 より前のバージョンを実行している場合は、この手順を省略できます。一部のシークレットは Quay の初回デプロイ時に自動的に生成されます。これらは
QuayRegistry
リソースの名前空間で、<quay-registry-name>-quay-registry-managed-secret-keys
というシークレットに保存されます。oc get secret -n <quay-namespace> <quay-registry-name>-quay-registry-managed-secret-keys -o yaml > managed-secret-keys.yaml
$ oc get secret -n <quay-namespace> <quay-registry-name>-quay-registry-managed-secret-keys -o yaml > managed-secret-keys.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 作成された
managed-secret-keys.yaml
ファイルを編集し、エントリーmetadata.ownerReferences
を削除します。managed-secret-keys.yaml
ファイルは、以下のようになります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow data
プロパティーの情報はすべて同じままにする必要があります。現在の Quay 設定をバックアップします。
oc get secret -n <quay-namespace> $(oc get quayregistry <quay-registry-name> -n <quay-namespace> -o jsonpath='{.spec.configBundleSecret}') -o yaml > config-bundle.yaml
$ oc get secret -n <quay-namespace> $(oc get quayregistry <quay-registry-name> -n <quay-namespace> -o jsonpath='{.spec.configBundleSecret}') -o yaml > config-bundle.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Quay Pod 内にマウントされた
/conf/stack/config.yaml
ファイルをバックアップします。oc exec -it quay-pod-name -- cat /conf/stack/config.yaml > quay-config.yaml
$ oc exec -it quay-pod-name -- cat /conf/stack/config.yaml > quay-config.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
16.1.2. Red Hat Quay デプロイメントのスケールダウン リンクのコピーリンクがクリップボードにコピーされました!
この手順は、Red Hat Quay デプロイメントの状態の整合性のあるバックアップを作成するために必要になります。Postgres データベースや S3 互換オブジェクトストレージが外部サービスによって提供されるセットアップ (Operator のアンマネージド) を含め、この手順を省略しないでください。
Operator バージョン 3.7 以降: Red Hat Quay の自動スケーリングを無効にし、Red Hat Quay、ミラーワーカー、および Clair (マネージドの場合) のレプリカ数をオーバーライドすることで Red Hat Quay デプロイメントを縮小します。
QuayRegistry
リソースは、以下のようになります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Operator バージョン 3.6 以前: まず Red Hat Quay Operator をスケールダウンしてから、マネージド 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>
$ 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>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow registry-quay-app
、registry-quay-mirror
、およびregistry-clair-app
Pod (どのコンポーネントを Red Hat Quay Operator がマネージするように設定したかにより異なります) が非表示になるまで待機します。以下のコマンドを実行してステータスを確認できます。oc get pods -n <quay-namespace>
$ oc get pods -n <quay-namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
16.1.3. Red Hat Quay 管理対象データベースのバックアップ リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Quay デプロイメントが外部 (アンマネージド) Postgres データベースで設定されている場合は、これらのデータベースの一貫したバックアップを作成する方法についてベンダーのドキュメントを参照してください。
Quay PostgreSQL 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 Quay データベース名を取得します。
oc -n <quay-namespace> rsh $(oc get pod -l app=quay -o NAME -n <quay-namespace> |head -n 1) cat /conf/stack/config.yaml|awk -F"/" '/^DB_URI/ {print $4}' quayregistry-quay-database
$ oc -n <quay-namespace> rsh $(oc get pod -l app=quay -o NAME -n <quay-namespace> |head -n 1) cat /conf/stack/config.yaml|awk -F"/" '/^DB_URI/ {print $4}' quayregistry-quay-database
Copy to Clipboard Copied! Toggle word wrap Toggle overflow バックアップデータベースをダウンロードします。
oc exec quayregistry-quay-database-59f54bb7-58xs7 -- /usr/bin/pg_dump -C quayregistry-quay-database > backup.sql
$ oc exec quayregistry-quay-database-59f54bb7-58xs7 -- /usr/bin/pg_dump -C quayregistry-quay-database > backup.sql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
16.1.3.1. Red Hat Quay マネージドオブジェクトストレージのバックアップ リンクのコピーリンクがクリップボードにコピーされました!
このセクションの手順は、以下の設定に適用されます。
- スタンドアロンのマルチクラウドオブジェクトゲートウェイ設定
- OpenShift Data Foundations ストレージでは、Red Hat Quay Operator が ObjectStorageBucketClaim API 経由で S3 オブジェクトストレージバケットをプロビジョニングしている必要があります。
Red Hat Quay デプロイメントが外部 (管理対象外) オブジェクトストレージで設定されている場合は、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)
$ 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_ID
をデコードし、エクスポートします。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 をそのディレクトリーにコピーします。
mkdir blobs aws s3 sync --no-verify-ssl --endpoint https://$(oc get route s3 -n openshift-storage -o jsonpath='{.spec.host}') s3://$(oc get cm -l app=noobaa -n <quay-namespace> -o jsonpath='{.items[0].data.BUCKET_NAME}') ./blobs
$ mkdir blobs $ aws s3 sync --no-verify-ssl --endpoint https://$(oc get route s3 -n openshift-storage -o jsonpath='{.spec.host}') s3://$(oc get cm -l app=noobaa -n <quay-namespace> -o jsonpath='{.items[0].data.BUCKET_NAME}') ./blobs
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
16.1.4. Red Hat Quay デプロイメントのバックアップのスケーリング リンクのコピーリンクがクリップボードにコピーされました!
Operator バージョン 3.7 以降: 自動スケーリングを再度有効にし、必要な場合は Quay、ミラーワーカー、および Clair のレプリカオーバーライドを適宜削除して、Red Hat Quay デプロイメントをスケールアップします。
QuayRegistry
リソースは、以下のようになります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Operator バージョン 3.6 以前の場合: Red Hat Quay Operator を再度スケールアップして Red Hat Quay デプロイメントをスケールアップします。
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 Red Hat Quay デプロイメントのステータスを確認します。
oc wait quayregistry registry --for=condition=Available=true -n <quay-namespace>
$ oc wait quayregistry registry --for=condition=Available=true -n <quay-namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow