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

【GitHub Actions 】プロダクト開発を支援する スケーラブルな self-host...

【GitHub Actions 】プロダクト開発を支援する スケーラブルな self-hosted runnerの提供

サブカル業界Developers 勉強会Vol.6 LT資料

Avatar for Yusuke Kataoka

Yusuke Kataoka

March 06, 2024

Other Decks in Technology

Transcript

  1. 2 こんにちは Hello ⾃⼰紹介 ⽚岡 裕亮 株式会社viviON 開発部 SREユニット所属 2022年⼊社

    仕事では毎⽇Terraformを書いてます。趣味で⽇曜プログラミングしてます
  2. 4 viviONの開発について Introduction プロダクト⽴ち上げに積極的な会社です 新規環境構築が⾼頻度で発⽣します Github Enterprise Serverでソース管理しています • GitHub

    Enterprise CloudはGitHub ホステッド ランナーを利⽤可能 • GitHub Enterprise ServerでActionsを使うにはself-hosted runnerが必須 ※現在の最新の安定バージョン v3.11 リリース時点の仕様 • 新規環境構築時はリリースの⾃動化も⾏いたいため Actionsの出番が増えています。 • AWSアカウントが100以上あります。
  3. 5 課題 Problem GitHubActionsの社内需要が⾼まっている • CodePipelineにせよGitHubActionsにせよサーバーを新設する場合承認を得る必要がある。 ◦ 開発チームの裁量で気軽に導⼊できない。 CICD導⼊時に運⽤ポリシー上のボトルネックがある •

    トイルの存在 ◦ EC2作成、runnerのインストール作業。 ◦ 不要になったビルド成果物のストレージ掃除。 ◦ たまに突然死するrunnerのプロセスを起こしたり EC2のself-hosted-runnerの構築・メンテの負担 • 柔軟なトリガー条件の設定が可能で、導⼊が簡単。 • モジュールを活⽤し複雑な処理をお⼿軽に実装可能。 • リリースの⾃動化(仕組み化)を進めたい。 新規システム構築時はCICDもセットであることが多い。 • ⾃動テストへの関⼼が⾼まっている。
  4. 7 仕様 Specification GitHub Orgを跨いで共通のRunnerを登録できること これを満たすself-hosted-runner基盤をつくるぞ • GHEのEnterpriseスコープにRunnerGroupを登録すれば良さそう。 各プロダクトで共⽤可能なself-hosted runnerを提供する

    冪等性の担保 • Runnerの実⾏環境が汚染されないこと。 ◦ 利⽤者がworkflow.yamlの設計に集中できるようにしたい。 • 別プロダクトのコードがRunnerの環境に残って⾒えたりしないようにする。 ◦ 利⽤者が安全に利⽤できる環境を提供したい。 需要のスパイクに追従できること • Runnerが容易にスケールアウト可能な設計を組みたい。
  5. 8 調査 Survey self-hosted-runner基盤をつくるぞ • github.com/actions/actions-runner-controller ◦ GitHub公式のk8sでの実装 ◦ 運⽤困難なのでk8sは避けたい

    • github.com/philips-labs/terraform-aws-github-runner ◦ ⽩物家電のPhilipsの実装、EC2がオートスケールする。 ◦ cybozuさんの採⽤実績あり ▪ philips-labs/terraform-aws-github-runner による GitHub Actions セルフホストラン ナーの⼤規模運⽤ | ドクセル • Amazon ECS と AWS Lambda で汎⽤ self-hosted runner を提供する基盤 - クックパッド開発者ブログ ◦ CookpadさんのECS on EC2を採⽤した事例 ◦ ECSはチームで知⾒があるのでベースとさせていただいた。 ◦ 弊社環境でもRunnerへのDocker実⾏環境の整備は必須となるため ECSタスク定義の dind(docker-in-docker)構成についても丸っと参考にした。 先⾏事例
  6. 12 結果 今後の取り組み Result / Feature こんないいことがありました • 🚀要件を達成したシステムを構築し、社内展開に成功しました。 •

    💰既存runnerからの移⾏とSPOTインスタンスの採⽤により AWSコスト削減が⾒込めました。 • 🏥runnerの突然死が防⽌され可⽤性が改善されました。 • 📜IaC管理により保守性が改善されました。 • 🤖ECS採⽤によって柔軟なスケールアウトを実現できました。 • 💪1⼈プロダクトにならなかった。(チームメンバーがPR投げてくれた) 今後の取り組み • メトリクス取得 ◦ Inキューからジョブ開始までの時間短縮 • Runnerのローカルデバッグ環境の整備
  7. 13 参考⽂献 References • クックパッド開発者ブログ. Amazon ECS と AWS Lambda

    で汎⽤ self-hosted runner を提供する基盤. 2022-11-07, Amazon ECS と AWS Lambda で汎⽤ self-hosted runner を提供する基盤 - クックパッド開発者ブ ログ • GitHub Docs. セルフホステッド ランナーによる⾃動スケーリング. セルフホステッド ランナーによる⾃動ス ケーリング - GitHub Docs • github.com/actions. Actions Runner Controller (ARC). Kubernetes controller for GitHub Actions self-hosted runners • github.com/philips-labs. Terraform module Self-Hosted Scalable GitHub Actions runners on AWS. GitHub - philips-labs/terraform-aws-github-runner: Terraform module for scalable GitHub action runners on AWS