Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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
    [email protected]サイボウズ データストアチーム
    1

    View Slide

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

    View Slide

  3. 前提知識

    View Slide

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

    ブロックデバイス オブジェクト
    ブロックデバイス
    ブロックストレージ オブジェクト
    ファイルシステム
    アプリ
    アプリ
    ブロックデバイス
    ブロックデバイス
    オブジェクトストレージ
    OSD OSD OSD OSD OSD OSD

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  10. 課題2: OSDの多様な形式

    View Slide

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

    View Slide

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

    LV
    OSD

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  19. 19
    おわり

    View Slide