リストア

コンポーネント固有の永続データおよび構成のリストア

続行する前に、ここに示すように、バックアップ・コンポーネントの前提条件が満たされていることを確認してください。また、このドキュメントでは、こちらで説明しているように、以前にVeleroまたはrancher-backupを使用してバックアップが正常に作成されていることを前提としています。

コンポーネント固有の次の手順を使用してアプリケーション・データを復元します:

Rancherリストア

Rancherリストアを開始するには、次のサンプル・カスタム・リソースYAMLファイルを作成します。Restoreカスタム・リソースが作成されると、オペレータが、指定されたバックアップ*.tar.gzファイルにアクセスし、そのファイルからアプリケーション・データをリストアします。

apiVersion: resources.cattle.io/v1
kind: Restore
metadata:
  name: s3-restore
spec:
  backupFilename: rancher-backup-test-1111111-2222-3333-2022-07-26T02-44-21Z.tar.gz
  storageLocation:
    s3:
      credentialSecretName: rancher-backup-creds
      credentialSecretNamespace: verrazzano-backup
      bucketName: myvz-bucket
      folder: rancher-backup
      region: us-phoenix-1
      endpoint: mytenancy.compat.objectstorage.us-phoenix-1.oraclecloud.com

rancher-backupオペレータは、リストア操作中にRancherデプロイメントをスケール・ダウンし、リストア完了後にスケール・アップします。

リソースは次の順序でリストアされます:

  • カスタム・リソース定義(CRD)
  • クラスタスコープのリソース
  • ネームスペース・リソース

OpenSearchリストア

OpenSearchの場合は、Verrazzanoによってカスタム・フックが用意されており、それをVeleroで使用してリストア操作を実行できます。OpenSearchによって処理される一時データの性質のため、フックがOpenSearchスナップショットAPIを起動して、データ・ストリームを適切にバックアップおよびリストアします。したがって、データの損失がなくなり、データ破損も回避されます。

OpenSearchリストアを開始するには、最初に、システムで実行されている既存のOpenSearchクラスタおよびすべての関連データを削除します。

  • Verrazzanoモニタリング・オペレータをスケール・ダウンします。
$ kubectl scale deploy -n verrazzano-system verrazzano-monitoring-operator --replicas=0
  • 次に、OpenSearchコンポーネントをクリーン・アップします。
# These are sample commands to demonstrate the OpenSearch restore process

$ kubectl delete sts -n verrazzano-system -l verrazzano-component=opensearch
$ kubectl delete deploy -n verrazzano-system -l verrazzano-component=opensearch
$ kubectl delete pvc -n verrazzano-system  -l verrazzano-component=opensearch

OpenSearchリストアを実行するために、次のVelero Restore APIオブジェクトの例を呼び出すことができます。

apiVersion: velero.io/v1
kind: Restore
metadata:
  name: verrazzano-opensearch-restore
  namespace: verrazzano-backup
spec:
  backupName: verrazzano-opensearch-backup
  includedNamespaces:
    - verrazzano-system
  labelSelector:
    matchLabels:
      verrazzano-component: opensearch
  restorePVs: false
  hooks:
    resources:
      - name: opensearch-test
        includedNamespaces:
          - verrazzano-system       
        labelSelector:
          matchLabels:            
            statefulset.kubernetes.io/pod-name: vmi-system-es-master-0
        postHooks:
          - exec:
              container: es-master
              command:
                - /usr/share/opensearch/bin/verrazzano-backup-hook
                - -operation
                - restore
                - -velero-backup-name
                - verrazzano-opensearch-backup
              waitTimeout: 30m
              execTimeout: 30m
              onError: Fail

前述の例では、既存のバックアップからOpenSearchクラスタをリストアします。

  • 新しいOpenSearchクラスタを(新しい索引を付けて)再作成します。
  • postHookは、スナップショット・データをリストアするOpenSearch APIを呼び出します。
  • フックを実行する必要があるコンテナは、ポッド・ラベル・セレクタの後にコンテナ名を指定することで識別されます。このケースでは、statefulset.kubernetes.io/pod-name: vmi-system-es-master-0です。

ノート: フックは、Kubernetesオブジェクトのリストア後に適用する必要があるため、postHookである必要があります。

リストア操作が処理された後で、velero restore logsコマンドを使用してフック・ログを確認できます。また、フック・ログはポッドの/tmpフォルダに格納されます。

OpenSearchリストア・ログ
# To display the logs from the restore, run the following command
$ kubectl logs -n verrazzano-backup -l app.kubernetes.io/name=velero

# Fetch the log file name as shown
$ kubectl exec -it vmi-system-es-master-0 -n verrazzano-system -- ls -al /tmp | grep verrazzano-restore-hook | tail -n 1 | awk '{print $NF}'

# To examine the hook logs, exec into the pod as shown, and use the file name retrieved previously
$ kubectl exec -it vmi-system-es-master-0 -n verrazzano-system -- cat /tmp/<log-file-name>