はじめに
本記事では、OpenShift上のアプリケーションをOpenShift API for Data Protection (OADP) によりバックアップする際、特定のPVを除外してバックアップする機能を検証します。
目次
検証環境
以下のように、OpenShiftのアプリケーションを外部のオブジェクトストレージにバックアップできる環境に対して、OADPの機能検証を行います。
本検証では、クラスタを構成する全てのノードをIBM Powerサーバ (ppc64le) のLPARに構築しています。OpenShiftの永続ストレージはIBM Storage Scale、オブジェクトストレージはMinIOを使用しています。
CNSAによりOpenShiftからIBM Storage Scaleを永続ストレージとして使用するための環境構築手順はこちらの記事、OADPによりアプリケーションをオブジェクトストレージにバックアップする環境構築手順はこちらの記事をご参照ください。
前提条件
以下の作業が完了していることを想定しています。
- OpenShiftクラスタが構築済み
- ストレージ側のScaleクラスタが構築済み
- ストレージ側のScaleクラスタにファイルシステムが作成済み
- ストレージ側のScaleクラスタ内のnsd nodeにScale GUIを構成済み
- OpenShiftクラスタにCNSAをインストール・構成済み
- OADPがインストール・構成済み
OADPで特定のPVをexcludeしてバックアップ
bastion nodeへSSHログインします。
# ssh root@<BASTION_NODE>
動作確認用にプロジェクトを作成します。
# oc new-project test1
プロジェクト内にPVCを作成します。(この例では、data1, data2, data3を作成しています)
# oc apply -f pvc_data1.yaml
persistentvolumeclaim/data1 created
# oc apply -f pvc_data2.yaml
persistentvolumeclaim/data2 created
# oc apply -f pvc_data3.yaml
persistentvolumeclaim/data3 created
プロジェクト内に上記PVを使用するPodを作成します。
# oc apply -f app.yaml
deployment.apps/test1-app created
3つのPVが正常に作成されたことを確認します。
# oc get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
data1 Bound pvc-09d20fad-2b3b-4b4d-9148-0bed3c5d9972 100Gi RWO ibm-spectrum-scale-csi-fileset 5d21h
data2 Bound pvc-f41d4ca9-efe8-42fc-81d5-1fcfe50284f0 200Gi RWO ibm-spectrum-scale-csi-fileset 6d17h
data3 Bound pvc-28fcadb2-f01a-4492-89c6-ad3f4feab96c 300Gi RWO ibm-spectrum-scale-csi-fileset 6d17h
3つのPVのうち、data2とdata3をバック対象から除外するように、exclude-from-backupラベルをPVCとPVに設定します。
# oc -n test1 label pvc/data2 velero.io/exclude-from-backup=true
persistentvolumeclaim/data2 labeled
# oc -n test1 label pv/pvc-f41d4ca9-efe8-42fc-81d5-1fcfe50284f0 velero.io/exclude-from-backup=true
persistentvolume/pvc-f41d4ca9-efe8-42fc-81d5-1fcfe50284f0 labeled
# oc -n test1 label pvc/data3 velero.io/exclude-from-backup=true
persistentvolumeclaim/data3 labeled
# oc -n test1 label pv/pvc-28fcadb2-f01a-4492-89c6-ad3f4feab96c velero.io/exclude-from-backup=true
persistentvolume/pvc-28fcadb2-f01a-4492-89c6-ad3f4feab96c labeled
動作確認用に作成したtest1というnamespaceに対して、バックアップを取得します。
# cat << EOF > backup_test1.yaml
apiVersion: velero.io/v1
kind: Backup
metadata:
name: backup-test-1
namespace: openshift-adp
spec:
storageLocation: default
includedNamespaces:
- test1
EOF
# oc apply -f backup_test1.yaml
backup.velero.io/backup-test-1 created
取得したsnapshotを確認します。
# oc get volumesnapshotcontents
NAME READYTOUSE RESTORESIZE DELETIONPOLICY DRIVER VOLUMESNAPSHOTCLASS VOLUMESNAPSHOT VOLUMESNAPSHOTNAMESPACE AGE
snapcontent-0fa20379-7bb4-443a-81ac-cf3b452c5c35 true 107374182400 Retain spectrumscale.csi.ibm.com ibm-spectrum-scale-snapshot-class velero-database-gzgwn test1 6d16h
Scaleクラスタのnsd nodeからsnapshotを確認します。 (Storage Scaleのmmlssnapshotコマンドの出力の中に、作成した3つのPVCが含まれるかを調べます)
# ssh <NSD_NDOE> "/usr/lpp/mmfs/bin/mmlssnapshot fs1 | grep -e pvc-09d20fad-2b3b-4b4d-9148-0bed3c5d9972 -e pvc-f41d4ca9-efe8-42fc-81d5-1fcfe50284f0 -e pvc-28fcadb2-f01a-4492-89c6-ad3f4feab96c"
snapshot-0fa20379-7bb4-443a-81ac-cf3b452c5c35 9 Valid Mon Jul 22 19:31:22 2024 Mon Jul 22 19:31:22 2024 pvc-09d20fad-2b3b-4b4d-9148-0bed3c5d9972
3つのPVのうち、2つのPVがバックアップ対象から除外され、data1 (pvc-09d20fad-2b3b-4b4d-9148-0bed3c5d9972) のみsnapshotが取得されています。
まとめ
OpenShift上のアプリケーションをOADPによりバックアップする際に、exclude-from-backupラベルを特定のPVC及びPVに設定することにより、バックアップ対象から除外されることを確認できました。