17.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 を使用します。

  1. Red Hat Quay Operator をスケールダウンします。

    $ oc scale --replicas=0 deployment quay-operator.v3.6.2 -n openshift-operators
  2. アプリケーションをスケールダウンし、デプロイメントをミラーリングします。

    $ oc scale --replicas=0 deployment QUAY_MAIN_APP_DEPLOYMENT QUAY_MIRROR_DEPLOYMENT
  3. データベース 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
  4. オペレーターが作成した 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
  5. データベース Pod 内でシェルを実行します。

    # oc exec -it quay-postgresql-database-pod -- /bin/bash
  6. psql を入力します。

    bash-4.4$ psql
  7. データベースを削除します。

    postgres=# DROP DATABASE "example-restore-registry-quay-database";

    出力例:

    DROP DATABASE
  8. 新しいデータベースを作成し、所有者を同じ名前に設定します。

    postgres=# CREATE DATABASE "example-restore-registry-quay-database" OWNER "example-restore-registry-quay-database";

    出力例:

    CREATE DATABASE
  9. データベースに接続します。

    postgres=# \c "example-restore-registry-quay-database";

    出力例:

    You are now connected to database "example-restore-registry-quay-database" as user "postgres".
  10. Quay データベースの pg_trmg エクステンションを作成します。

    example-restore-registry-quay-database=# create extension pg_trgm ;

    出力例:

    CREATE EXTENSION
  11. postgres CLI を終了して bash-4.4 を再入力します。

    \q
  12. 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
  13. bash モードを終了します。

    bash-4.4$ exit
  14. Red Hat Quay Operator の新規設定バンドルを作成します。

    $ touch config-bundle.yaml
  15. 新規の config-bundle.yaml で、LDAP 設定、キー、古いレジストリーのその他の変更など、レジストリーに必要なすべての情報を含めます。以下のコマンドを実行して secret_keyconfig-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 ファイルに追加する必要があります。

  16. OpenShift クラスター内に設定バンドルシークレットを作成します。

    $ oc create secret generic new-custom-config-bundle --from-file=config.yaml=/tmp/quay-backup/config-bundle.yaml
  17. Quay Pod をスケールアップします。

    $ oc scale --replicas=1 deployment quayregistry-quay-app
    deployment.apps/quayregistry-quay-app scaled
  18. ミラー Pod をスケールアップします。

    $ oc scale --replicas=1  deployment quayregistry-quay-mirror
    deployment.apps/quayregistry-quay-mirror scaled
  19. QuayRegistry CRD にパッチを適用し、新規カスタム設定バンドルへの参照が含まれるようにします。

    $ oc patch quayregistry QUAY_REGISTRY_NAME --type=merge -p '{"spec":{"configBundleSecret":"new-custom-config-bundle"}}'
    注記

    Red Hat Quay が内部サーバーエラー 500 を返した場合、DISTRIBUTED_STORAGE_CONFIGlocationdefault に更新する必要がある場合があります。

  20. /.aws/ ディレクトリーに新しい AWScredentials.yaml を作成し、Operator が作成した config.yaml ファイルから access_keysecret_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 を実行して手動でクレデンシャルを入力することで、それを設定できます。

  21. NooBaa の公開されているエンドポイントを記録します。

    $ oc get route s3 -n openshift-storage -o yaml -o jsonpath="{.spec.host}{'\n'}"
  22. バックアップデータを NooBaa バックエンドストレージに同期します。

    $ aws s3 sync --no-verify-ssl --endpoint-url https://NOOBAA_PUBLIC_S3_ROUTE /tmp/quay-backup/bucket-backup/* s3://QUAY_DATASTORE_BUCKET_NAME
  23. Operator のバックアップを最大 1 Pod にスケールアップします。

    $ oc scale –replicas=1 deployment quay-operator.v3.6.4 -n openshift-operators

Operator は、指定されたカスタム設定バンドルを使用して、すべてのシークレットとデプロイメントを調整します。OpenShift Container Platform 上の新しい Red Hat Quay デプロイメントには、古いデプロイメントに含まれていたすべての情報が含まれています。すべてのイメージを取得できるはずです。