検索

第11章 OpenShift Container Platform デプロイメントでの Red Hat Quay のバックアップおよび復元

download PDF

このセクションの内容を使用して、OpenShift Container Platform デプロイメントで Red Hat Quay をバックアップおよび復元します。

11.1. Red Hat Quay のバックアップ

この手順は、OpenShift Container Platform および NooBaa デプロイメント専用です。

前提条件

  • OpenShift Container Platform での Red Hat Quay デプロイメント。

手順

  1. QuayRegistry カスタムリソースをエクスポートしてバックアップします。

    $ oc get quayregistry <quay-registry-name> -n <quay-namespace> -o yaml > quay-registry.yaml
  2. 作成される quayregistry.yaml を編集し、ステータスセクションおよび以下のメタデータフィールドを削除します。

      metadata.creationTimestamp
      metadata.finalizers
      metadata.generation
      metadata.resourceVersion
      metadata.uid
  3. 管理対象キーシークレットをバックアップします。

    注記

    Red Hat Quay 3.7.0 より前のバージョンを実行している場合は、この手順を省略できます。一部のシークレットは Quay の初回デプロイ時に自動的に生成されます。これらは QuayRegistry namespace の <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
  4. 作成される managed-secret-keys.yaml ファイルを編集し、すべての所有者の参照を削除します。managed-secret-keys.yaml ファイルは、以下のようになります。

    apiVersion: v1
    kind: Secret
    type: Opaque
    metadata:
      name: <quayname>-quay-registry-managed-secret-keys
      namespace: <quay-namespace>
    data:
      CONFIG_EDITOR_PW: <redacted>
      DATABASE_SECRET_KEY: <redacted>
      DB_ROOT_PW: <redacted>
      DB_URI: <redacted>
      SECRET_KEY: <redacted>
      SECURITY_SCANNER_V4_PSK: <redacted>

    data プロパティーの情報はすべて同じままにする必要があります。

  5. 現在の 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
  6. Quay Pod 内にマウントされた /conf/stack/config.yaml ファイルをバックアップします。

    $ oc exec -it quay-pod-name -- cat /conf/stack/config.yaml > quay-config.yaml
  7. Quay、Quay Operator をスケールダウンします。

    $  oc scale --replicas=0 deployment $(oc get deployment -n <quay-operator-namespace> |awk '/^quay-operator/ {print $1}') -n <quay-operator-namespace>
  8. 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>
  9. registry-quay-app Pod が消えるのを待ちます。以下のコマンドを実行してステータスを確認できます。

    $ 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-mirror-758fc68ff7-5wxlp          1/1     Running            0          8m29s
    registry-quay-mirror-758fc68ff7-lbl82          1/1     Running            0          8m29s
    registry-quay-redis-7cc5f6c977-956g8           1/1     Running            0          5d21h
  10. Quay PostgreSQL Pod 名を特定します。

    $ oc get pod -l quay-component=postgres -n <quay-namespace> -o jsonpath='{.items[0].metadata.name}'

    テスト出力:

quayregistry-quay-database-59f54bb7-58xs7
  1. 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
  2. バックアップデータベースをダウンロードします。

    $ oc exec quayregistry-quay-database-59f54bb7-58xs7 -- /usr/bin/pg_dump -C quayregistry-quay-database  > backup.sql
  3. 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)
  4. 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)
  5. 新しいディレクトリーを作成し、すべての 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
注記

AWS コマンドラインユーティリティーの代わりに、rclone または sc3md を使用することもできます。

  1. Quay、Quay Operator をスケールアップします。

    $  oc scale --replicas=1 deployment $(oc get deployment -n <quay-operator-namespace> |awk '/^quay-operator/ {print $1}') -n <quay-operator-namespace>
  2. 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>
  3. Operator のステータスを確認します。

    $ oc get quayregistry <quay-registry-name> -n <quay-namespace> -o yaml

    出力例:

    apiVersion: quay.redhat.com/v1
    kind: QuayRegistry
    metadata:
      ...
      name: example-registry
      namespace: <quay-namespace>
      ...
    spec:
      components:
      - kind: quay
        managed: true
      ...
      - kind: clairpostgres
        managed: true
      configBundleSecret: init-config-bundle-secret
    status:
      configEditorCredentialsSecret: example-registry-quay-config-editor-credentials-fg2gdgtm24
      configEditorEndpoint: https://example-registry-quay-config-editor-quay-enterprise.apps.docs.gcp.quaydev.org
      currentVersion: 3.7.0
      lastUpdated: 2022-05-11 13:28:38.199476938 +0000 UTC
      registryEndpoint: https://example-registry-quay-quay-enterprise.apps.docs.gcp.quaydev.org
         0          5d21h
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.