Slide 1

Slide 1 text

GitHub-hosted Runnerで そこまでやるの!? ~ Rookの場合 ~ Oct. 6th, 2022 sat@サイボウズ データストアチーム 1

Slide 2

Slide 2 text

はじめに ▌Rookとは ⚫オープンソースの分散ストレージCephのオーケストレータ ⚫Kubernetes上のオペレータとして動作する ⚫Cloud Native Computing Foundation(CNCF)のgraduated プロジェクト ▌はなすこと ⚫RookをGitHub-hosted runner(後述)上でテストするための課 題と解決方法 2

Slide 3

Slide 3 text

前提知識

Slide 4

Slide 4 text

Cephのアーキテクチャ 4 アプリ ストレージプール Cephクラスタ node disk disk node disk disk node disk disk … ブロックデバイス オブジェクト ブロックデバイス ブロックストレージ オブジェクト ファイルシステム アプリ アプリ ブロックデバイス ブロックデバイス オブジェクトストレージ OSD OSD OSD OSD OSD OSD

Slide 5

Slide 5 text

RookのCI ▌全PRに対してGitHub Actionsを使ってCIを流す ▌CIはGitHub-hosted runner上で動かす 5 GitHub-hosted runner (GitHubが提供するVMインスタンス) CI環境(Rook開発者が用意)

Slide 6

Slide 6 text

課題1: ブロックデバイスの用意

Slide 7

Slide 7 text

runnerにOSD用ブロックデバイスが無い 7 GitHub-hosted runner sda sdb1 sdb sda14 sda15 / /boot/efi 4Mしかない。 OSDを作るには5GiB必要 sdb1 /mount

Slide 8

Slide 8 text

無いなら作ればいい! ▌sdb上のファイルシステムとパーティションを削除 8 GitHub-hosted runner sda sdb1 sdb sda14 sda15 / /boot/efi sdb1 /mount グェー ギャー

Slide 9

Slide 9 text

後はsdb上にOSDを作れば勝ち! 9 GitHub-hosted runner sda sdb1 sdb sda14 sda15 / /boot/efi ストレージプール OSD Cephクラスタ

Slide 10

Slide 10 text

課題2: OSDの多様な形式

Slide 11

Slide 11 text

OSDの形式がやたらと多い ▌形式の例 ⚫暗号したもの ⚫高速化のためにSSD上にWALを作るもの ⚫{ディスク全体,パーティション, Logical Volume}に作るものなど ▌全部動作確認するのは大変… 11

Slide 12

Slide 12 text

俺たちにはjobがある!勝ち! ▌全パターンについてjobを作って並列テスト 12 ストレージ プール Cephクラスタ sdb OSD ストレージ プール Cephクラスタ sdb ストレージ プール Cephクラスタ sdb sdb1 OSD sdb1 sdb2 OSD WAL ストレージ プール Cephクラスタ sdb VG … LV OSD …

Slide 13

Slide 13 text

課題3: レプリケーション

Slide 14

Slide 14 text

Rookはレプリケーションもできる ▌Rookは複数クラスタ間でブロックデバイスやオブジェ クトストレージのレプリケーションができる ▌当然ながらレプリケーション機能もテストしたい ▌でもGitHub-hosted runnerは1個しかない 14

Slide 15

Slide 15 text

sdb上にパーティションを2つ作って… 15 sdb sdb1 sdb2

Slide 16

Slide 16 text

2つクラスタを作って… 16 ストレージ プール Cephクラスタ sdb sdb1 sdb2 OSD ストレージ プール OSD Cephクラスタ ブロックデバイス or オブジェクト ストレージ ブロックデバイス or オブジェクト ストレージ

Slide 17

Slide 17 text

レプリケーション!勝った! 17 ストレージ プール Cephクラスタ sdb sdb1 sdb2 OSD ストレージ プール OSD Cephクラスタ ブロックデバイス or オブジェクト ストレージ ブロックデバイス or オブジェクト ストレージ

Slide 18

Slide 18 text

まとめ ▌RookによるGitHub-hosted runnerのエクストリームな使いかたを紹介 ▌ほかにも邪法がてんこもり ▌気になる人はソースをチェック! ⚫ https://github.com/rook/rook/tree/master/.github/workflows ⚫ https://github.com/rook/rook/tree/master/tests/scripts 18

Slide 19

Slide 19 text

19 おわり