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

Actions Runner Controllerを利用したPlatform Engineering

Junya Taniai
February 13, 2025
300

Actions Runner Controllerを利用したPlatform Engineering

Kubernetesで実践するPlatform Engineering発売記念! PFEM特別回 (https://platformengineering.connpass.com/event/342670/) のセッション資料です。

セッション動画はこちらです。
https://youtube.com/live/kvcL6CvzyOE?feature=share

Junya Taniai

February 13, 2025
Tweet

Transcript

  1. 自己紹介 2 谷合 純也(たにあい じゅんや) 福岡県福岡市在住 • 所属:株式会社エーピーコミュニケーションズ ACS事業部 Cloud

    Infrastructureチーム Engineering Manager • 業務:Platform Engineering推進支援、SRE支援、SI • 推しうどん屋:ウエスト • 推しラーメン屋:``ラーメン(てんてん) Jnytnai0530 すべて失効... Kubestronaut ふりだし...
  2. 目次 会社概要 Actions Runner Controllerを使ったPlatform Engineering 4 13 24 ユースケース

    29 3 Copyright © AP Communications Co., Ltd. All rights reserved. 今回お話すること 15 Actions Runner Controllerとは? Actions Runner Controllerの制限事項 33
  3. 会社概要 | 基本情報 会社名 株式会社エーピーコミュニケーションズ 所在地 東京都千代田区鍛冶町2丁目9番12号 神田徳力ビル 3階 設立

    1995年11月 資本金 92,500,000円 従業員数 478名(2024年4月現在) 事業内容 システムインテグレーション事業、 技術者派遣事業、研究開発事業、 サービス開発事業 主な取引先 株式会社エイチ・アイ・エス 遠鉄システムサービス株式会社 鹿島建設株式会社 株式会社 JAL インフォテック SOLIZE株式会社 etc… 5
  4. 会社概要 | 事業部コンセプト ACS事業部はNeoSIerの新たなSIモデルとして、エンタープライズ企業のDX内製化を推進しております。 内製化推進のためのお客様開発組織のDexEx向上をミッションに、Platform Engineering、Microsoft Azure のプラットフォームやAI技術を活用しセルフサービス化されたSIを確立・提供し日本企業のデジタル化を 加速させて参ります。 Platform

    EngineeringやAIを活用し、 DevExの向上でお客様のDX内製化を推進する Platform Engineering(プラットフォームエンジニアリング)とは、環境の変化が著しいプロダクト開発において、開発者がより 良い機能の開発に集中し、これまで以上に速いスピードでプロダクトをリリースできるよう、開発者をサポートするための概念 Platform Engineeringとは‥‥? 6
  5. Platform Engineering を 楽々手の内に powered by 7 Copyright © AP

    Communications Co., Ltd. All rights reserved.
  6. 会社概要 | 開発者ポータル「PlaTT」とは? 8 Copyright © AP Communications Co., Ltd.

    All rights reserved. Managed 運用保守軽減 「Backstage」を即座に利用可能 バージョンアップや脆弱性対応なども考慮不要 AI Plugin 開発プロセス効率化 動画ファイルからの議事録自動生成、チャットボットによる検索、 開発者向けドキュメント生成などノンコア業務を軽減 Catalog すべてのソフトウェアを一元管理 複数のマイクロサービスとメタデータ (所有者、デプロイメント、 データパイプライン、プル リクエストのステータス etc) を一元管理 Template ゴールデンパスの提供 開発環境、ライブラリ、サンプルアプリケーション、IaC、Pipelines など開発環境準備のテンプレートをセルフサービスで提供。 Security オープンな文化と権限統制 OPA Policyを活用し、開発者ポータル内での中央集権的 な制御を実施することでInnerSourceとガバナンスを両立。 開発者ポータル「PlaTT」 開発者ポータル「PlaTT」は、Backstageをベースにお客様の開発生産性向上を促進するためにAP Communicationsにて提供するサービス。 Backstageのお客様先でのマネージド展開に加え、独自のAI Pluginの開発、Golden Pathの個別開発支援、セキュリティを意識した個別の 機能開発、日本市場向けのブログやドキュメントによる情報発信などを強みとしている。
  7. 直近のイベント登壇 Platform Engineering Kaigi 2024 にてMicrosoftと共同登壇 会社概要 | Backstage/Platform Engineering登壇事例

    日本マイクロソフト主催のオンラインイベント 「Microsoft Platform Engineering Day ~ アプリ開発 を支えるプラットフォームエンジニアリングの最前 線」に当社エンジニアが登壇 HashiCorp、イオンスマートテクノロジーとPlatform Engineeringに関連するイベントを開催 日本マイクロソフト主催の 生成AI事業部化支援プログラム で「SOLIZE」事例を発表 お客様向け「Platform Engineering」 支援事例も複数公開中 https://www.ap-com.co.jp/case/category /platform-engineering/ 9
  8. 会社概要 | Cloud Native事例 10 Copyright © AP Communications Co.,

    Ltd. All rights reserved. ▪以下一例 • Grafana Stackや、Prometheus、 Thanos、OpenTelemetry、Fluentbitを 活用したテレメトリーデータを集約 するObservability基盤 • Istioを活用したサービスメッシュ • Red Hat OpenShift Service on AWSで のGitOps AzureやAWSなどCloud基盤構築支援だけでなく、OSSを活用したCloud Native支援も可能。
  9. 今回お話すること | Platform Engineering と レバレッジ Copyright © AP Communications Co., Ltd.

    All rights reserved. • Platform Engineeringとは ◦ Platform Engineeringとは、Platformを開発・運用する分野である。 この分野の目標は、ビジネスにレバレッジをもたらすために、システム全体の複雑性を管理する ことである。 • レバレッジとは ◦ Platform Engineeringの価値の核心は、レバレッジの概念である。 つまり、Platformチームの少数のエンジニアの仕事が、より大きな組織の仕事を減らすということで ある。プラットフォームは、2つの方法でレバレッジを実現する。 すなわち、アプリケーション・エンジニアがビジネス価値を創造する仕事に取り組む際の生産性を 高めることと、アプリケーション・エンジニアリング・チーム間の重複作業を排除することで エンジニアリング組織を効率化することである。 Platform Engineering: A Guide for Technical, Product, and People Leaders 12
  10. 今回お話すること Copyright © AP Communications Co., Ltd. All rights reserved.

    13 • Platform Engineeringは開発チームをお客様として、Platformを提供し、 ビジネス価値を創造する時間の向上や重複作業の排除による効率化をする 分野。 • PlatformはGitHub Actionsにおける実行環境(Runner)を取り上げ、 Platformチームのめんどうな作業を排除し、払い出しの際のリードタイム の削減の開発者体験の向上をする方法をお話します。 ◦ 今回はKubernetesを中心に焦点を当て、Platformの払い出しを 自動化する。 ◦ それを実現するツールはActions Runner Controllerです。
  11. 今回お話すること Copyright © AP Communications Co., Ltd. All rights reserved.

    14 引用:https://learn.microsoft.com/ja-jp/platform-engineering/problem-space
  12. Actions Runner Controllerとは? | Self-hosted runnerの説明 Copyright © AP Communications Co., Ltd.

    All rights reserved. 16 GitHub Actionsって? GitHub ActionsとはCI/CDパイプラインをyaml形式で宣言的に定義し、Workflowと してまとめて実行できるなんとも便利なサービス。GitHub Actionsには、実行環境を 大きく分けて2つあります。 • GitHub社がホストするVMのGitHub-hosted runner • ユーザがホストする環境(コンテナ含む)のSelf-hosted runner ◦ 独自ネットワーク ◦ 独自リソース(CPU, メモリ) ◦ 事前インストール済み独自ツール Actions Runner Controllerって? Actions Runner Controllerは、Kubernetes Podを実行中のJobやWorkflowの数に基づい て自動的にスケーリングされるSelf-hosted runnerとして払い出す、GitHub社 公式のKubernetes Controllerです。
  13. Actions Runner Controllerとは? | アーキテクチャ Copyright © AP Communications Co., Ltd. All

    rights reserved. Controller • AutoScalingRunnerSet Controller EphemeralRunnerSetおよびAutoScalingListerner CustomResourceの作成および 更新、削除 • EphemeralRunnerSet Controller EphemeralRunner CustomResourceの作成および更新、削除 • EphemeralRunner Controller EphemeralRunner Podの作成および削除 • AutoScalingListener Controller AutoScalingListerner Podの作成および削除 18
  14. Actions Runner Controllerとは? | アーキテクチャ Copyright © AP Communications Co., Ltd. All

    rights reserved. Pod • Controller Pod 上記Controllerが動くmanager • EphemeralRunner Pod Self-hosted runnerとして動く • AutoScalingListener Pod GitHubとのロングポーリングを確立し、GitHub Actions時にMessageを受信 し、EphemeralRunnerSetの.Spec.Replicasを増減させる 19
  15. Actions Runner Controllerとは? | アーキテクチャ Copyright © AP Communications Co., Ltd. All

    rights reserved. AutoScalingRunnerSetのデプロイを契機(①)に、EphemeralRunnerSet(②)と、 AutoScalingListener(③)が作成される。GitHub Actions Workflowの実行を契機に、 EphemeralRunner(⑤)とEphemeralRunner Pod(⑥)が作成される流れとなる。 20
  16. Actions Runner Controllerとは? | アーキテクチャ | スケール内部動作 Copyright © AP Communications Co., Ltd. All

    rights reserved. 21 1. 2個のジョブが定義されたGitHub Actions Workflowが実行される 2. ListenerはGitHubとロングポーリングを張っている。GitHubからジョブ実行のメッセージ受信 3. ListenerはEphemeralRunnerSetの.Spec.ReplicasをWorkflowジョブの数だけスケールする 4. EphemeralRunnerSetの変更を検知したEphemeralRunnerSet Controllerは.Spec.Replicasの数だけ、 EphemeralRunnerを作成 5. EphemeralRunnerの作成を検知したEphemeralRunner Controllerは、 EphemeralRunnerの数だけRunner Podを作成 6. Runner Podは自分自身をGitHub Actionsに登録 登壇ではスキップ
  17. Actions Runner Controllerとは? | アーキテクチャ | スケール | EphemeralRunnerSetの動き Copyright © AP Communications Co.,

    Ltd. All rights reserved. 22 $ kubectl -n arc-runners get ephemeralrunnersets.actions.github.com -w NAME DESIREDREPLICAS CURRENTREPLICAS PENDING RUNNERS RUNNING RUNNERS FINISHED RUNNERS DELETING RUNNERS arc-runner-set-r5b6h 0 0 0 arc-runner-set-r5b6h 2 0 0 0 arc-runner-set-r5b6h 2 1 1 0 arc-runner-set-r5b6h 2 2 2 0 arc-runner-set-r5b6h 2 2 1 1 arc-runner-set-r5b6h 2 2 0 2 arc-runner-set-r5b6h 2 2 0 2 arc-runner-set-r5b6h 2 1 0 1 arc-runner-set-r5b6h 2 2 1 1 arc-runner-set-r5b6h 2 1 1 0 arc-runner-set-r5b6h 1 1 0 arc-runner-set-r5b6h 1 0 1 arc-runner-set-r5b6h 1 0 1 arc-runner-set-r5b6h 0 0 0 1. 2個のジョブが定義されたGitHub Actions Workflowが実行される 2. ListenerはGitHubとロングポーリングを張っている。GitHubからジョブ実行のメッセージ受信 3. ListenerはEphemeralRunnerSetの.Spec.ReplicasをWorkflowジョブの数だけスケールする 4. EphemeralRunnerSetの変更を検知したEphemeralRunnerSet Controllerは.Spec.Replicasの数だけ、 EphemeralRunnerを作成 5. EphemeralRunnerの作成を検知したEphemeralRunner Controllerは、 EphemeralRunnerの数だけRunner Podを作成 6. Runner Podは自分自身をGitHub Actionsに登録 登壇ではスキップ
  18. Actions Runner Controllerとは? | アーキテクチャ | スケール | EphemeralRunnerの動き Copyright © AP Communications Co.,

    Ltd. All rights reserved. 23 $ kubectl -n arc-runners get ephemeralrunner -w NAME GITHUB CONFIG URL RUNNERID STATUS JOBREPOSITORY JOBDISPLAYNAME arc-runner-set-r5b6h-runner-vnhvw <REPO URL> 429 Pending arc-runner-set-r5b6h-runner-md75q <REPO URL> 430 Pending arc-runner-set-r5b6h-runner-vnhvw <REPO URL> 429 Running arc-runner-set-r5b6h-runner-md75q <REPO URL> 430 Running arc-runner-set-r5b6h-runner-vnhvw <REPO URL> 429 Running apc-jnytnai0613/arc-test test2 arc-runner-set-r5b6h-runner-md75q <REPO URL> 430 Running apc-jnytnai0613/arc-test test1 arc-runner-set-r5b6h-runner-vnhvw <REPO URL> 429 Succeeded apc-jnytnai0613/arc-test test2 arc-runner-set-r5b6h-runner-vnhvw <REPO URL> 429 Succeeded apc-jnytnai0613/arc-test test2 arc-runner-set-r5b6h-runner-vnhvw <REPO URL> 429 Succeeded apc-jnytnai0613/arc-test test2 arc-runner-set-r5b6h-runner-md75q <REPO URL> 430 Succeeded apc-jnytnai0613/arc-test test1 arc-runner-set-r5b6h-runner-vnhvw <REPO URL> 429 Succeeded apc-jnytnai0613/arc-test test2 arc-runner-set-r5b6h-runner-md75q <REPO URL> 430 Succeeded apc-jnytnai0613/arc-test test1 arc-runner-set-r5b6h-runner-md75q <REPO URL> 430 Succeeded apc-jnytnai0613/arc-test test1 arc-runner-set-r5b6h-runner-md75q <REPO URL> 430 Succeeded apc-jnytnai0613/arc-test test1 1. 2個のジョブが定義されたGitHub Actions Workflowが実行される 2. ListenerはGitHubとロングポーリングを張っている。GitHubからジョブ実行のメッセージ受信 3. ListenerはEphemeralRunnerSetの.Spec.ReplicasをWorkflowジョブの数だけスケールする 4. EphemeralRunnerSetの変更を検知したEphemeralRunnerSet Controllerは.Spec.Replicasの数だけ、 EphemeralRunnerを作成 5. EphemeralRunnerの作成を検知したEphemeralRunner Controllerは、 EphemeralRunnerの数だけRunner Podを作成 6. Runner Podは自分自身をGitHub Actionsに登録 登壇ではスキップ
  19. Actions Runner Controllerとは? | 関連資料紹介 Copyright © AP Communications Co., Ltd. All

    rights reserved. • 過去登壇資料 ◦ Actions Runner Controller Deep Dive • ブログ記事 ◦ Actions Runner Controller Deep Dive!- アーキテクチャ編 – ◦ Actions Runner Controller Deep Dive!- 動作解説編 - ◦ Actions Runner Controller Deep Dive!- コード解説 前編 - ◦ Actions Runner Controller Deep Dive!- コード解説 後編 - 24
  20. Actions Runner Controllerを使ったPlatform Engineering | Platform Engineering と レバレッジ(再掲) Copyright © AP

    Communications Co., Ltd. All rights reserved. • Platform Engineeringとは ◦ Platform Engineeringとは、Platformを開発・運用する分野である。 この分野の目標は、ビジネスにレバレッジをもたらすために、システム全体の複雑性を管理する ことである。 • レバレッジとは ◦ Platform Engineeringの価値の核心は、レバレッジの概念である。 つまり、Platformチームの少数のエンジニアの仕事が、より大きな組織の仕事を減らすということで ある。プラットフォームは、2つの方法でレバレッジを実現する。 すなわち、アプリケーション・エンジニアがビジネス価値を創造する仕事に取り組む際の生産性を 高めることと、アプリケーション・エンジニアリング・チーム間の重複作業を排除することで エンジニアリング組織を効率化することである。 Platform Engineering: A Guide for Technical, Product, and People Leaders 今回はActions Runner Controllerを使って、Runnerの払い出しやメンテナンスの重複 作業の排除により、ビジネス価値創造の時間を捻出し、Platform Engineeringに おけるレバレッジを最大化させるPracticeをご紹介します。 26
  21. Actions Runner Controllerを使ったPlatform Engineering | Platform Engineering観点からのメリット Copyright © AP Communications Co.,

    Ltd. All rights reserved. 27 1. エンジニアリングの標準化 ◦ CI/CD実行環境の一元管理が可能 ◦ セキュリティポリシーの統一的な適用 ◦ Runner環境のバージョン管理と更新の自動化 2. 開発者体験(DX)の向上 ◦ 環境構築の自動化による開発者の負荷軽減 ◦ セルフサービスでのRunner環境調達 ◦ インフラ管理からの解放 ◦ 一貫した実行環境による再現性の向上 3. 運用効率の最適化 ◦ 自動スケーリングによるリソース効率の向上 ◦ 障害時の自動復旧機能 ◦ 監視・アラートの一元化(Kubernetes監視のみ) ◦ 運用タスクの自動化
  22. Actions Runner Controllerを使ったPlatform Engineering | Platform Engineering観点からのメリット Copyright © AP Communications Co.,

    Ltd. All rights reserved. 28 4. コスト管理の効率化 ◦ 使用状況に応じた動的なリソース調整 ◦ 未使用リソースの自動クリーンアップ ◦ クラウドコストの最適化 5. スケーラビリティの向上 ◦ 需要に応じた自動スケーリング ◦ マルチクラウド/ハイブリッドクラウド対応 ◦ 大規模開発組織への対応
  23. Actions Runner Controllerを使ったPlatform Engineering | 実際の組織 29 Copyright © AP Communications Co.,

    Ltd. All rights reserved. Platform Engineer SRE プロダクト開発者 プロダクト開発者 プロダクト開発者 プロダクトA プロダクトB プロダクトC 各プロダクト開発者に SREの知見や技術を 提供 各プロダクトを載せる セルフサービス化された プラットフォームを開発組織 に提供 開発組織 PlatformチームはSREと連携しながら、開発組織に対して、Platformの提供やインフラの標準 化、セルフサービス化を行う。この時、Platformの提供にはRunnerの払い出しも含まれる。 その他、Runnerに関する以下のタスクも発生する。 • Runnerイメージ管理 • Runnerのネットワーク管理 • CPUやメモリなどのリソース増強 気づきや改善ポイントを連携
  24. Actions Runner Controllerを使ったPlatform Engineering | Runner払い出しの苦しみ Copyright © AP Communications Co., Ltd.

    All rights reserved. 30 Runnerの共有すると、 リソースの競合が発生 する... 新規Runnerの払い出しには、VMや コンテナの準備、Runner化への スクリプト実行などめんどくさい... 日々増えるRunnerの払い 出しリクエスト... Jobの巨大化による リソース増強めんどくさい...
  25. Actions Runner Controllerを使ったPlatform Engineering | 苦しみからの解放 Copyright © AP Communications Co., Ltd.

    All rights reserved. 31 1. 新規Runnerの払い出しには、VMやコンテナの準備、Runner化へのスクリプト 実行などめんどくさい... ◦ HelmコマンドでRunnerが一発でデプロイできるので、払い出しが楽 2. Jobの巨大化によるリソース増強めんどくさい... ◦ Helmコマンド再実行で、垂直スケールも可能 3. Runnerの共有すると、リソースの競合が発生する... ◦ Job数に応じて、Runnerが水平スケールされるため、リソースの競合は発生し ない(Runner Podがスケジューリングされているノードのリソースは注意が 必要) 4. 日々増えるRunnerの払い出しリクエスト... ◦ Runnerの払い出しが楽に可能なため、Platformチームが他のタスクに 集中できる。アプリケーションチームの生産性UpするためWin-Win!
  26. Actions Runner Controllerを使ったPlatform Engineering | 苦しみからの解放 Copyright © AP Communications Co., Ltd.

    All rights reserved. 32 Platformチームにとっての「お客様」は開発チーム。 自動化により開発チームとの接点が一つ減るため、 開発チームからの意見や様々なリクエストを得る 機会は絶やさないようにしましょう。 Platformの効果計測などの対話の機会は減らさない ようにするべき!
  27. ユースケース | PortalやIDPからのRunnerの発行 Copyright © AP Communications Co., Ltd. All

    rights reserved. 34 Runner名 Runner イメージ 最大 Runner数 最小 Runner数 GitHub Repo URL CPU メモリ チケット発行ページ helm install "${INSTALLATION_NAME}" \ --namespace "${NAMESPACE}" \ --create-namespace \ --set githubConfigUrl="${GITHUB_CONFIG_URL}" \ --set githubConfigSecret.github_token="${GITHUB_PAT}" \ oci://ghcr.io/actions/actions-runner-controller-ch arts/gha-runner-scale-set コマンド実行し、Runner払い出し 社内PortalやInternal Developer Portal(IDP)に、Runner払い出し用のチケット発行ページを用 意しておき、入力オプションに沿ったHelmコマンドを自動発行。HelmはSDKも公開されている ので、CLIでなくコードに組み込むのもあり。
  28. ユースケース | チームごとの専用Runner Copyright © AP Communications Co., Ltd. All

    rights reserved. 35 Runner A Runner B Runner C チーム A チーム B チーム C 開発組織 Runner インストール ツール • Go 1.23.4 • AWS CLI 2.22.28 • GitHub CLI 2.64.0 Runner インストール ツール • .NET Core SDK: 8.0.111 • Azure CLI 1.0.1 • GitHub CLI 2.64.0 Runner インストール ツール • Rust 1.83.0 • Cargo 1.83.0 • Google Cloud CLI 504.0.1 • GitHub CLI 2.64.0 開発チームごとに、チームで必要なツールがインストールされたイメージのRunnerを払い出す。 この時ベースイメージはPlatformチームが承認したものを利用するようにルール作りするとGood!
  29. ユースケース | JobごとのRunnerの使い分け Copyright © AP Communications Co., Ltd. All

    rights reserved. 36 JobごとにRunnerを払い出し、重いJobはこのRunner、その他のJobはこのRunnerなどの使い分けを する。RunnerはJob実行時に払い出され、Job実行後はクリーンアップされるため、ノードのリソー ス効率化が期待できる。 jobs: test1: runs-on: arc-runner-set-a steps: - name: xxxxx なんかの軽い処理 test2: runs-on: arc-runner-set-b steps: - name: yyyyy なんかの激重処理 resources: requests: cpu: 100m memory: 512Mi limits: cpu: 250m memory: 768Mi resources: requests: cpu: 1 memory: 1Gi limits: cpu: 2 memory: 2Gi
  30. Actions Runner Controllerの制限事項 Copyright © AP Communications Co., Ltd. All

    rights reserved. 38 • Runner Imageには以下の最小限のソフトウエアしか入っていないため、独自に ソフトウエアをインストールするにはカスタムイメージをビルドする必要がある。 ◦ ランナー バイナリ ◦ ランナー コンテナー フック ◦ Docker (DinDモードに必要) • Runnerのラベルを変更不可 ◦ https://docs.github.com/ja/actions/hosting-your-own-runners/managing-self-hoste d-runners-with-actions-runner-controller/about-actions-runner-controller#using-arc -runners-in-a-workflow
  31. まとめ Copyright © AP Communications Co., Ltd. All rights reserved.

    40 Actions Runner Controllerの役割をPlatform Engineeringの文脈で整理すると、以下のようになります: • セルフサービスCI/CD基盤の実現 ◦ 開発チームが自律的にランナー環境を調達できる ◦ Platformチームによって承認された安全な実行環境を自動提供 ◦ ビルド環境のセットアップ時間を短縮 ◦ 開発者がインフラの詳細を気にすることなく、コードのビルドとテストに集中できる • CI/CDインフラの運用自動化 ◦ ランナーの自動スケーリング ◦ 障害時の自動復旧 ◦ リソースの自動クリーンアップ ◦ 標準化されたCI/CD実行環境の提供 • プラットフォームのセキュリティ統制 ◦ 全てのビルドが組織の承認済みベースイメージを使用することを強制 つまり、Actions Runner Controllerは「CI/CDのためのインフラを完全に自動化されたサービスとして提供する」 というPlatform Engineeringの重要な実装要素と言えます。開発者が複雑なインフラ管理から解放され、 ビジネスロジックの開発に集中できる環境を実現する手段として位置づけることができます。
  32. まとめ Copyright © AP Communications Co., Ltd. All rights reserved.

    41 Actions Runner Controllerで より良いPlatform Engineering ライフを!
  33. Copyright © AP Communications Co., Ltd. All rights reserved. 42

    エーピーコミュニケーションズは、新しい仲間を募集しています! カジュアル面談から可能なので、是非お話しましょう!