Velero Plugin for vSphere を使用して TKGS クラスタで実行されているワークロードをバックアップおよびリストアするには、このクラスタに Velero Plugin for vSphere をインストールします。

概要

Velero Plugin for vSphere は、TKGS クラスタのワークロードをバックアップおよびリストアするためのソリューションを提供します。パーシステント ワークロードの場合は、 Velero Plugin for vSphere でパーシステント ボリュームのスナップショットを作成できます。
注: バックアップおよびリストアする TKGS クラスタ ワークロードに可搬性が必要な場合は、 Velero Plugin for vSphere を使用しないでください。Kubernetes クラスタ間で可搬性を確保するには、スタンドアローン Velero と Restic を併用します。

前提条件:スーパーバイザー への Velero Plugin for vSphere のインストール

TKGS クラスタに Velero Plugin for vSphere をインストールするには、スーパーバイザーVelero Plugin for vSphere がインストールされている必要があります。また、スーパーバイザー に NSX ネットワークが構成されている必要があります。を参照してください。

手順 1:Linux Workstation への Velero CLI のインストール

Velero CLI は、Velero とのインターフェイスを提供する標準ツールです。Velero CLI は Velero Plugin for vSphere CLI (velero-vsphere) よりも高機能で、Tanzu Kubernetes クラスタ ワークロードのバックアップとリストアに必要です。

Linux ワークステーションに Velero CLI をインストールします。理想的なのは、このワークステーションが、vSphere IaaS control plane 環境に関連付けられた CLI(kubectlkubectl-vspherevelero-vsphere など)を実行するジャンプ ホストと同じであることです。

Velero バージョン番号は X.Y.Z として表されます。使用するバージョンについては、Velero 互換性マトリックスを参照し、コマンドの実行時に適宜置き換えてください。

次の手順を実行して、Velero CLI をインストールします。
  1. 次のコマンドを実行します。
    $ wget https://github.com/vmware-tanzu/velero/releases/download/vX.Y.Z/velero-vX.Y.Z-linux-amd64.tar.gz
    $ gzip -d velero-vX.Y.Z-linux-amd64.tar.gz && tar -xvf velero-vX.Y.Z-linux-amd64.tar
    $ export PATH="$(pwd)/velero-vX.Y.Z-linux-amd64:$PATH"
     
    $ which velero
    /root/velero-vX.Y.Z-linux-amd64/velero
  2. Velero CLI がインストールされていることを確認します。
    velero version
    
    Client:
        Version: vX.Y.Z

手順 2:S3 互換バケットの詳細の取得

便宜上、この手順では、スーパーバイザーVelero Plugin for vSphere をインストールするときに構成したのと同じ S3 互換オブジェクト ストアを使用していると仮定します。本番環境では、別のオブジェクト ストアを作成できます。

Velero Plugin for vSphere をインストールするには、S3 互換オブジェクト ストアに関する次の情報を指定する必要があります。
データ項目 値の例
s3Url

http://my-s3-store.example.com

aws_access_key_id ACCESS-KEY-ID-STRING
aws_secret_access_key SECRET-ACCESS-KEY-STRING
次の情報を使用して、 s3-credentials という名前のシークレット ファイルを作成します。このファイルは、 Velero Plugin for vSphere をインストールするときに参照します。
aws_access_key_id = ACCESS-KEY-ID-STRING
aws_secret_access_key = SECRET-ACCESS-KEY-STRING

手順 3(オプション A):ラベルを使用した TKG クラスタへの Velero Plugin for vSphere のインストール(新しい方法)

vSphere 8 Update 3 以降を使用している場合は、ラベルを追加して TKG クラスタに Velero Plugin for vSphere を自動的にインストールできます。
  1. バックアップ ストレージの場所にアクセス可能であることを確認します。
  2. Velero vSphere Operator Core スーパーバイザー サービス が有効になっていることを確認します。
    kubectl get ns | grep velero
    svc-velero-domain-c9                        Active   18d
  3. velero という名前の Kubernetes 名前空間が スーパーバイザー に作成されていることを確認します。
    kubectl get ns | grep velero
    svc-velero-domain-c9                        Active   18d
    velero                                      Active   1s
  4. Velero Plugin for vSphere スーパーバイザー サービススーパーバイザー で有効になっていることを確認します。
    velero version
    Client:
            Version: v1.11.1
            Git commit: bdbe7eb242b0f64d5b04a7fea86d1edbb3a3587c
    Server:
            Version: v1.11.1
    kubectl get veleroservice -A
    NAMESPACE   NAME      AGE
    velero      default   53m
    velero backup-location get
    NAME      PROVIDER   BUCKET/PREFIX   PHASE       LAST VALIDATED                  ACCESS MODE   DEFAULT
    default   aws        velero          Available   2023-11-20 14:10:57 -0800 PST   ReadWrite     true
  5. velero ラベルをクラスタに追加して、ターゲット TKG クラスタに対して Velero を有効にします。
    kubectl label cluster CLUSTER-NAME --namespace CLUSTER-NS velero.vsphere.vmware.com/enabled=true
    注: この作業は、クラスタのプロビジョニング時に vSphere 名前空間 から実行します。
  6. Velero がインストールされていること、およびクラスタの準備ができていることを確認します。
    kubectl get ns
    NAME                                 STATUS   AGE
    ...
    velero                               Active   2m    <--
    velero-vsphere-plugin-backupdriver   Active   2d23h
    kubectl get all -n velero
    NAME                                 READY   STATUS    RESTARTS   AGE
    pod/backup-driver-5945d6bcd4-gtw9d   1/1     Running   0          17h
    pod/velero-6b9b49449-pq6b4           1/1     Running   0          18h
    NAME                            READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/backup-driver   1/1     1            1           17h
    deployment.apps/velero          1/1     1            1           18h
    NAME                                       DESIRED   CURRENT   READY   AGE
    replicaset.apps/backup-driver-5945d6bcd4   1         1         1       17h
    replicaset.apps/velero-6b9b49449           1         1         1       18h
    velero version
    Client:
            Version: v1.11.1
            Git commit: bdbe7eb242b0f64d5b04a7fea86d1edbb3a3587c
    Server:
            Version: v1.11.1

