$30 off During Our Annual Pro Sale. View Details »

GitHub-hosted runnerでそこまでやるの!?Rookの場合

GitHub-hosted runnerでそこまでやるの!?Rookの場合

Kubernetes Meetup Tokyo #53のLT資料です
https://k8sjp.connpass.com/event/259350/

Satoru Takeuchi
PRO

October 06, 2022
Tweet

More Decks by Satoru Takeuchi

Other Decks in Technology

Transcript

  1. GitHub-hosted Runnerで そこまでやるの!? ~ Rookの場合 ~ Oct. 6th, 2022 sat@サイボウズ

    データストアチーム 1
  2. はじめに ▌Rookとは ⚫オープンソースの分散ストレージCephのオーケストレータ ⚫Kubernetes上のオペレータとして動作する ⚫Cloud Native Computing Foundation(CNCF)のgraduated プロジェクト ▌はなすこと

    ⚫RookをGitHub-hosted runner(後述)上でテストするための課 題と解決方法 2
  3. 前提知識

  4. Cephのアーキテクチャ 4 アプリ ストレージプール Cephクラスタ node disk disk node disk

    disk node disk disk … ブロックデバイス オブジェクト ブロックデバイス ブロックストレージ オブジェクト ファイルシステム アプリ アプリ ブロックデバイス ブロックデバイス オブジェクトストレージ OSD OSD OSD OSD OSD OSD
  5. RookのCI ▌全PRに対してGitHub Actionsを使ってCIを流す ▌CIはGitHub-hosted runner上で動かす 5 GitHub-hosted runner (GitHubが提供するVMインスタンス) CI環境(Rook開発者が用意)

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

  7. runnerにOSD用ブロックデバイスが無い 7 GitHub-hosted runner sda sdb1 sdb sda14 sda15 /

    /boot/efi 4Mしかない。 OSDを作るには5GiB必要 sdb1 /mount
  8. 無いなら作ればいい! ▌sdb上のファイルシステムとパーティションを削除 8 GitHub-hosted runner sda sdb1 sdb sda14 sda15

    / /boot/efi sdb1 /mount グェー ギャー
  9. 後はsdb上にOSDを作れば勝ち! 9 GitHub-hosted runner sda sdb1 sdb sda14 sda15 /

    /boot/efi ストレージプール OSD Cephクラスタ
  10. 課題2: OSDの多様な形式

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

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

    Cephクラスタ sdb ストレージ プール Cephクラスタ sdb sdb1 OSD sdb1 sdb2 OSD WAL ストレージ プール Cephクラスタ sdb VG … LV OSD …
  13. 課題3: レプリケーション

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

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

  16. 2つクラスタを作って… 16 ストレージ プール Cephクラスタ sdb sdb1 sdb2 OSD ストレージ

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

    プール OSD Cephクラスタ ブロックデバイス or オブジェクト ストレージ ブロックデバイス or オブジェクト ストレージ
  18. まとめ ▌RookによるGitHub-hosted runnerのエクストリームな使いかたを紹介 ▌ほかにも邪法がてんこもり ▌気になる人はソースをチェック! ⚫ https://github.com/rook/rook/tree/master/.github/workflows ⚫ https://github.com/rook/rook/tree/master/tests/scripts 18

  19. 19 おわり