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

GitHub Actions & オートスケールするSelf-hosted runnerで実現する KAGのみんなのCI/CD

GitHub Actions & オートスケールするSelf-hosted runnerで実現する KAGのみんなのCI/CD

2023-04-18 に行われたDevOpsDays Tokyo 2023の登壇資料です。

Junya Miyake

April 18, 2023
Tweet

More Decks by Junya Miyake

Other Decks in Programming

Transcript

  1. KAGのみんなのCI/CD
    GitHub Actions & オートスケールするSelf-hosted
    runnerで実現するみんなのCI/CD
    2023.04.18
    KDDIアジャイル開発センター株式会社(KAG)
    三宅 潤也

    View full-size slide

  2. 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株式会社 所属

    View full-size slide

  3. 2
    KDDI Agile Development Center Corporation
    KDDI Agile Development
    Center Corp.
    KDDI アジャイル開発
    センター株式会社
    https://kddi-agile.com/
    Whatʼs KAG?

    View full-size slide

  4. 3
    KDDI Agile Development Center Corporation
    Whatʼs starters teams?
    • 本案件(契約に紐づく案件)を持たずに存在するチーム
    • ⼯数のビジネスではなく、Scrumチームで、価値を提供することを⽬標に始
    まった新たな取り組み
    • 新たにチームを⽴ち上げる場合は、チームビルディングなどを先にしておいて、案件にスムーズに
    ⼊れるようにする
    • 既存チームの場合は、対応中の案件が終了してもそのチームを維持する

    View full-size slide

  5. 4
    KDDI Agile Development Center Corporation
    What is required of the starters team?
    • スターターズチームに求められること
    ◦ お客さまや⾃社のアイディアをとにかくすぐに動く形にしたい︕
    ◦ でも継続的なテスト、デプロイによる品質の担保や効率化・省⼒化を諦めたくない・・・︕
    →すぐにぱっと使えるCI/CD基盤がほしい︕︕︕
    • いろんなチームでよく聞くCI/CDを取り巻くリアルなお悩み
    お客さまのステークホルダーや⾃社POにCI/CDの価値を伝える努⼒を続けてるいるものの、理解されるま
    で時間・労⼒がかかる
    →GitHub Actionsのymlを書けばすぐに試せる︕︕︕試して動くものが出来れ
    ばステークホルダーに価値を⽰しやすい。

    View full-size slide

  6. 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の違い

    View full-size slide

  7. 6
    KDDI Agile Development Center Corporation
    みんなのCI/CDに必要な要件
    • 社内で溜めたノウハウを活⽤しやすいGitHub Actionsを利⽤したい
    • 社内のみんなが使えるSelf-hosted runnerを構築したい
    • 社内でRunnerをシェアするため、需要に応じてスケールさせたい
    • 使わないときのコストは最低限に抑えたい
    Self-hosted/GitHub-hosted runnerの違い

    View full-size slide

  8. 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 レベルのラン
    ナーのみ)

    View full-size slide

  9. 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 レベルのランナーの
    み)

    View full-size slide

  10. 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より引⽤

    View full-size slide

  11. 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 より引⽤

    View full-size slide

  12. 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⽅式を構築して利⽤中のチームから
    のノウハウ共有

    View full-size slide

  13. 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 より引⽤

    View full-size slide

  14. 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
    • ワーケーション⽀援制度を検討中。近⽇公開予定。

    View full-size slide

  15. 14
    KDDI Agile Development Center Corporation
    ⾃社サービスもやってます︕ワーケーションイキタイ︕
    • ワーケーション検索サービス タビトシゴト
    ◦ コーワーキング施設/宿泊施設情報、ブログ形式でワーケーション体験記を提供
    ◦ ITエンジニアがペルソナ
    • GitHub.comでロードマップ公開中
    • https://github.com/orgs/kddi-agile/projects/1
    • 使ってみて機能要望や改善のフィードバックあればぜひissueで︕
    • サービスへのフィードバック、ワーケーション中のふとしたことがあればぜひSNSで#タビトシゴト を付
    けてつぶやいてみてください
    https://tabitoshigoto.com/

    View full-size slide

  16. IUUQTBOZDPNNVXFCBQQ

    View full-size slide

  17. Be a Change Leader.
    アジャイルに⼒を与え
    共に成⻑し続ける社会を創る

    View full-size slide