Tanzu Mission ControlにはData Protectionという機能がある。これを使うと、クラスタに勝手にVeleroをインストールしてくれて、バックアップもWebUIからポチポチ押すだけで取れてしまう。
Veleroはとかくインストールが面倒だったり、バックアップの設定もコマンドで実行しなくてはならずユーザフレンドリーとは疎遠のツールなので、Kubernetesのバックアップの敷居を下げたい人には有効な機能といえる。
これを利用した時のメモ。公式ドキュメントはこちら。
前提条件
S3互換ストレージを用意しておく。ここではMinIOを利用する。
MinIOの構築方法については以前こちらの記事に書いている。
また、MinIOのテナント上にバケットも作成しておくこと。
Data Protection機能の有効化
機能を有効化する前にバックアップの保存先となるターゲットの場所と認証情報を作成する。
今回は以前作成したMinIOにバックアップを取得する。作成するCredentialとしてAWS S3 or S3-compatible
を選択し、Access key idとSecret access keyにMinIOのテナントのものを入力する。
次に、Administration
からTarget locations
を選択し、AWS S3 or S3-compatible
を選択する。
すると、Credential, Configure, Assign Clusters, Name and createについて設定が促されるので、以下のように設定していく。
- Credential
-
Account credential
:先程作成したMinIOのCredentialを選択
-
- Configure
-
AWS S3 or S3-compatible URL
:MinIOのテナントのURL -
Bucket
:MinIOのテナント内に作成しているBucket名 -
Region
:minio
-
- Assign Clusters
- バケットを利用したいクラスタ or クラスタグループを選択
- Name and create
-
Name
:最大63文字で小文字、数字、ハイフンからなり、始まりと終わりは小文字と数字のいずれか
-
Target Locationの作成が終わったらData Protectionを有効化する。
Clusters
からData Protectionを有効にしたいクラスタを選択し、Overview
の右下にあるData protection
のENABLE DATA PROTECTION
のリンクをクリックする。
すると、Veleroをインストールする旨が表示されるのでENABLE
をクリックする。
有効化が完了すると、Veleroがresticプラグインとともにインストールされている状態となる。
$ kubectl get pod -n velero
NAME READY STATUS RESTARTS AGE
restic-8ghkj 1/1 Running 0 124m
restic-wvd8x 1/1 Running 0 124m
velero-7fdc5bff66-drf5r 1/1 Running 0 125m
余談だが、vSphere環境でもvShere pluginがインストールされないのは、マルチクラウドを意識してのことだと考えられる(resticならどこのクラウドでもリストアできるため)。
バックアップの取得
次にバックアップを取得する。
Data Protectionを有効化したクラスタを選択し、Data protection
からCREATE BACKUP
を選択する。
すると、What to backup、Where to store the backup、When to backup、Back up retention、Name and createについて入力を促される
What to backup
バックアップ対象を聞かれる。選択肢は、
-
Back up the entire cluster, <クラスタ名>
:クラスタ全体 -
Back up selected namespaces
:チェックボックスで選択したNamespace -
Back up resource using a label selector
:ラベルが一致したリソース
となっている。ここではクラスタ全体をバックアップする。
また、Advanced Optionでは以下が選択できる。
-
Exclude resources (optional)
:除外するリソース -
Exclude namespaces (optional)
:除外するNamespace -
Include cluster-scoped resources
:クラスタスコープのリソースを含むかどうか
※クラスタスコープのリソース:kubectl api-resources
でNAMESPACEDがFalseのリソース
今回は特に変更せずに進める。
Where to store the backup
バックアップ先を指定する。All locations
とCurrently available location
があるが、前者は全てのTarget locationを対象にするのに対して、後者はStatusがAvailableのもののみを対象にする。
All location
を選択し、Target location
では先程作成したLocationを選択する。
なお、選択後にVIEW DETAILS
をクリックすることで、Availableになっているかも確認できるので、気になるなら確認しておくとよい。
When to backup
バックアップを取るタイミングを今、1時間毎、1日毎、1週毎、1月毎、カスタムで選択できる。カスタムの場合はCRON形式で指定する。
ここではNOW
を選択する。
Back up retention
バックアップの保持期間(自動で削除されるまでの期間)を指定する。デフォルトでは30日となっている。
ここではデフォルトのまま進む。
なお、選択できるのは1日〜365日となっている。Velero CLIで実行する場合は365日以上も指定可能なので、無制限に保持したい、もしくは手動でのみ削除したい人はVelero CLIを使った方が良さそう。
Name and create
バックアップ名を指定する。リストアの時に名前を指定して利用する。
全て入力してCREATEを選択するとバックアップが始まり、しばらくすると以下のようにCompletedが表示される。
バックアップ名をクリックするとバックアップした対象の情報が一部表示される。デフォルトでは以下のNamespaceは自動で除外される模様。
- kube-system
- tanzu-system
- tkg-system
- velero
- vmware-system-csi
- vmware-system-tmc
なお、バックアップしたものの詳細はWebUIからは確認できないため、取得したものの詳細が見たい場合はVelero CLIから確認するとよい。以下のような感じでリソースの一覧も確認できる。
$ velero describe backup <バックアップ名> --details
:(省略)
Total items to be backed up: 851
Items backed up: 851
Resource List:
admissionregistration.k8s.io/v1/MutatingWebhookConfiguration:
- cert-manager-webhook
- crdmutator.antrea.io
- crdmutator.antrea.tanzu.vmware.com
:(省略)