Veeam Kastenを利用する
本ドキュメントでは、Veeam Kastenを利用したRKEクラスターからRKE2クラスターへの移行方法について説明します。
はじめに
Veeam Kastenは、Veeam Softwareが提供するKubernetesネイティブのバックアップソリューションです。 取得したバックアップは、別のクラスターへのリストア(クラスター間移行)もサポートします。
Veeam Kastenを利用したRKE1クラスターからRKE2クラスターへの移行方法を説明します。
免責事項
- Veeam KastenはVeeam Softwareが提供するソフトウェアであり、IDCフロンティアが提供するものではありません。
- Veeam Kastenのライセンス提供およびご質問や技術的なサポートはIDCフロンティアのサポート対象外となりますので、あらかじめご了承ください。
- 本ドキュメントに記載された内容についても、IDCフロンティアのサポート対象外となります。
- 有償ライセンス/サポートが必要な場合は、Veeam Softwareへ直接お問い合わせいただくようお願いいたします。
- 本ドキュメントはIDCフロンティアが独自に作成したものであり、Veeam Softwareとは一切関係がございません。Veeam Softwareへの本ドキュメントの内容に関するお問い合わせはご遠慮ください。
前提条件
- クラスター種別が「IDCFクラウド」
- 永続ボリュームを利用している場合
- Container Storage Interfaceとして「IDCFクラウド」を利用
- StorageClassとして
cloudstack-xfs
、cloudstack-ext4
を利用
IDCFクラウド コンテナでの制限事項
- Veeam Kastenは、
Kind: PersistentVolume
のバックアップにKind: VolumeSnapshot
を使用しますが、ボリュームサイズが大きい場合、VolumeSnapshotの取得に時間がかかり、失敗とみなされる場合があります。 - VolumeSnapshotの取得に失敗した場合、リトライ処理により複数回のVolumeSnapshotが作成されることがあります。基本的に自動削除されますが、残存していないかを確認し、必要に応じて削除してください。また、コンピュート側のスナップショットも残存する可能性があるため、必要に応じて削除してください。
事前準備
クラウドストレージの準備
Veeam Kastenを利用したクラスター間移行では、RKE1クラスターのバックアップを保存するためのクラウドストレージなどの外部ストレージが必要です。
ここでは、IDCFクラウドのクラウドストレージを利用する場合を想定します。
クラウドストレージの有効化・バケット作成
「クラウドストレージ ご利用ガイド - クラウドストレージ申し込みからオブジェクトアップロードまでの流れ」の手順をご確認いただき、クラウドストレージの有効化およびVeeam Kastenがバックアップを保存するためのバケットの作成を行います。
Veeam Kastenの設定時に、作成したバケット名およびバケットのロケーション名が必要となります。
GCPプロジェクトIDの確認
IDCFクラウドコンソールの アカウント設定
> 連携アカウント
にアクセスし、GCPプロジェクトIDを確認します。
GCPプロジェクトIDは、Veeam Kastenの設定時に必要となります。
GCPサービスアカウントの準備
Veeam Kastenを利用したクラウドストレージへのアクセスには、「ストレージ管理者」の役割を設定したGCPサービスアカウントが必要となります。
「FAQ - サービスアカウントの使用方法について教えてください。」 の手順をご確認いただき、サービスアカウントを作成します。
作成時にJSON形式のキーファイルがダウンロードされます。このキーファイルはVeeam Kastenの設定時に利用します。
VolumeSnapshotClass の設定
Veaam Kastenは Kind: VolumeSnapshot
を利用します。
事前に、VolumeSnapshotClassのAnnotaionに k10.kasten.io/is-snapshot-class: 'true'
を設定する必要があります。
IDCFクラウドコンテナコンソールを利用してVolumeSnapshotClassのAnnotationを設定する
コンテナコンソールの画面右上にある検索アイコン(リソースの検索)をクリックします。

表示された検索フィールドに「VolumeSnapshotClasses」と入力し、検索結果から「VolumeSnapshotClasses」を選択します。

