Rancher

Rancherのバックアップとリストア

Rancherでは、ユーザー資格証明やクラスタ資格証明などの多数の構成がConfigMapおよびネームスペース値として保持されます。rancher-backupオペレータは、Rancherのインストール、構成、およびデータをシームレスにバックアップおよびリストアする方法を提供します。

rancher-backupオペレータの前提条件

Rancherのバックアップまたはリストア操作に進む前に、次の詳細が役立ちます:

  • オブジェクト・ストアのバケット名。
    • Amazon S3互換のオブジェクト・ストレージ・バケット。これには、Oracle Cloudテナンシの任意のコンパートメント内のOracle Cloud Object Storageバケットを使用できます。
      • 参照できるように、バケット名とテナンシ名を書き留めておきます。
      • オブジェクト・ストレージを使用したバケットの作成の詳細は、「バケットの管理」を参照してください。
    • プライベート・クラウド、エンタープライズ・ネットワークまたはエアギャップ環境では、MinIOまたは同等のオブジェクト・ストア・ソリューションを使用できます。
  • オブジェクト・ストアの接頭辞名。これは、バックアップ・コンポーネントによって作成されるバケット内の子フォルダになります。
  • オブジェクト・ストアのリージョン名。
  • オブジェクト・ストアの署名キー。
    • Amazon S3互換オブジェクト・ストアの認証に必要な署名キー。これはアクセス・キー/秘密キーのペアです。
    • Oracle Cloud Infrastructureでは、ユーザーまたは管理者が顧客秘密キーを作成します。
      • 関連するアクセス・キーが秘密キーに対して生成されます。
      • 顧客秘密キーを作成するには、顧客秘密キーに関する項を参照してください。

Rancherをバックアップまたはリストアするには、最初にrancherBackupを有効にする必要があります。

  1. 次の構成は、rancherBackupを有効にする方法を示しています。

    $ kubectl apply -f -<<EOF
     apiVersion: install.verrazzano.io/v1beta1
      kind: Verrazzano
     metadata:
        name: example-verrazzano
      spec:
       profile: dev
        components:    
         rancherBackup:
            enabled: true
    EOF
    

  2. rancher-backupの場合、ポッドはcattle-resources-systemネームスペースに作成されます。

      # Sample of pods running after enabling the rancherBackup component
    
      $ kubectl get pod -n cattle-resources-system
      NAME                              READY   STATUS    RESTARTS   AGE
      rancher-backup-5c4b985697-xw7md   1/1     Running   0          2d4h
    

  3. Rancherでは、S3互換オブジェクト・ストアと通信するためにシークレットが必要です。そのため、ネームスペースverrazzano-backupにKubernetesシークレットrancher-backup-credsを作成します。

     $ kubectl create secret generic -n <backup-namespace> <secret-name> --from-literal=accessKey=<accesskey> --from-literal=secretKey=<secretKey>
    

    次に、例を示します。

     $ kubectl create secret generic -n verrazzano-backup rancher-backup-creds --from-literal=accessKey="s5VLpXwa0xNZQds4UTVV" --from-literal=secretKey="nFFpvyxpQvb0dIQovsl0"
    

Rancherバックアップ

rancher-backupオペレータは、*.tar.gz形式のバックアップ・ファイルをS3互換オブジェクト・ストアに作成します。

  1. Rancherバックアップを開始するには、Amazon S3互換オブジェクト・ストアをバック・エンドとして使用する、次のサンプル・カスタム・リソースYAMLファイルを作成します。オペレータは、credentialSecretNamespace値を使用して、Amazon S3バックアップ・シークレットを探す場所を決定します。
     $ kubectl apply -f - <<EOF
       apiVersion: resources.cattle.io/v1
       kind: Backup
       metadata:
         name: <rancher-backup-name>
       spec:
         storageLocation:
           s3:
             credentialSecretName: <rancher backup credential name>
             credentialSecretNamespace: <namespace where credential object was created>
             bucketName: <object store bucket. This must be exist as noted in pre-requisites section>
             folder: <folder name. This folder will be auto created>
             region: <region name where bucket exists>
             endpoint: <object store endpoint configuration>
         resourceSetName: rancher-resource-set
    EOF
    

ノート: 前提条件に関する項の例のステップ3で、verrazzano-backupネームスペースにシークレットを作成しました。

次に、例を示します。

 $ kubectl apply -f - <<EOF
   apiVersion: resources.cattle.io/v1
   kind: Backup
   metadata:
     name: rancher-backup-test
   spec:
      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
     resourceSetName: rancher-resource-set
EOF

*.tar.gzファイルは、storageLocationフィールドで構成された場所に格納されます。バックアップが完了すると、rancher-backupオペレータはS3互換オブジェクト・ストアにファイルを作成します。

  1. 次のように、バックアップされたファイル名を取得できます:
     $ kubectl get backups.resources.cattle.io rancher-backup-test
       NAME                 LOCATION   TYPE       LATEST-BACKUP                                                                     RESOURCESET            AGE   STATUS
       rancher-backup-test             One-time   rancher-615034-957d182d-44cb-4b81-bbe0-466900049124-2022-11-14T16-42-28Z.tar.gz   rancher-resource-set   54s   Completed
    

Rancherスケジュール済バックアップ

スケジュール済のRancherバックアップを実装するには、Rancherのドキュメントの「Backup Configuration」を参照してください。

Rancherリストア

リストア操作中に、RancherはRancherおよび構成に関連するすべてのCRDを再作成することを確認します。Rancherのリストアは、リストア・プロセスを開始することをrancherBackupに示すカスタム・リソースを作成することで実行されます。

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

     $ kubectl apply -f - <<EOF
       apiVersion: resources.cattle.io/v1
       kind: Restore
       metadata:
         name: s3-restore
       spec:
         backupFilename: rancher-615034-957d182d-44cb-4b81-bbe0-466900049124-2022-11-14T16-42-28Z.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
    EOF
    
    rancher-backupオペレータは、リストア操作中にRancherデプロイメントをスケール・ダウンし、リストア完了後にスケール・アップします。

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

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

    ノート: backupFilenameは、以前に作成したRancherバックアップから取得されます。

  2. すべてのRancherポッドがRUNNING状態になるまで待ちます。

    $ kubectl wait -n cattle-system --for=condition=ready pod -l app=rancher --timeout=600s
      pod/rancher-69976cffc6-bbx4p condition met
      pod/rancher-69976cffc6-fr75t condition met
      pod/rancher-69976cffc6-pcdf2 condition met