Slide 1

Slide 1 text

myshoesによるself-hosted macOS runnerのオートス ケーリング対応について 
 CyberAgent Infrastructure Unit / K.Saito 
 1

Slide 2

Slide 2 text

齋藤 健太 (Saito Kenta / @site0801) 
 
 ● 入社年度
 ○ 2022 年 新卒入社
 ● 所属
 ○ CIU > Development Div
 ● 最近の業務 
 ○ プライベートクラウド運用
 ○ マネージドサービスの開発・運用
 ● 趣味
 ○ ゲーム・漫画
 2


Slide 3

Slide 3 text

self-hosted runnerの運用して る方〜〜〜 👋
 3


Slide 4

Slide 4 text

self-hosted macOS runnerの運 用してる方〜〜〜 👋
 4


Slide 5

Slide 5 text

macOS版self-hoted runnerを動かす方法 
 ● 基本的にはLinux版と同様 
 ● まずはactions/runner をmac筐体上で実行 
 5


Slide 6

Slide 6 text

macOS版self-hoted runnerを動かす方法 
 ● 基本的にはLinux版と同様 
 ● まずはactions/runner をmac筐体上で実行 
 ● 以上!
 6


Slide 7

Slide 7 text

もしかしてauto scaling 
 とかいらなくない?? 
 7


Slide 8

Slide 8 text

actions/runner単体運用の懸念点 
 ● macOSの設定やライブラリバージョンが不安定 
 ○ 自動バージョンアップグレードによる環境の変化
 ○ XCodeのバージョンアップ対応
 ● 環境を使い回すことによる影響 
 ○ 前に使われていたジョブによるmac環境の汚染
 8


Slide 9

Slide 9 text

actions/runner単体運用の懸念点 
 ● macOSの設定やライブラリバージョンが不安定 
 ○ 自動バージョンアップグレードによる環境の変化
 ○ XCodeのバージョンアップ対応
 ● 環境を使い回すことによる影響 
 ○ 前に使われていたジョブによるmac環境の汚染
 →実行時に毎回環境が同じじゃないのはつらい ...
 9


Slide 10

Slide 10 text

やっぱり環境再作成が 
 できて欲しいかも 🧐
 10


Slide 11

Slide 11 text

Auto Scalingどこまでやるか 
 ● VMの再作成まで自動化 
 ○ VM上でmacOS Runner環境を作ってジョブごとに再作成
 ○ Cycloud-hosted Runnerではこっちを実現
 ● mac筐体をプール追加するまで自動化 
 ○ NW上に配置しておくだけで自動でプールに追加
 ○ 対応コストがめちゃくちゃ高い😨
 11


Slide 12

Slide 12 text

Auto Scalingどこまでやるか 
 ● VMの再作成まで自動化 
 ○ VM上でmacOS Runner環境を作ってジョブごとに再作成
 ○ Cycloud-hosted Runner ではこっちを実現
 ● mac筐体をプール追加するまで自動化 
 ○ NW上に配置しておくだけで自動でプールに追加
 ○ 対応コストがめちゃくちゃ高い😨
 12


Slide 13

Slide 13 text

myshoes? 
 Cycloud-hosted runner? 
 13


Slide 14

Slide 14 text

whywaita/myshoesとは
 Auto-scaling VirtualMachine runner for GitHub Actions 
 ● myshoesとshoes(Provider)の2つのコンポーネント 
 ● myshoes 
 ○ GitHub Appsとrunnerの管理をGitHubAPI経由で処理
 ● shoes(Provider) 
 ○ Openstack・LXD・UTM等とVMの作成・削除
 14


Slide 15

Slide 15 text

[PR]Cycloud-hosted Runnerとは
 ● Cy(berAgent)Cloud-hosted Runner 
 ● Cycloud 
 ○ CyberAgent社内向けプライベートクラウド
 ○ Compute・KaaS・PaaSなどなど
 ● 内部ではwhywaita/myshoesを用いている 
 15


