Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
GitHub Actions & オートスケールするSelf-hosted runnerで実現...
Search
Junya Miyake
April 18, 2023
Programming
4
1.4k
GitHub Actions & オートスケールするSelf-hosted runnerで実現する KAGのみんなのCI/CD
2023-04-18 に行われたDevOpsDays Tokyo 2023の登壇資料です。
Junya Miyake
April 18, 2023
Tweet
Share
More Decks by Junya Miyake
See All by Junya Miyake
LangfuseでAIエージェントの 可観測性を高めよう!/Enhancing AI Agent Observability with Langfuse!
jnymyk
1
330
完全に理解した!生成AI自社プロダクトのアジャイル開発の進め方!/ Fully understood! Agile tips for developing our generative AI product!(AOAI Dev Day)
jnymyk
5
2.3k
AzureでRAGをガンガン試行錯誤してみて得たナレッジを紹介します!/Azure RAG knowledge share
jnymyk
25
9k
KDDIのTech blogを爆速レスポンスでつくったよ
jnymyk
2
170
Other Decks in Programming
See All in Programming
AIエージェントによるテストフレームワーク Arbigent
takahirom
0
130
インターフェース設計のコツとツボ
togishima
2
140
TypeScript を活かしてデザインシステム MCP を作る / #tskaigi_after_night
izumin5210
4
420
コンポーネントライブラリで実現する、アクセシビリティの正しい実装パターン
schktjm
1
590
Proxmoxをまとめて管理できるコンソール作ってみました
karugamo
1
370
#QiitaBash TDDでAIに設計イメージを伝える
ryosukedtomita
2
1k
External SecretsのさくらProvider初期実装を担当しています
logica0419
0
190
Efficiency and Rock 'n’ Roll (Really!)
hollycummins
0
520
イベントソーシングとAIの親和性ー物語とLLMに理解できるデータ
tomohisa
1
150
がんばりすぎないコーディングルール運用術
tsukakei
1
110
データベースの技術選定を突き詰める ~複数事例から考える最適なデータベースの選び方~
nnaka2992
3
3.9k
ビカム・ア・コパイロット
ymd65536
1
190
Featured
See All Featured
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Fireside Chat
paigeccino
37
3.5k
We Have a Design System, Now What?
morganepeng
52
7.6k
Mobile First: as difficult as doing things right
swwweet
223
9.6k
The Language of Interfaces
destraynor
158
25k
Why You Should Never Use an ORM
jnunemaker
PRO
56
9.4k
How STYLIGHT went responsive
nonsquared
100
5.6k
Practical Orchestrator
shlominoach
187
11k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
5.7k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.8k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
19
1.2k
Transcript
KAGのみんなのCI/CD GitHub Actions & オートスケールするSelf-hosted runnerで実現するみんなのCI/CD 2023.04.18 KDDIアジャイル開発センター株式会社(KAG) 三宅 潤也
1 KDDI Agile Development Center Corporation 三宅 潤也(@jnymyk) Who am
I ? • ソフトウェアエンジニア 兼 SMとしてホーム IoT/XR/MaaSプロジェクトを経験 • KDDI/KAGの内製開発基盤であるGitHub Enterprise(GHE)のAdminもやってます • 趣味︓深夜ラジオ、ニチアサ、オンライン英会話 • 興味︓ 全員SM/POのチームの働き⽅、AIコーディン グ⽀援ツール(GitHub Copilot, Amazon CodeWhispererなど) ソフトウェアエンジニア / スクラムマスター KDDIアジャイル開発センター株式会社(KAG) / KDDI株式会社 所属
2 KDDI Agile Development Center Corporation KDDI Agile Development Center
Corp. KDDI アジャイル開発 センター株式会社 https://kddi-agile.com/ Whatʼs KAG?
3 KDDI Agile Development Center Corporation Whatʼs starters teams? •
本案件(契約に紐づく案件)を持たずに存在するチーム • ⼯数のビジネスではなく、Scrumチームで、価値を提供することを⽬標に始 まった新たな取り組み • 新たにチームを⽴ち上げる場合は、チームビルディングなどを先にしておいて、案件にスムーズに ⼊れるようにする • 既存チームの場合は、対応中の案件が終了してもそのチームを維持する
4 KDDI Agile Development Center Corporation What is required of
the starters team? • スターターズチームに求められること ◦ お客さまや⾃社のアイディアをとにかくすぐに動く形にしたい︕ ◦ でも継続的なテスト、デプロイによる品質の担保や効率化・省⼒化を諦めたくない・・・︕ →すぐにぱっと使えるCI/CD基盤がほしい︕︕︕ • いろんなチームでよく聞くCI/CDを取り巻くリアルなお悩み お客さまのステークホルダーや⾃社POにCI/CDの価値を伝える努⼒を続けてるいるものの、理解されるま で時間・労⼒がかかる →GitHub Actionsのymlを書けばすぐに試せる︕︕︕試して動くものが出来れ ばステークホルダーに価値を⽰しやすい。
5 KDDI Agile Development Center Corporation KAGではどうやってCI/CDを実現しているか︖ • GitHub Enterprise
Server(GHES)でのソースコード管理を中⼼に各チームで独⾃にCI/CDツールを選定 • 基本はチームにおまかせで技術選定 ◦ GHEを中⼼に、GitHub Actions, CircleCI, Jenkins, DroneCI, Bitraise … ◦ Bitbucket, Bamboo … ◦ AWS Code4兄弟(CodeBuild/CodePipeline/CodeDeploy/CodeCommit), Step Functions … • 最近はGitHub Actions(Self hosted runner) に収束してきている • メインはGitHub Actionsで各チームごとにSelf Hosted Runnerを⽴てて利⽤ ◦ 各チームごとにEC2を構築・運⽤ ◦ インフラやAWSに強い⼈が少ないチームでは⽴ち上げまでの時間がネックに GHESとGHECの違い
6 KDDI Agile Development Center Corporation みんなのCI/CDに必要な要件 • 社内で溜めたノウハウを活⽤しやすいGitHub Actionsを利⽤したい
• 社内のみんなが使えるSelf-hosted runnerを構築したい • 社内でRunnerをシェアするため、需要に応じてスケールさせたい • 使わないときのコストは最低限に抑えたい Self-hosted/GitHub-hosted runnerの違い
7 KDDI Agile Development Center Corporation Self-hosted runnerをスケールさせるための選択肢 • GitHub公式ドキュメントで推奨している2つのオートスケール⽅式
◦ actions/actions-runner-controller : Actions Runnerのスケールアップ・ダウンをk8sで制御する⽅式(k8s版) ◦ philips-labs/terraform-aws-github-runner : EC2スポットインスタンスとサーバレスなアーキテクチャの⽅式(ピタゴ ラスイッチ⽅式) 機能 actions-runner-controller (k8s⽅式) terraform-aws-github-runner (ピタゴラ⽅式) ランタイム Kubernetes Linux と Windows VM サポートされているクラウド Azure、AWS、Google Cloud Platform、オンプレミス AWS ランナーをスケーリングできる 場所 Enterprise、Organization、リポ ジトリのレベル。 ランナー ラベルとランナー グ ループ別。 Organization とリポジトリのレベ ル。 ランナー ラベルとランナー グ ループ別。 ランナーをスケーリングする⽅法 Webhook イベント、スケジュー ル、プル ベース Webhook イベント、スケジュー ル (Organization レベルのラン ナーのみ)
8 KDDI Agile Development Center Corporation KAGにとってのEnterprise/Organization/Repository • GitHubの概念と対応するKAGのリソース ◦
Enterprise: KAG ◦ Organization: プロジェクト(≒各開発チーム) ◦ Repository: チーム内の各リポジトリ 機能 actions-runner-controller terraform-aws-github-runner ランタイム Kubernetes Linux と Windows VM サポートされているクラウド Azure、AWS、Google Cloud Platform、オンプレミス AWS ランナーをスケーリングできる 場所 Enterprise、Organization、リポジ トリのレベル。 ランナー ラベルと ランナー グループ別。 Organization とリポジトリのレベル。 ランナー ラベルとランナー グルー プ別。 ランナーをスケーリングする⽅法 Webhook イベント、スケジュール、 プル ベース Webhook イベント、スケジュール (Organization レベルのランナーの み)
9 KDDI Agile Development Center Corporation ピタゴラ⽅式︓ terraform-aws-github-runnerによるGitHub Actions Self-hosted
runner GitHubリポジトリ • https://github.com/philips-labs/terraform-aws- github-runner 特徴 • IaCツールであるTerraformを使ってAWS上にスケー ルするSelf-hosted runnerの構築が可能 • 定価から最⼤90%値引きの料⾦で利⽤可能なEC2ス ポットインスタンスでRunnerを作成 • スケールアップ・スケールダウンの仕組みはAPI Gateway, Lambda, SQSなどのサーバレスサービス で構成 • GitHubからのwebhookをトリガーとしてRunnerを作 成し⾃動でスケールアップ。Actionsの実⾏が終わっ たRunnerを⾃動でGitHubから削除&AWS上でインス タンスを削除することで⾃動でスケールダウン アーキテクチャ図 https://github.com/philips-labs/terraform- aws-github-runnerより引⽤
10 KDDI Agile Development Center Corporation k8s⽅式: Actions Runner Controller
(ARC)によるGitHub Actions Self-hosted runner GitHubリポジトリ • https://github.com/actions/actions-runner-controller 特徴 • 社内共通で利⽤するために必要なEnterpriseレベルの Runnerを作成可能 • k8sクラスタ上にセルフホストランナーを作成するための k8sコントローラ • 需要に応じて⾃動でスケールアップ/ダウンできるセルフホ ストランナーを作成可能 • エフェメラルでコンテナに基づいているため、ランナーの 新しいインスタンスを迅速かつクリーンに⽴ち上げ可能 アーキテクチャ図 https://github.com/actions/actions-runner-controller より引⽤
11 KDDI Agile Development Center Corporation KAGのみんなのCI/CDの現状 • 現状、専任の組織・メンバーはいないため社内コミュ ニティ活動として有志で対応
• まずは特定のチームからピタゴラ⽅式(terraform- aws-github-runner)でOrganizationレベルのSelf- hosted runnerを構築して利⽤中 ◦ ハマりポイントやノウハウを蓄積中。 • k8s⾃体の学習と並⾏してk8s⽅式Self-hosted runnerを構築中 ◦ Self-hosted runnerだけでなく、k8s⾃体の GitOps/CDツールとしてFluxから構築 ◦ 先⾏してk8s⽅式を構築して利⽤中のチームから のノウハウ共有
12 KDDI Agile Development Center Corporation まとめ • お⼿軽にスケールするActions runnerを使いた
いだけならterraform-aws-github-runner(ピタ ゴラ⽅式)で良さそう • 私たちのように会社全体でみんなで共通の CI/CDとしてを使いたい (Enterpriseレベルの Actions runner)場合、ARC(k8s⽅式)を頑張る 必要がある terraform-aws-github-runner アーキテクチャ図 https://github.com/philips- labs/terraform-aws-github- runnerより引⽤ ARC アーキテクチャ図 https://github.com/actions/actions-runner- controller より引⽤
13 KDDI Agile Development Center Corporation We are hiring! ワーケーションイキタイ︕
• KAGの開発体験をより良くしていきたい仲間を募集中︕ ◦ 開発環境改善にフォーカスしてやっていきたい⽅ ◦ k8sが⼤好きな⽅ ◦ イケてる情シス・攻める情シスにモチベーションがある⽅ ◦ AWS以外のパブリッククラウド利⽤のための環境整備にモチベーションがある⽅ • 上記に加え、ソフトウェアエンジニア、スクラムマスター、アーキテクト、UI/UXデザイナーを積極採⽤中︕ • 募集職種の詳細や、募集要項はこちら ◦ https://kddi-agile.com/recruit • まずはお気軽にカジュアル⾯談へ ◦ https://kddi-agile.com/contact-recruit • ワーケーション⽀援制度を検討中。近⽇公開予定。
14 KDDI Agile Development Center Corporation ⾃社サービスもやってます︕ワーケーションイキタイ︕ • ワーケーション検索サービス タビトシゴト
◦ コーワーキング施設/宿泊施設情報、ブログ形式でワーケーション体験記を提供 ◦ ITエンジニアがペルソナ • GitHub.comでロードマップ公開中 • https://github.com/orgs/kddi-agile/projects/1 • 使ってみて機能要望や改善のフィードバックあればぜひissueで︕ • サービスへのフィードバック、ワーケーション中のふとしたことがあればぜひSNSで#タビトシゴト を付 けてつぶやいてみてください https://tabitoshigoto.com/
IUUQTBOZDPNNVXFCBQQ
Be a Change Leader. アジャイルに⼒を与え 共に成⻑し続ける社会を創る