# Actions Runner Controller を小規模チームで運用するのは大変？ マネージドランナーとの比較

> Actions Runner Controller（ARC）は、自分の Kubernetes クラスタで動かす無料のソフトです。Helm チャート 2つ、自作のランナーイメージ、アップグレードのたびの入れ直しが要ります。Skipbox なら、同じく GitHub の請求がないランナーを、クラスタなしで月 6,000 円の定額で使えます。runs-on を 1行書き換えるだけです。

大変です。Actions Runner Controller（ARC）は Kubernetes のオペレーターで、動かすにはクラスタ、Helm チャート 2つ、自作のランナーイメージが要り、アップグレードのたびに全体を入れ直します。GitHub も ARC を「Kubernetes の基盤があり、Kubernetes の知識を持つチームのいる組織」に勧めています。

Skipbox は、ARC で手に入れたかったもの、つまり GitHub に分数を請求されないセルフホストランナーを、クラスタなしで使えるサービスです。ジョブはアカウント専用のマシンで動き、月 6,000 円の定額で実行時間は無制限。`runs-on` を 1行書き換えるだけです。

- ARC に要るもの: Kubernetes クラスタ、Helm チャート 2つ、自作のランナーイメージ、アップグレードのたびの入れ直し
- Skipbox に要るもの: GitHub アプリを入れて `runs-on` を書き換えるだけ。マシンもイメージも更新も Skipbox が持ちます
- 4 vCPU を月 20,000分使うと、GitHub は 約 35,120 円、Skipbox は 6,000 円

**GitHub Actions を月額固定・使い放題に** Skipbox は、アカウント専用のマシンで GitHub Actions のジョブを動かします。何分動かしても月 6,000 円。ジョブが終わっても Docker のレイヤーと依存パッケージのキャッシュが残るので、次のジョブはすぐ始まります。

4 vCPU のランナーを月 20,000分 使うと、GitHub 約 35,120 円 → Skipbox 6,000 円。毎月 約 29,120 円お得。

移行は `runs-on: skipbox` に 1行書き換えるだけです。

[7日間無料で試す](https://app.skipbox.dev/sign-in?ref=g-actions-runner-controller-vs-managed-runners-ja)

## ARC を動かすとは、何を動かすことか

GitHub の [ARC のドキュメント](https://docs.github.com/ja/actions/concepts/runners/actions-runner-controller)から、要るものを並べます。

| 要るもの | 中身 |
|---|---|
| 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 の[アップグレード手順](https://docs.github.com/ja/actions/how-tos/manage-runners/use-actions-runner-controller/deploy-runner-scale-sets#upgrading-arc)は、スケールセットをすべてアンインストール、片付けを待つ、ARC をアンインストール、CRD が変わっていれば削除、再インストール。クラスタが 1つなら、そのあいだジョブを受け取るランナーはありません。
- **ランナーが古くなる。** 新しい版が出てから 63日を過ぎたランナーに、GitHub はジョブを割り当てません。自作のイメージなら、期限までに作り直すのは自分です。
- **クラスタの不具合は自分で調べる。** GitHub の [ARC のサポート範囲](https://docs.github.com/ja/actions/concepts/runners/support-for-arc)に、Kubernetes の構築とネットワーク、Docker in Docker でのイメージのビルド、ストレージと永続ボリューム、クラスタのポリシー、イメージのキャッシュは入っていません。GitHub は、コンテナオーケストレーションに精通したスタッフを置くよう勧めています。
- **Kubernetes そのもの。** ノードの更新、ランナーの下のノードのオートスケール、push のない時間にも動いているノードの請求。

数人のチームに、基盤の専任はいません。この時間は、プロダクトの開発から出ていきます。

## GitHub ホストランナーのままだと、毎月いくらか

ARC を調べるきっかけは、分課金の請求のはずです。その請求と、Skipbox のプラン 1つを並べます。

| 月の実行時間（4 vCPU） | GitHub | Skipbox S | 毎月の差額 |
|---|---|---|---|
| 10,000分 | 約 16,140 円 | 6,000 円 | **約 10,140 円** |
| 20,000分 | 約 35,120 円 | 6,000 円 | **約 29,120 円** |
| 30,000分 | 約 54,110 円 | 6,000 円 | **約 48,110 円** |
| 常時稼働 | 約 79,170 円 | 6,000 円 | **約 73,170 円** |

GitHub の額は、GitHub Team に含まれる無料分を引いたあとの請求です。自分の分数は[トップページの料金計算](https://skipbox.dev/?lang=ja&ref=g-actions-runner-controller-vs-managed-runners-ja#cost)で出せます。ログインは要りません。

## 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行書き換えるだけ

```yaml
jobs:
  test:
    runs-on: skipbox # ubuntu-latest やスケールセットの名前から書き換える
    steps:
      - uses: actions/checkout@v4
      - run: npm ci && npm test
```

1. Skipbox に GitHub でログインする
2. Skipbox の GitHub アプリを入れて、使うリポジトリを選ぶ
3. `runs-on` を書き換えて push する

Linux のジョブはそのまま動きます。パブリックリポジトリでもプライベートリポジトリでも使えます。

## セキュリティ

- マシンはアカウントごとの専用です。ほかの会社のジョブと同じマシンで動くことはありません。
- ジョブが終わるたびに、ランナーの認証情報、プロセスとコンテナをすべて消します。2026年11月13日からは、チェックアウトしたコードと Cargo のビルド結果（`target/`）を専用のマシンに残し、次のジョブで使います。「毎回クリーン」なら、ジョブごとに新しいマシンで動きます。
- 書き込み権限のない人のコード（フォークからのプルリクエストなど）は、使い捨ての新しいマシンで動きます。

くわしくは[ジョブの分離のしくみ](https://docs.skipbox.dev/ja/isolation)にあります。

## クラスタを組む前に、自分のジョブで試す

カード不要で、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 更新 · https://skipbox.dev/ja/guides/actions-runner-controller-vs-managed-runners