Slide 16

Slide 16 text

現在のCycloud-hosted Runnerのざっくり構成図 
 16
 Linux Runner myshoes MacOS Runner shoes (Linux Provider) shoes (MacOS Provider) shoes (label router) Runnerの登録 ジョブ情報の取得 VMの作成 [self-hosted, Linux] [self-hosted, macOS]

Slide 17

Slide 17 text

現在のCycloud-hosted Runnerのざっくり構成図 
 17
 Linux Runner myshoes MacOS Runner shoes (Linux Provider) shoes (MacOS Provider) shoes (label router) Runnerの登録 ジョブ情報の取得 VMの作成 [self-hosted, Linux] [self-hosted, macOS] ココがmacOSに関係

Slide 18

Slide 18 text

mac mini 0001 Cycloud-hosted macOS Runnerの詳細構成 
 18
 UTM MacOS Runner (VM) shoes (MacOS Provider) mac mini 0002 UTM MacOS Runner (VM) VM-Create.sh VM-Delete.sh VM-Create.sh VM-Delete.sh

Slide 19

Slide 19 text

自動でVM再作成 
 できてるしよくない? 
 19


Slide 20

Slide 20 text

自動でVM再作成 
 できてるしよくない? 
 全然だめだったので 
 現在対応してます 😨
 20


Slide 21

Slide 21 text

mac mini 0001 問題: VMのステートがわからない ...
 21
 UTM MacOS Runner (VM) shoes (MacOS Provider) mac mini 0002 UTM MacOS Runner (VM) VM-Create.sh VM-Delete.sh VM-Create.sh VM-Delete.sh actions/runnerが 現在どの状態なの かわからない問題

Slide 22

Slide 22 text

mac mini 0001 問題: VMのステートがわからない ...
 22
 UTM MacOS Runner (VM) shoes (MacOS Provider) mac mini 0002 UTM MacOS Runner (VM) VM-Create.sh VM-Delete.sh VM-Create.sh VM-Delete.sh actions/runnerが ・起動中 ・ジョブ実行待ち ・ジョブ実行中 ・ジョブ実行完了 どの状態なのか?

Slide 23

Slide 23 text

mac mini 0001 問題: VMのステートがわからない ...
 23
 UTM MacOS Runner (VM) shoes (MacOS Provider) mac mini 0002 UTM VM-Create.sh VM-Create.sh VM-Delete.sh actions/runnerのログ を一定間隔でパース →メトリクス出力 VM-State-exporter.sh

Slide 24

Slide 24 text

mac mini 0001 問題: VMのステートがわからない ...
 24
 UTM MacOS Runner (VM) shoes (MacOS Provider) mac mini 0002 UTM VM-Create.sh VM-Create.sh VM-Delete.sh 今後はagentを作成し常 に監視できるようにして いきたい! agent

Slide 25

Slide 25 text

今後も改善頑張っていきます 
 25


Slide 26

Slide 26 text

そういえば 
 本家のmac Runnerは 
 どうしてるんだろう? 🧐
 26


Slide 27

Slide 27 text

macOS12から ~~~.anka.pkr.hcl というファイルが? 
 27


Slide 28

Slide 28 text

~~~.anka.pkr.hcl って何だろう ...???(初心者の妄想 )
 28
 ● Veertu社が開発・販売しているAnkaシリーズに関係してそう 
 ● Anka Build : macOS上でのVM管理をうまいことやってくれる 
 ○ GitHub Actionsやその他CIサービスとのインテグレーション⭕
 ○ Apple Siliconの対応⭕
 ○ Apple SiliconとIntelで価格が違いそう?
 ● ただ、一応本家macOS Runnerは 全部AzureのDCにありそう 🧐
 ● しかも、Veertu社はAWSと仲が良さそう 🧐


Slide 29

Slide 29 text

ご清聴ありがとうございました 
 29