GitLab Runnerのインストール
(トップページはこちら) - (GitLab Runnerを始める)
CI/CDパイプラインを構築する際、「どこでジョブを実行するか」は重要な選択です。GitLab Runnerは、この問いに対する柔軟な答えを提供します。単一のバイナリファイルとして動作し、Linux、Windows、macOS、さらにはメインフレームまで、ほぼすべての環境で実行可能です。本記事では、あなたの環境に最適なインストール方法を見つけるための情報を提供します。
対応環境: GitLab.com、GitLab Self-Managed、GitLab Dedicated
利用可能プラン: Free、Premium、Ultimate
1. まず理解すべきこと - GitLab Runnerの設計思想
GitLab Runnerは、GitLabで定義されたCI/CDジョブを実際に実行するエージェントです。重要なのは、GitLabインスタンスとは別のマシンにインストールするという原則です。
これには明確な理由があります。CI/CDジョブは、ビルド、テスト、デプロイといった重い処理を実行します。これらをGitLabサーバーと同じマシンで実行すると、リソースの競合が発生し、GitLab全体のパフォーマンスが低下します。分離することで、セキュリティとパフォーマンスの両面でメリットが得られます。
2. あなたの環境はどれ? - インストール方法の選択
まず、あなたの環境に応じたインストール方法を確認しましょう。
3. コンテナ環境でのインストール
モダンなインフラストラクチャを使用している場合、コンテナベースのインストールが最適です。
3.1. Docker - 最速で始める
Dockerを使用する場合、数分でGitLab Runnerを起動できます。開発環境や小規模なプロジェクトに最適です。
適している場合:
- 単一ホストでRunnerを実行したい
- 迅速にセットアップしたい
- Docker環境がすでに整っている
3.2. Kubernetes環境 - スケーラブルな運用
Kubernetesクラスタで運用する場合、3つの選択肢があります。
Helm Chart: 設定をYAMLファイルで管理し、バージョン管理が容易です。Kubernetesに慣れているチームに最適です。
GitLab Agent for Kubernetes: GitLabとKubernetesクラスタ間の接続をセキュアに保ちます。プルベースのアーキテクチャにより、クラスタへの直接アクセスが不要です。
GitLab Operator: Kubernetes Operatorパターンを使用し、GitLab Runnerのライフサイクルを完全に自動化します。大規模環境や複数クラスタを管理する場合に有効です。
4. OS直接インストール
コンテナを使用しない場合、各OSに応じたインストール方法があります。
4.1. Linux - 2つのアプローチ
GitLabリポジトリからのインストール:
- パッケージマネージャー(apt、yum、dnfなど)を使用
- 自動更新が可能
- 推奨される方法
手動インストール:
- バイナリを直接ダウンロード
- カスタマイズが必要な環境向け
- 特殊な要件がある場合に選択
4.2. その他のOS
- FreeBSD: BSD系UNIXでの運用。安定性を重視する環境に
- macOS: ローカル開発環境やiOS/macOSアプリのビルドに
- Windows: Windows環境でのビルドやテストに必須
- z/OS: メインフレーム環境でのCI/CD実行
4.3. Bleeding-edgeバイナリ
最新の開発版を試したい場合、Bleeding-edgeバイナリが利用できます。新機能をいち早く検証できますが、本番環境での使用は推奨されません。
また、上記以外のOSでも、Goバイナリをコンパイルできる環境であれば動作します。
5. サポートされているアーキテクチャ
GitLab Runnerは、以下のCPUアーキテクチャに対応しています。
| アーキテクチャ | 用途例 |
|---|---|
| x86 | レガシーシステム |
| AMD64 | 一般的なサーバー、デスクトップ |
| ARM64 | Apple Silicon、AWS Graviton、最新サーバー |
| ARM | Raspberry Pi、組み込みデバイス |
| s390x | IBM System zメインフレーム |
| ppc64le | IBM POWERプロセッサ |
| riscv64 | RISC-V搭載デバイス |
| loong64 | LoongArchプロセッサ |
この幅広い対応により、エッジコンピューティングからエンタープライズメインフレームまで、一貫したCI/CD環境を構築できます。
6. システム要件 - 何を考慮すべきか
GitLab Runnerのシステム要件は、「最低限これだけ必要」という固定値ではありません。以下の要素を総合的に判断する必要があります。
6.1. 負荷を決定する5つの要素
6.2. 実践的な考え方
小規模プロジェクト(開発者1-5人):
- 2-4 CPU、4-8GB RAM程度から開始
- 同時実行ジョブ数を2-3に制限
中規模プロジェクト(開発者10-30人):
- 4-8 CPU、16-32GB RAM
- 同時実行ジョブ数を5-10に設定
- 複数Runnerの分散配置を検討
大規模プロジェクト(開発者30人以上):
- Kubernetes環境での動的スケーリング
- 専用のRunner群を用途別に分離
- モニタリングとオートスケーリングの導入
6.3. GitLab.comホストランナー
GitLab.comを使用している場合、自前でRunnerを用意せず、GitLabが提供するホストランナーを利用できます。さまざまなマシンタイプが用意されており、プロジェクトの要件に応じて選択可能です。
7. FIPS準拠環境での運用
政府機関や金融機関など、厳格なセキュリティ基準が求められる環境では、FIPS 140-2準拠が必要になります。
7.1. 現在の対応状況
対応環境:
- OS: Red Hat Enterprise Linux (RHEL)
- アーキテクチャ: AMD64
技術的背景:
- Red Hat Goコンパイラでビルド
- FIPS 140-2検証済み暗号化ライブラリを使用
- ベースイメージ: UBI-8 minimal image
7.2. 導入時の注意点
FIPS準拠のGitLab Runnerを使用する場合、RHEL自体をFIPSモードに切り替える必要があります。これはシステム全体に影響を与えるため、事前に十分な検証が必要です。
7.3. 今後の展開
他のディストリビューション(Ubuntu、Debianなど)やアーキテクチャ(ARM64など)への対応は、コミュニティで議論されています(issue 28814)。セキュリティ要件とプラットフォームの両立が必要な場合は、このissueをウォッチすることをお勧めします。
8. 実際の選択例
具体的なシナリオに基づいた選択例を示します。
8.1. スタートアップ企業(開発者5人、Webアプリケーション)
選択: Docker + Linux(Ubuntu)
理由:
- 迅速なセットアップが可能
- インフラコストを抑えられる
- 将来的にKubernetesへの移行も容易
8.2. 中規模SaaS企業(開発者30人、マイクロサービス)
選択: Kubernetes + Helm Chart
理由:
- 複数サービスの並列ビルドに対応
- 宣言的な設定管理でインフラをコード化
- スケーラビリティの確保
8.3. 金融機関(開発者100人、FIPS準拠必須)
選択: RHEL + FIPS準拠バイナリ + Kubernetes
理由:
- セキュリティ要件を満たす
- 大規模チームの並列作業に対応
- エンタープライズサポートの利用
8.4. iOS/macOSアプリ開発チーム
選択: macOS + 手動インストール
理由:
- Xcode環境が必須
- Apple Silicon(ARM64)対応
- ローカルビルドとCI環境の統一
9. インストール後の次のステップ
GitLab Runnerのインストールは、CI/CD環境構築の第一歩に過ぎません。実際の運用では、以下の設定が必要になります。
- Runnerの登録: GitLabインスタンスにRunnerを登録
- Executorの選択: Shell、Docker、Kubernetesなど、ジョブの実行方法を決定
- タグの設定: 特定のジョブを特定のRunnerで実行するための識別子
-
同時実行数の調整:
concurrentパラメータでリソース使用を制御 - キャッシュの設定: ビルド時間短縮のための依存関係キャッシュ
これらの設定により、効率的なCI/CDパイプラインが完成します。
10. まとめ - 柔軟性こそがGitLab Runnerの本質
GitLab Runnerの最大の特徴は、その環境非依存性です。8つのCPUアーキテクチャ、5つのOS、4つのコンテナプラットフォームに対応し、さらにFIPS準拠環境まで網羅しています。
この柔軟性により、以下が実現できます。
- 段階的な移行: 小規模から始めて、成長に応じてスケール
- ハイブリッド環境: オンプレミスとクラウドの併用
- 特殊要件への対応: メインフレームやセキュリティ準拠環境
- コスト最適化: 既存インフラの有効活用
あなたのプロジェクトの規模、セキュリティ要件、インフラ環境に応じて、最適なインストール方法を選択してください。GitLab Runnerは、その選択肢の広さで、あらゆるニーズに応えます。