手順 3(オプション B):手動による TKG クラスタへの Velero Plugin for vSphere のインストール(従来の方法)

Velero CLI を使用して、バックアップおよびリストアするターゲットの TKG クラスタに Velero Plugin for vSphere をインストールします。

Velero CLI コンテキストは、 kubectl コンテキストに自動的に従います。Velero CLI コマンドを実行してターゲット クラスタに Velero と Velero Plugin for vSphere をインストールする前に、 kubectl コンテキストをターゲット クラスタに設定してください。
  1. kubectl 向けの vSphere プラグイン を使用して、スーパーバイザー での認証を行います。
  2. kubectl コンテキストをターゲットの TKG クラスタに設定します。
    kubectl config use-context TARGET-TANZU-KUBERNETES-CLUSTER
  3. TKG クラスタで、Velero プラグイン velero-vsphere-plugin-config.yaml の構成マップを作成します。
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: velero-vsphere-plugin-config
    data:
      cluster_flavor: GUEST
    TKG クラスタに構成マップを適用します。
    kubectl apply -n <velero-namespace> -f velero-vsphere-plugin-config.yaml
    構成マップをインストールしなかった場合は、 Velero Plugin for vSphere をインストールするときに次のエラーが表示されます。
    Error received while retrieving cluster flavor from config, err: configmaps "velero-vsphere-plugin-config" not found
    Falling back to retrieving cluster flavor from vSphere CSI Driver Deployment
  4. 次の Velero CLI コマンドを実行して、ターゲット クラスタに Velero をインストールします。

    BUCKET-NAMEREGION(2 つのインスタンス)、および s3Url フィールドのプレースホルダ値を適切な値に置き換えます。前述のいずれかの手順に従わなかった場合は、シークレット ファイルの名前や場所、手動で作成した velero 名前空間の名前などの値を調整します。

    ./velero install --provider aws \
    --bucket BUCKET-NAME \
    --secret-file ./s3-credentials \
    --features=EnableVSphereItemActionPlugin \
    --plugins velero/velero-plugin-for-aws:vX.Y.Z \
    --snapshot-location-config region=REGION \
    --backup-location-config region=REGION,s3ForcePathStyle="true",s3Url=http://my-s3-store.example.com
  5. ターゲット クラスタに Velero Plugin for vSphere をインストールします。インストールされている Velero は Kubernetes API サーバと通信して、プラグインをインストールします。
    velero plugin add vsphereveleroplugin/velero-plugin-for-vsphere:vX.Y.Z

補足:TKG クラスタからの Velero Plugin for vSphere のアンインストール

次の手順を実行して、 Velero Plugin for vSphere をアンインストールします。
  1. kubectl コンテキストをターゲット Tanzu Kubernetes クラスタに設定します。
    kubectl config use-context TARGET-TANZU-KUBERNETES-CLUSTER
  2. プラグインをアンインストールするには、次のコマンドを実行して、Velero のデプロイから velero-plugin-for-vsphere の InitContainer を削除します。
    velero plugin remove vsphereveleroplugin/velero-plugin-for-vsphere:vX.Y.Z
  3. プロセスを完了するには、バックアップ ドライバのデプロイと関連する CRD を削除します。
    kubectl -n velero delete deployment.apps/backup-driver
    kubectl delete crds \
    backuprepositories.backupdriver.cnsdp.vmware.com \
    backuprepositoryclaims.backupdriver.cnsdp.vmware.com \
    clonefromsnapshots.backupdriver.cnsdp.vmware.com \
    deletesnapshots.backupdriver.cnsdp.vmware.com \
    snapshots.backupdriver.cnsdp.vmware.com
    kubectl delete crds uploads.datamover.cnsdp.vmware.com downloads.datamover.cnsdp.vmware.com