名前が cloudstack-snapshotter
の行にある右側のメニューから、「YAML を編集 (Edit YAML)」を選択し、以下のようにAnnotationを追加します。
# cloudstack-snapshotter の抜粋
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotClass
driver: volume.cloudstack.idcfcloud.com
deletionPolicy: Delete
annotations:
k10.kasten.io/is-snapshot-class: 'true'

- 実際には、上記Annotationが設定された
kind: VolumeSnapshotClass
のコピーが作成され、deletionPolicy: Retain
が設定された状態で利用されます。 deletionPolicy: Retain
が設定されているため、スナップショットが残ります。必要に応じて削除してください。削除する場合は、コンピュート側のスナップショットの削除も行ってください。- 詳細は、Veeam Kastenのドキュメント「Installing Veeam Kasten / Storage Integration - VolumeSnapshotClass Configuration」をご確認ください。
Veeam Kastenのインストール
IDCFクラウドコンテナコンソールからVeeam Kastenをインストールする手順を説明します。
- インストール要件は、Veeam Kastenのドキュメント「Installing Veeam Kasten」をご確認ください。
- デフォルト設定でインストールした場合、PersistentVolumeとして20GiB x 3、8GiB、2GiBのボリュームが作成されます(インストールするバージョンによって異なる可能性があります)。
- インストールは、RKE1クラスターとRKE2クラスターの両クラスターで実施してください。インストール方法は両クラスターともに共通です。
レポジトリの設定
Veeam Kastenは、Helm Chart Repository
を提供しています。
Helm Chart Repository
を登録することで、IDCFクラウドコンテナコンソールからVeeam Kastenをインストールできます。
IDCFクラウドコンテナコンソールの アプリ (Apps)
> Repository
からレポジトリを設定します。
以下の内容を入力し、作成します。
- 名前(Name):
kasten
- Target
- Helmによって生成されたインデックスへのhttp(s) URL (http(s) URL to an index generated by Helm) :
チェックする
- インデックスURL (index URL):
https://charts.kasten.io/
- 認証 (Authentication):
なし (None)
- Helmによって生成されたインデックスへのhttp(s) URL (http(s) URL to an index generated by Helm) :


Veeam Kasten Chartのインストール
Helm Chart Repository
の登録後、IDCFクラウドコンテナコンソールの アプリ (Apps)
> Chart
からVeeam Kastenのインストールが可能になります。
Chart一覧から「k10」を選択します。

「インストール(Install)」を選択し、次に進みます。

「インストール: ステップ1(Install: Step1)」では、以下の内容を入力し「次へ(Next)」を選択します。
- Namespace
- 新しいNamespaceを作成:
kasten-io
- 新しいNamespaceを作成:
- 名前(Name):
k10

「インストール: ステップ2(Install: Step2)」では、インストールの詳細設定が可能です。基本的には変更せずに「インストール(Install)」を実行して問題ありません。
詳細な設定を行いたい場合は、Veeam Kastenのドキュメント「Installing Veeam Kasten - Complete List of Veeam Kasten Helm Options」をご確認ください。
「インストール(Install)」を選択することで、インストールが開始します。

コンソール上で SUCCESS
と表示され、アプリ (Apps)
> Installed App
から k10
がインストールされていることを確認できます。

Veeam Kastenで利用される用語
その他の用語については、Veeam Kastenのドキュメントをご確認ください。
用語 | |
---|---|
Snapshot | - バックアップに相当します。 - Snapshotの基本的な単位はNamespaceになります。(Filter ResourcesでInclude/Excludeを設定可能。) - Namespaceに属さないリソースはCluster Resource(Non Namespaced Resource)として扱われます。 |
Export | - Snapshotしたデータを外部ストレージ(クラウドストレージ等)に書き出すことです。 |
Import | - ExportされたデータをVeeam Kastenに取り込むことです。 - RKE1クラスターでExportし、RKE2クラスターでImportを行います。 |
Restore | - Snapshotを復元します。 |
Veeam KastenのUIへアクセスする
Veeam Kastenには、WebベースのUIが提供されています。以下の手順でアクセスしてください。
IDCFクラウドコンテナコンソールの画面右上にある「Project/Namespace」選択メニューを開き、表示されたリストから「kasten-io」を選択する。

