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.2k
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
完全に理解した!生成AI自社プロダクトのアジャイル開発の進め方!/ Fully understood! Agile tips for developing our generative AI product!(AOAI Dev Day)
jnymyk
5
1.9k
AzureでRAGをガンガン試行錯誤してみて得たナレッジを紹介します!/Azure RAG knowledge share
jnymyk
25
8.5k
KDDIのTech blogを爆速レスポンスでつくったよ
jnymyk
2
140
Other Decks in Programming
See All in Programming
詳細解説! ArrayListの仕組みと実装
yujisoftware
0
560
WebフロントエンドにおけるGraphQL(あるいはバックエンドのAPI)との向き合い方 / #241106_plk_frontend
izumin5210
4
1.3k
2024/11/8 関西Kaggler会 2024 #3 / Kaggle Kernel で Gemma 2 × vLLM を動かす。
kohecchi
4
790
JavaでLチカしたい! / JJUG CCC 2024 Fall LT
nhayato
0
120
Snowflake x dbtで作るセキュアでアジャイルなデータ基盤
tsoshiro
2
510
Click-free releases & the making of a CLI app
oheyadam
2
110
イベント駆動で成長して委員会
happymana
1
300
Macとオーディオ再生 2024/11/02
yusukeito
0
350
タクシーアプリ『GO』のリアルタイムデータ分析基盤における機械学習サービスの活用
mot_techtalk
4
780
CSC509 Lecture 12
javiergs
PRO
0
140
Make Impossible States Impossibleを 意識してReactのPropsを設計しよう
ikumatadokoro
0
150
ActiveSupport::Notifications supporting instrumentation of Rails apps with OpenTelemetry
ymtdzzz
1
210
Featured
See All Featured
Measuring & Analyzing Core Web Vitals
bluesmoon
3
79
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
27
830
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
Designing on Purpose - Digital PM Summit 2013
jponch
115
7k
The Cult of Friendly URLs
andyhume
78
6k
Reflections from 52 weeks, 52 projects
jeffersonlam
346
20k
Facilitating Awesome Meetings
lara
50
6.1k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
126
18k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
26
2.1k
Rails Girls Zürich Keynote
gr2m
94
13k
For a Future-Friendly Web
brad_frost
175
9.4k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
400
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. アジャイルに⼒を与え 共に成⻑し続ける社会を創る