ストレージオーケストレーター Rook戦記 水天のOADP(OpenShift API for Data Protection)

f:id:ututaq:20201219071643p:plain

この記事はRookと仲間たち、クラウドネイティブなストレージの Advent Calendar 2020 18日目の記事です。

こんにちは。レッドハットでストレージを中心にクラウドインフラを生業にしている宇都宮です。
今日はOpenShiftにおけるバックアップについてお話ししたいと思います。

OpenShiftのバックアップ

言うまでもなくOpenShiftはImmutableなプラットフォームです。
ですから従来のいわゆるシステムバックアップに相当することはあまり行わないと思います。
Master etcdのバックアップや各種Cluster ResourceのYAMLファイルを別のところに取っておいてもまあ損はないですよ、くらいでしょう。

しかしStatefulアプリケーションで使われるデータは、ガシガシ上書きされますし失くなったらそれっきりです。つまりPersistent Volumeのバックアップはした方がいいです。

PVのバックアップはどうすればよいのでしょうか。 docs.openshift.com には etcd のバックアップ/リストアについては書かれていますが、PVのバックアップについては全く記載がありません。だから何かしらユーザー側で取る方法を考えなくてはなりません。

PVはとどのつまりブロックデバイスなりファイルシステムなりなので、ストレージシステムのSnapshotを使ったり、横から覗いて吸い上げれば簡単にできそうに思えます。しかし、人手と時間をかけず、Consistentなデータをバックアップ/リストアする、これが意外と難しかったりします。

それを手助けするのが、OADPです。

OADP: OpenShift API for Data Protection

OADPはOpenShiftにおけるData ProtectionのためのAPIです。(そのまんま)
APIもありますが、中ではVeleroが含まれている、というかVeleroをインストールして設定します。Veleroについてはこちらの坂下さんのblogがわかりやすいかと思います。

Kubernetesのリソース・PersistentVolumeをバックアップするVeleroの検証 - Qiita

ちなみにOADPのupstreamはKonveyorの中で開発されています。Konveyorではcraneやforkliftなど他にも面白いソフトウェアが開発されているので一見の価値ありです。 github.com

OADPのアーキテクチャ

OADPはOpenShiftクラスターやNamespace単位でCluster ResorceとPVのバックアップをしてくれます。それだけでなくInternalなcontainer imageもバックアップします。

OADPは単にVeleroが入っているだけでなく、YAMLやimageを引っこ抜くためのPluginが含まれていたりします。

f:id:ututaq:20201219071515p:plain

またOADPの特徴の一つは、OpenShiftクラスターの外部にバックアップするために、3rd partyのバックアップソフトウェアと連携する用意があることです。
具体的に言えば"Data Mover"というコンポーネントが、Veleroで取ったVolume Snapshotを見ながら外部バックアップできるようにしてくれます。 OADPで用意するのはData MoverのControllerだけで、実際にやるにはバックアップソフトウェアのData Mover pluginが必要となります。
pluginはバックアップソフトウェアベンダーさんが開発・提供しますので、どのバックアップソフトウェアが対応するかの情報は別途公開されると思います。

f:id:ututaq:20201219073237p:plain

OADPを使ったOCSのCSI Snapshot

昨日リリースされた最新のOCS(OpenShift Container Storage) 4.6において、Red HatはCSI Snapshotをサポートするようになりました。

OADP FAQ - Red Hat Customer Portal

OADPは初期リリースがVelero 1.4以上なので、最初からCSI Snapshotに対応しています。
そのためOADPでOCSのCSI Snapshotを取ることができます。下の動画でAnnetteがデモをしてくれているのでご覧下さい。(デモは25:00あたりから)

https://www.youtube.com/watch?v=OcIZ3SfHyFY&feature=emb_logo


OpenShift API Data Protection OADP with Ceph CSI Annette Clewett Red Hat OpenShift Commons Briefing

まとめ

今回はOADPについて話しました。
Veleroがバックアップ先のオブジェクトストレージとしてMinIOが使われてちゃったりすのですが、OADPはNooBaaを設定することができます。
OCSはNooBaaを含んでいるので、OCSで本番のPVとバックアップ(Snapshotとオブジェクトストレージ)を持つことができます。

とは言えやはりバックアップは本番と違う場所に取りたいという方も多いと思います。これはOADP対応したバックアップソフトウェアが対応しているかがポイントになるので、また情報が入りましたら連絡したいと思います。

というわけで、今回はここまで。

* 各記事は著者の見解によるものでありその所属組織を代表する公式なものではありません。その内容については非公式見解を含みます。