Kubernetes Meetup Tokyo #53のLT資料です https://k8sjp.connpass.com/event/259350/
GitHub-hosted Runnerでそこまでやるの!?~ Rookの場合 ~Oct. 6th, 2022[email protected]サイボウズ データストアチーム1
View Slide
はじめに▌Rookとは⚫オープンソースの分散ストレージCephのオーケストレータ⚫Kubernetes上のオペレータとして動作する⚫Cloud Native Computing Foundation(CNCF)のgraduatedプロジェクト▌はなすこと⚫RookをGitHub-hosted runner(後述)上でテストするための課題と解決方法2
前提知識
Cephのアーキテクチャ4アプリストレージプールCephクラスタnodedisk disknodedisk disknodedisk disk…ブロックデバイス オブジェクトブロックデバイスブロックストレージ オブジェクトファイルシステムアプリアプリブロックデバイスブロックデバイスオブジェクトストレージOSD OSD OSD OSD OSD OSD
RookのCI▌全PRに対してGitHub Actionsを使ってCIを流す▌CIはGitHub-hosted runner上で動かす5GitHub-hosted runner(GitHubが提供するVMインスタンス)CI環境(Rook開発者が用意)
課題1: ブロックデバイスの用意
runnerにOSD用ブロックデバイスが無い7GitHub-hosted runnersdasdb1sdbsda14 sda15/ /boot/efi4Mしかない。OSDを作るには5GiB必要sdb1/mount
無いなら作ればいい!▌sdb上のファイルシステムとパーティションを削除8GitHub-hosted runnersdasdb1sdbsda14 sda15/ /boot/efisdb1/mountグェーギャー
後はsdb上にOSDを作れば勝ち!9GitHub-hosted runnersdasdb1sdbsda14 sda15/ /boot/efiストレージプールOSDCephクラスタ
課題2: OSDの多様な形式
OSDの形式がやたらと多い▌形式の例⚫暗号したもの⚫高速化のためにSSD上にWALを作るもの⚫{ディスク全体,パーティション, Logical Volume}に作るものなど▌全部動作確認するのは大変…11
俺たちにはjobがある!勝ち!▌全パターンについてjobを作って並列テスト12ストレージプールCephクラスタsdbOSDストレージプールCephクラスタsdbストレージプールCephクラスタsdbsdb1OSDsdb1 sdb2OSD WALストレージプールCephクラスタsdbVG…LVOSD…
課題3: レプリケーション
Rookはレプリケーションもできる▌Rookは複数クラスタ間でブロックデバイスやオブジェクトストレージのレプリケーションができる▌当然ながらレプリケーション機能もテストしたい▌でもGitHub-hosted runnerは1個しかない14
sdb上にパーティションを2つ作って…15sdbsdb1 sdb2
2つクラスタを作って…16ストレージプールCephクラスタsdbsdb1 sdb2OSDストレージプールOSDCephクラスタブロックデバイスorオブジェクトストレージブロックデバイスorオブジェクトストレージ
レプリケーション!勝った!17ストレージプールCephクラスタsdbsdb1 sdb2OSDストレージプールOSDCephクラスタブロックデバイスorオブジェクトストレージブロックデバイスorオブジェクトストレージ
まとめ▌RookによるGitHub-hosted runnerのエクストリームな使いかたを紹介▌ほかにも邪法がてんこもり▌気になる人はソースをチェック!⚫ https://github.com/rook/rook/tree/master/.github/workflows⚫ https://github.com/rook/rook/tree/master/tests/scripts18
19おわり