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 バックアップを
Quay
PostgreSQL データベースインスタンスにコピーします。$ 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.yaml
cat /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/bash
psql を入力します。
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 EXTENSION
postgres CLI を終了して bash-4.4 を再入力します。
\q
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
出力例:
SET SET SET SET SET
bash モードを終了します。
bash-4.4$ exit
Red 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.yaml
Quay
Pod をスケールアップします。$ 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 scaled
QuayRegistry
CRD にパッチを適用し、新規カスタム設定バンドルへの参照が含まれるようにします。$ 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_NAME
Operator のバックアップを最大 1 Pod にスケールアップします。
$ oc scale –replicas=1 deployment quay-operator.v3.6.4 -n openshift-operators
Operator は、指定されたカスタム設定バンドルを使用して、すべてのシークレットとデプロイメントを調整します。OpenShift Container Platform 上の新しい Red Hat Quay デプロイメントには、古いデプロイメントに含まれていたすべての情報が含まれています。すべてのイメージを取得できるはずです。