サービスディスカバリ(Service Discovery)
> Service
を開き、一覧から「名前(Name): gateway」の「Target: http
」をクリックします。

別ウィンドウが開きます。URLの末尾に「/k10/
」を追加してアクセスしてください。
※次のようなアドレスになります。
https://container.idcfcloud.com/k8s/clusters/[Cluster ID]/api/v1/namespaces/kasten-io/services/http:gateway:80/proxy/k10/

Veeam Kastenの初期設定
KASTEN END USER LICENSE AGREEMENT
Veeam KastenのUIへ初めてアクセスすると、利用許諾契約(KASTEN END USER LICENSE AGREEMENT)への同意画面が表示されます。 内容をご確認の上、「Company」「E-Mail」を入力し、「Accept」をクリックしてください。

Location Profileの設定
Location Profileから、外部ストレージの定義を行います。クラスター間の移行にはLocation Profileの設定が必須です。
- RKE1/RKE2の両クラスターで同じ設定を行ってください。
左側のメニュー Profiles
> Location
から「Create New Profile」をクリックして、以下の設定を行ってください。設定内容は 「事前準備 - クラウドストレージの準備」を参照してください。ここでは、IDCFクラウドのクラウドストレージを利用する場合を想定しています。

Location Profile Name
および Storage Provider
を設定し、「Next」をクリックします。
- Location Profile Name:
idcfcloud
- Storage Provider:
Google Cloud Storage

クラウドストレージの情報を設定し、「Next」をクリックします。確認画面が表示されるので、設定内容を確認の上「Submit」をクリックします。
- Storage Provider:
Google Cloud Storage
- GCP Project ID:
事前準備で確認したGCPプロジェクトID
- GCP Service Key:
事前準備で取得したJSON形式のキーファイルの内容
- Location:
事前準備でバケット作成時に指定したロケーション (事前作成したバケットと同じロケーションを選択する必要があります。)
- Bucket:
事前準備で作成したバケット名
- GCP Project ID:
Snapshotの設定
Snapshotを実行する方法は複数ありますが、ここではオンデマンドで実行可能な Policy
を作成します。
- Snapshotの設定は、RKE1クラスターで行います。
- これらの設定では、PersistentVolumeのSnapshotも作成されます。したがって、取得したSnapshotをRestoreすることでデータの移行も可能です。ただし、「はじめに - IDCFクラウド コンテナでの制限事項」に記載されている制限があるため、必要に応じて「リソースのフィルタリング」をご確認の上、バックアップ対象のフィルタリングを行ってください。
左側のメニューから「Policies」を選択し、「Create New Policy」をクリックして、以下の設定を行ってください。

- Name:
任意の名前
- Action:
Snapshot

- Backup Frequency:
On Demand
- Enable Backups via Snapshot Exports:
オン
- Snapshot取得後にImportを自動的に実行します。
- Export Location Profile:
idcfcloud

