Actions Runner Controller(ARC)とは?Kubernetes 上の runner
Actions Runner Controller(ARC)とは、self-hosted な GitHub Actions runner を自前のクラスタ内で pod として実行・autoscale する、オープンソースの Kubernetes operator です。
ARC は、Kubernetes 上で大規模に runner を self-host する人気の方法です。runner のキャパシティを需要に応じてスケールする pod に変えます - 強力ですが、CI フリートを、いまやあなたが運用しなければならない Kubernetes ワークロードにします。
ARC が行うこと
ARC はキューに溜まった job を GitHub で監視し、それらを処理する ephemeral な runner pod を作成し、負荷時にスケールアップし、アイドル時にゼロまでスケールダウンします。各 runner は、クラスタのノードにスケジュールされる pod です。
チームが採用する理由
- hosted の分単位の価格なしで、ephemeral かつ autoscale される runner。
- 自分のネットワークとセキュリティ境界の内側に存在する runner。
- 既存の Kubernetes プラットフォーム投資の再利用。
運用の現実
ARC は Kubernetes の運用をすべて引き継ぎます。クラスタのアップグレード、ノードの autoscaling、controller の更新、イメージ保守、スケーリングのチューニング、pod スケジューリングのデバッグ。runner は hosted の価格からは「無料」ですが、プラットフォームエンジニアリングの時間の面では高価です。
ARC vs マネージド runner
ARC とマネージドプラットフォームは同じ目標 - 安価で ephemeral、autoscale される runner - を狙いますが、ARC は Kubernetes 上のセルフサービスであり、マネージドプラットフォームはあなたに代わって運用されます。選択は、フリートを運用したいかどうかです。
運用ゼロという代替案
Latchkey は、運用するクラスタなしで ephemeral、autoscale、warm pool 化された runner を届けます - Kubernetes の運用なしの ARC の結果、通常 GitHub-hosted より約 70% 安く。
重要なポイント
- ARC は、self-hosted な GitHub runner を autoscale する Kubernetes operator です。
- 自前のクラスタ内で ephemeral かつ autoscale される runner を提供します。
- Kubernetes の運用オーバーヘッドをすべて負います。
- マネージド runner は運用ゼロで同じ結果に到達します。