Actions Runner Controller を小規模チームで運用するのは大変? マネージドランナーとの比較
大変です。Actions Runner Controller(ARC)は Kubernetes のオペレーターで、動かすにはクラスタ、Helm チャート 2つ、自作のランナーイメージが要り、アップグレードのたびに全体を入れ直します。GitHub も ARC を「Kubernetes の基盤があり、Kubernetes の知識を持つチームのいる組織」に勧めています。
Skipbox は、ARC で手に入れたかったもの、つまり GitHub に分数を請求されないセルフホストランナーを、クラスタなしで使えるサービスです。ジョブはアカウント専用のマシンで動き、月 6,000 円の定額で実行時間は無制限。runs-on を 1行書き換えるだけです。
ARC を動かすとは、何を動かすことか
GitHub の ARC のドキュメントから、要るものを並べます。
| 要るもの | 中身 |
|---|---|
| Kubernetes クラスタ | 最初の前提条件です(Helm 3 も)。GitHub は本番のワークロードを分けて動かすよう勧めていて、ほかの用途と共有するクラスタは「セキュリティ上のリスクになりうる」としています |
| コントローラー | Helm チャート gha-runner-scale-set-controller。コントローラーの Pod、そのロール、ARC の CRD |
| ランナースケールセット | Helm チャート gha-runner-scale-set を、ランナーの種類ごとに。ジョブを待つリスナーの Pod と、ジョブごとに作られるランナーの Pod |
| 認証 | GitHub App か personal access token (classic) を、Kubernetes のシークレットとして保存 |
| ランナーイメージ | GitHub のイメージに入っているのは最小限のパッケージだけ。ほかのツールが要るなら、自分でイメージを作って配ります |
| コンテナモード | コンテナを使うジョブには dind(ランナーの Pod ごとに特権の Docker in Docker コンテナ)か kubernetes(永続ボリュームかライフサイクルフックが要り、container: のないジョブは既定で失敗)の設定が要ります |
| 台数の上限と下限 | スケールセットごとの minRunners と maxRunners。時間帯で変える機能はなく、変えるなら自分の cron で |
| ログとメトリクス | 本番の前に、コントローラー、リスナー、ランナーのログを集めて保存するよう GitHub は勧めています。メトリクスは Prometheus 形式 |
ランナーの Pod はジョブが終わると消えます。pull したイメージもダウンロードしたパッケージも一緒に消えるので、ジョブをまたいで残すには、ストレージを自分で設計して用意します。
運用にかかる手間
ARC は無料のソフトで、セルフホストランナーの分数を GitHub は請求しません。かかるのは毎月のノードの費用と、次の時間です。
- アップグレードは入れ直し。 Helm は ARC の CRD を更新できません。GitHub のアップグレード手順は、スケールセットをすべてアンインストール、片付けを待つ、ARC をアンインストール、CRD が変わっていれば削除、再インストール。クラスタが 1つなら、そのあいだジョブを受け取るランナーはありません。
- ランナーが古くなる。 新しい版が出てから 63日を過ぎたランナーに、GitHub はジョブを割り当てません。自作のイメージなら、期限までに作り直すのは自分です。
- クラスタの不具合は自分で調べる。 GitHub の ARC のサポート範囲に、Kubernetes の構築とネットワーク、Docker in Docker でのイメージのビルド、ストレージと永続ボリューム、クラスタのポリシー、イメージのキャッシュは入っていません。GitHub は、コンテナオーケストレーションに精通したスタッフを置くよう勧めています。
- Kubernetes そのもの。 ノードの更新、ランナーの下のノードのオートスケール、push のない時間にも動いているノードの請求。
数人のチームに、基盤の専任はいません。この時間は、プロダクトの開発から出ていきます。
GitHub ホストランナーのままだと、毎月いくらか
ARC を調べるきっかけは、分課金の請求のはずです。その請求と、Skipbox のプラン 1つを並べます。
| 月の実行時間(4 vCPU) | GitHub | Skipbox S | 毎月の差額 |
|---|---|---|---|
| 10,000分 | 参考値:2026年11月10日の為替レート・1ドル=158.22円。米ドルの料金を、このレートで円に換算した概算です。 | 6,000 円 | 参考値:2026年11月10日の為替レート・1ドル=158.22円。米ドルの料金を、このレートで円に換算した概算です。 |
| 20,000分 | 参考値:2026年11月10日の為替レート・1ドル=158.22円。米ドルの料金を、このレートで円に換算した概算です。 | 6,000 円 | 参考値:2026年11月10日の為替レート・1ドル=158.22円。米ドルの料金を、このレートで円に換算した概算です。 |
| 30,000分 | 参考値:2026年11月10日の為替レート・1ドル=158.22円。米ドルの料金を、このレートで円に換算した概算です。 | 6,000 円 | 参考値:2026年11月10日の為替レート・1ドル=158.22円。米ドルの料金を、このレートで円に換算した概算です。 |
| 常時稼働 | 参考値:2026年11月10日の為替レート・1ドル=158.22円。米ドルの料金を、このレートで円に換算した概算です。 | 6,000 円 | 参考値:2026年11月10日の為替レート・1ドル=158.22円。米ドルの料金を、このレートで円に換算した概算です。 |
GitHub の額は、GitHub Team に含まれる無料分を引いたあとの請求です。自分の分数はトップページの料金計算で出せます。ログインは要りません。
Skipbox:クラスタなしで、同じランナーを
| ARC | Skipbox | |
|---|---|---|
| 始めるのに要るもの | クラスタ、Helm、チャート 2つ、シークレット、イメージ | GitHub アプリを入れて runs-on を書き換える |
| 分数への GitHub の請求 | なし | なし(Skipbox のランナーもセルフホストランナーです) |
| 毎月の費用 | クラスタのノード。大きさと時間で変わる | 6,000 円・12,000 円・23,000 円の定額 |
| ジョブの中の Docker | 特権の Docker in Docker か、Kubernetes モード | VM の中でそのまま動く。ubuntu-latest と同じ |
| ジョブをまたぐキャッシュ | Pod と一緒に消える。残すならストレージを自作 | マシンのディスクに残る |
| アップグレード | アンインストールして入れ直す | Skipbox が行う |
| ランナーが壊れたとき | コントローラーとリスナーのログを自分で読む | ジョブのたびに検査し、通らないマシンは自動で作り直す |
定額で、実行時間は無制限
| プラン | マシン | 月額 |
|---|---|---|
| S | 4 vCPU・メモリ 16 GB | 6,000 円 |
| M | 8 vCPU・メモリ 16 GB | 12,000 円 |
| L | 16 vCPU・メモリ 32 GB | 23,000 円 |
従量課金はありません。同時に動かすジョブを増やすときはプランを足し、プランのマシンを超えて重なったジョブは順番を待ちます。
キャッシュが残るから速い
アカウント専用のマシンが、ジョブのあとも残ります。Docker のイメージとビルドキャッシュ、パッケージのキャッシュ、setup-node などで入れたツールがディスクに残り、次のジョブは最初からそれを使えます。キャッシュに使えるディスクは GitHub 公式の 7倍以上。空の Pod で始まるランナーは、これを毎回ダウンロードし直します。
スケールセットもリスナーも要らない
ジョブがキューに入ると、Skipbox がそのジョブ 1つのためのランナーを登録し、終われば削除します。ランナーのアプリ、Ubuntu 24.04、Docker、Node.js、Python の更新も Skipbox が行います。
移行は runs-on を 1行書き換えるだけ
jobs:
test:
runs-on: skipbox # ubuntu-latest やスケールセットの名前から書き換える
steps:
- uses: actions/checkout@v4
- run: npm ci && npm test
- Skipbox に GitHub でログインする
- Skipbox の GitHub アプリを入れて、使うリポジトリを選ぶ
runs-onを書き換えて push する
Linux のジョブはそのまま動きます。パブリックリポジトリでもプライベートリポジトリでも使えます。
セキュリティ
- マシンはアカウントごとの専用です。ほかの会社のジョブと同じマシンで動くことはありません。
- ジョブが終わるたびに、ランナーの認証情報、プロセスとコンテナをすべて消します。2026年11月13日からは、チェックアウトしたコードと Cargo のビルド結果(
target/)を専用のマシンに残し、次のジョブで使います。「毎回クリーン」なら、ジョブごとに新しいマシンで動きます。 - 書き込み権限のない人のコード(フォークからのプルリクエストなど)は、使い捨ての新しいマシンで動きます。
くわしくはジョブの分離のしくみにあります。
クラスタを組む前に、自分のジョブで試す
カード不要で、7日間かジョブの合計 3,000分まで無料です。ジョブを 1つ runs-on: skipbox に替えて、クラスタを組まずに済むかを確かめてください。
よくある質問
Actions Runner Controller を小規模チームで運用するのは大変?
大変です。ARC は Kubernetes のオペレーターなので、クラスタの運用、Helm チャート 2つのインストール、ランナーイメージの自作、アップグレードのたびの入れ直しを自分たちで持ちます。GitHub 自身が、コンテナオーケストレーションに精通したスタッフを置くよう勧めています。Skipbox なら運用するものはなく、GitHub アプリを入れて runs-on を 1行書き換えるだけです。
Actions Runner Controller とマネージドランナー、小規模チームにはどちらが向いている?
マネージドランナーです。GitHub は ARC を、Kubernetes の基盤と知識を持つ組織に勧めています。Skipbox は、ARC と同じく GitHub の分数を使わないセルフホストランナーを、クラスタなしで提供します。4 vCPU のマシンが月 6,000 円の定額で、実行時間は無制限です。
ARC の費用はいくら?
ARC 自体は無料で、セルフホストランナーの分数を GitHub は請求しません。かかるのは、Kubernetes クラスタのノードの費用と、インストール、アップグレード、トラブル対応に使う人の時間です。Skipbox はマシンと運用を定額にまとめています。月 6,000 円・12,000 円・23,000 円で 4・8・16 vCPU、実行時間は無制限です。
ARC のアップグレードはどうやる?
入れ直します。Helm は ARC の CRD を更新できないので、GitHub の手順は、ランナースケールセットをすべてアンインストールし、片付けを待ち、ARC をアンインストールし、CRD が変わっていれば削除して、もう一度インストールする、です。イメージの中のランナーも、新しい版が出てから 63日を過ぎるとジョブが割り当てられなくなります。Skipbox では、ランナーもイメージも Skipbox が更新します。
GitHub Actions のランナーを自動で増減させるのに Kubernetes は必要?
要りません。ARC は Kubernetes 向けの方法で、GitHub のドキュメントにはスケールセットのクライアントや Webhook で自作する方法もあります。Skipbox ではどれも要りません。ジョブがキューに入るたびに Skipbox がそのジョブ用のランナーを登録し、同時に動く数はプランで決まり、重なったジョブは順番を待ちます。
Skipbox では Docker in Docker なしで Docker のビルドができる?
できます。Skipbox のマシンは Docker が入った VM なので、docker build、docker run、サービスコンテナ、コンテナジョブが ubuntu-latest と同じように動きます。ARC では先にコンテナモードを選びます。特権コンテナで動かす Docker in Docker か、コンテナを指定しないジョブが既定で失敗する Kubernetes モードです。
2026年11月14日 更新