- Select Applications
- 以下が選択可能です。基本的には、
By Name
を選択してアプリケーションが利用しているNamespaceを直接指定することをおすすめします。- By Name:
Snapshotを取得するNamespaceを直接指定します。
- 必ずアプリケーションが利用しているNamespaceを選択してください。システムが利用しているNamespaceを別クラスターにRestoreしてしまうとシステムが壊れる可能性があります。
- By Labels:
LabelからNamespaceを指定する。
- ワークロードのLabelを指定した場合、Labelにマッチするワークロードが属するNamespaceが選択されます(LabelにマッチするワークロードのみがSnapshot対象になるわけではありません)。
- None:
Cluster-Scoped REesouces(Namespaceに属さないResource)のみを対象にSnapshotを取得する場合に選択します。
- By Name:
- 以下が選択可能です。基本的には、
- Select Application Resources:
All Resources
All Resources
ではNamespace内の全リソースをSnapshot対象にします。- Snapshotの最小単位はNamespaceになりますが、「Filter Resources」でフィルタリングが可能です。
- Snapshot Cluster-Scoped Resources:
All Cluster-Scoped Resources
- `Cluster-Scoped Resources(Namespaceに属さないResource)も同時にSnapshotを取得します。
Addvanced Settingsは基本的に設定不要です。必要に応じてVeeam Kastenのドキュメントをご確認ください。

リソースのフィルタリング
前述の設定例では、Select Application Resources: All Resources
を選択し、Namespace内の全てのリソースをSnapshotの対象としています。しかし、「はじめに - IDCFクラウド コンテナでの制限事項」に記載のとおり、大きなボリュームを持つリソースの場合にSnapshotが失敗する可能性があります。
その場合、Select Application ResourcesでFilter Resourcesを設定し、Kind: PersistentVolumeClaim
を除外してください。手順は以下の通りです。
- Select Applications Resources:
Filter Resources
- Exclude Filters:
Add Filters
から除外するリソースを指定します。- Resource:
persistentVolumeClaims
- Name:
除外するPersistentVolumeClaimの名前を指定
- Resource:
- Exclude Filters:
- 必要に応じて複数のExclude Filtersを設定してください。
- 本設定を行った場合
Kind: PersistentVolumeClaim
のSnapshotは実行されませんので、別の方法でKind: PersistentVolumeClaim
をバックアップしてください。また、データの移行も別途行う必要があります。
Snapshotの実行
以下の手順で、作成したオンデマンド実行可能なSnapshotのPolicyを実行します。
左側のメニューから「Policies」を選択し、作成したPolicyを確認します。

実行したいPolicyの「run once」ボタンをクリックします。

確認画面が表示されるので、「Yes, Continue」をクリックすると、即時実行されます。

実行の経過/結果は、左側のメニューにある「Dashboard」の「Actions」から確認できます。
- Snapshotが成功しない限り、Exportは実行されません。
- 「はじめに - IDCFクラウド コンテナでの制限事項」に記載のとおり、大きなボリュームを持つリソースの場合、Snapshotが失敗することがあります。失敗した場合、VolumeSnapshotがエラー状態で残る可能性があります。また、コンピュート側のスナップショットも残る可能性があります。必要に応じて削除してください。
Import/Restoreの設定
ImportとRestoreを実行する方法は複数ありますが、ここではオンデマンドで実行可能な Policy
を作成します。
- Import/Restoreの設定は、RKE2クラスターで行います。
- Restoreを実行するには、事前にExportを行う必要があります。
- Policyの設定で、Import後に自動的にRestoreを実行するように設定可能です。
- ImportのPolicy設定で、Restore After Importオプションを有効にします。
左側のメニューから「Policies」を選択し、「Create New Policy」をクリックして、以下の設定を行ってください。

- Name:
任意の名前
- Action:
Import

- Restore After Import:
オン
(この設定をオンにすることでImport後にRestoreがそのまま実行されます。)- Data-Only Restore:
チェックしない
- Don’t wait for workloads to be ready:
チェック
- ワークロードが立ち上がるのを待たずにRestoreが進むようになります。
- Restore cluster-scoped resources:
チェック
Cluster-Scoped Resources(Namespaceに属さないResource)
もRestoreします。
- Apply transforms to restored resources:
オフ
- Select Application Resources:
All Resources
- Pre and Post-Restore Action Hooks:
すべてチェックしない
- Data-Only Restore:
- Import Frequency:
On Demand
- Config Data for Import:
RKE1で作成したSnapshotのImport用コンフィグデータ
(確認方法は後述します。) - Profile for Import:
idcfcloud
- Advanced Settings:
すべてオフ

Import用コンフィグデータ確認方法
Import/Restore用Policy設定時に必要となるコンフィグデータの確認方法を説明します。
RKE1クラスターのVeeam KastenのUIにアクセスします。左側のメニューから「Policies」を選択し、Snapshotを取得したPolicyの「Show import details…」をクリックします。

「Copy to Clipboard」をクリックし、コピーされたデータを Config Data for Import
に指定します。

Import/Restoreの実行
以下の手順で、オンデマンド実行可能なImport/RestoreのPolicyを実行します。
左側のメニューから「Policies」を選択し、作成したPolicyを確認します。

実行したいPolicyの「run once」ボタンをクリックします。

確認画面が表示されるので、「Yes, Continue」をクリックすると、即時実行されます。

実行の経過/結果は、左側のメニューにある「Dashboard」の「Actions」から確認できます。