Velero

Velero の AWS オブジェクトストアプロバイダーを使い、Kubernetes クラスターのリソースを RustFS にバックアップします。

このガイドでは、Kubernetes のバックアップおよび復元ツールである Velero を、オブジェクトストレージのバックエンドとして RustFS に接続します。Kubernetes クラスターに Velero をインストールして RustFS のバックアップロケーションを設定し、クラスターリソースをバックアップして削除し、バケットから復元して、復元されたオブジェクトを確認します。この流れは、k3s(Kubernetes 1.30)上の Velero CLI 1.16.2 と velero-plugin-for-aws:v1.12.2、および rustfs/rustfs-x86-musl:v2.3.1 で検証済みです。

kubectl でアクセスできる Kubernetes クラスターと、Velero CLI が必要です。このガイドは統合テストを目的としており、本番向けではありません。

アーキテクチャ

Velero は、Kubernetes リソースと(任意で)Pod のボリュームデータを、バケット内の backups/<name>/ 配下にある gzip アーカイブへシリアライズします。復元ではそれらのアーカイブをダウンロードし、クラスター内にリソースを再作成します。

バックアップバケットを作成する

専用バケットを作成します。Velero はバケットを作成しません。

rc alias set rustfs http://<your-rustfs-endpoint>:9000 <your-access-key> <your-secret-key>
rc mb rustfs/velero-backups

Velero をインストールする

認証情報をファイルに書き込み、Velero サーバーをインストールします。s3Url は、クラスターの Pod 自身から到達できるエンドポイントである必要があります。ノードの IP または内部アドレスを使います。作業用マシンからのポートフォワードは使えません。

cat > velero-creds <<EOF
[default]
aws_access_key_id=<your-access-key>
aws_secret_access_key=<your-secret-key>
EOF

kubectl create namespace velero
kubectl create secret generic cloud-credentials \
  --namespace velero --from-file=cloud=velero-creds

velero install \
  --provider aws \
  --plugins velero/velero-plugin-for-aws:v1.12.2 \
  --bucket velero-backups \
  --backup-location-config region=us-east-1,s3ForcePathStyle="true",s3Url=http://<your-rustfs-endpoint>:9000 \
  --secret-file velero-creds \
  --use-volume-snapshots=false

デプロイが準備完了になり、バックアップロケーションが Available になるまで待ちます。

kubectl -n velero get pods
velero backup-location get
NAME      PROVIDER   BUCKET/PREFIX    PHASE      LAST VALIDATED   ACCESS MODE   DEFAULT
default   aws        velero-backups   Available  2026-09-22 ...   ReadWrite     true

クラスターリソースをバックアップする

デモ用リソースを 2 つ作成し、default 名前空間全体をバックアップします。

kubectl create configmap demo-cm --from-literal=key=rustfs-velero-demo
kubectl create deployment nginx --image=nginx:1.27

velero backup create demo-backup --wait
velero backup get

バックアップは、リソースのアーカイブとログを RustFS にアップロードします。

RustFS でバックアップを確認する

バケットを一覧表示します。

rc ls rustfs/velero-backups/ -r

バックアップアーカイブ一式は、backups/ プレフィックス配下に保存されます。

backups/demo-backup/demo-backup-resources.json.gz
backups/demo-backup/demo-backup-logs.gz
backups/demo-backup/demo-backup-itemoperations.json.gz

RustFS Console に保存された Velero のバックアップ

復元して確認する

デモ用リソースを削除し、バックアップから復元します。復元は RustFS からアーカイブを読み取り、リソースを再作成します。

kubectl delete configmap demo-cm
kubectl delete deployment nginx

velero restore create --from-backup demo-backup --wait

リソースが元の内容で戻っていることを確認します。

kubectl get configmap demo-cm -o jsonpath="{.data.key}"
kubectl get deployment nginx
rustfs-velero-demo
NAME    READY   UP-TO-DATE   AVAILABLE   AGE
nginx   1/1     1            1           10s

停止またはリセット

バックアップは velero-backups バケットに残り、同じバケットを対象に Velero を実行する任意のクラスターへ復元できます。RustFS からデモ用バックアップを削除するには、次を実行します。

velero backup delete demo-backup --confirm
rc rm rustfs/velero-backups/backups/ --recursive --force

トラブルシューティング

バックアップロケーションが Unavailable のままになる

Velero の Pod が s3Url に到達できません。Docker のカスタムブリッジネットワーク上のエンドポイントは、Kubernetes の Pod からルーティングできません。Docker ホストのブリッジ IP(シングルホストのクラスターでは例として http://172.17.0.1:9000 )、またはノードのアドレスを使います。ロケーションをパッチし、Velero に再検証させます。

kubectl -n velero patch backupstoragelocation default --type merge -p \
  '{"spec":{"config":{"s3Url":"http://172.17.0.1:9000"}}}'

daemonset エラーでバックアップが PartiallyFailed になる

エラー daemonset pod not found in running state は、Pod ボリュームのバックアップに使う node-agent Pod が実行中でなかったことを意味します。クラスターリソースのアーカイブには影響しません。エージェントの起動を待つか、エージェントが実行中の場合にのみ --default-volumes-to-fs-backup を維持します。

インストール直後の FailedValidation

最初のバックアップ試行は、まだ検証されていないロケーションに対して実行されます。バックアップを作成する前に、velero backup-location get が Available を報告するまで待ちます。

次のステップ

On this page