Rook/Cephの削除オペレーションの自動化

1 min read読了の目安(約1400字

本記事はRookと仲間たち、クラウドネイティブなストレージの Advent Calendar 2020 23日目の記事を後からこっそり埋めたものです。

RookはKubernetesのオペレータですので、生のCephを管理するときの"The 苦痛"と感じるようなめんどくさいことをたくさん自動化してくれます。

  • 新規クラスタの構築
  • バージョンアップ
  • 各種パラメタチューニング
  • OSDの追加

ところがオペレータの常ではありますが、Rook自身がサポートしておらず、ユーザが直接オペレータの管理対象であるCephのコマンドを叩かなければいけないこともまだまだあります。一番代表的な例はOSDの削除でした。OSDの削除はここに示すような面倒な手順をユーザが実行する必要がありました。

これは面倒だということで、現在は、ほとんどの処理はosd-purgeというJobリソースをapplyするだけでOSDを削除できるようになっています。

もともとRookは「ユーザのデータをどうするのかはユーザの責任なのでオペレータからは触らない、触るところはあえて自動化しない」というポリシーでしたが、最近は自分で何をしているかわかっている人には納得の上で様々な処理を自動化する手段を提供するようになっています。たとえば上述のosd-purgeジョブについても使用が強制されているわけではなく、任意です。

たとえばCephClusterカスタムリソース(CR)を削除するとOSDのデータを削除するcleanupPolicyという機能があるのですが、この機能はCephCluster CRの中のcleanupPolicyフィールドにyes-really-destroy-dataを設定したときのみ有効化されます。かつ、このフィールドを設定した後はCRに対するreconcileが動かないようになるという念の入れようです。データの削除には気を使いますね。

最後に一つ。Rookは今後も多くの機能を自動化できるよう開発が進むでしょう。たとえばOSDを削除するときはだいたい削除するだけではなく同時に追加することになるはずなので、筆者はOSDの置換を自動化する機能を追加するつもりです。それ以外にもmon quorumを失ったときの復旧についても可能な限り人間がやらなくてはいけないことを減らしていくつもりです。Rookの今後にご期待ください。