GitLab Runner オートスケール

GitLab Runnerのオートスケーリングを使用すると、公開クラウドインスタンス上でRunnerを自動的にスケールさせることができます。オートスケーラーを使用するようにRunnerを設定すると、複数のジョブを同時に実行するためにクラウドインフラストラクチャを活用することで、CI/CDジョブの負荷の増加を管理することができます。

公開クラウドインスタンスのオートスケーリングオプションに加えて、ランナーフリートのホスティングとスケーリングに以下のコンテナオーケストレーションソリューションを使用できます。

  • Red Hat OpenShift Kubernetes クラスター
  • Kubernetesクラスタ:AWS EKS、Azure、オンプレミス
  • AWS Fargate上のAmazon Elastic Container Servicesクラスター

GitLab Runnerオートスケーラー

GitLab Runner AutoscalerはDocker Machineをベースとしたオートスケーリング技術の後継です。GitLab Runner Autoscalerのコンポーネントは以下の通りです:

  • Taskscaler:オートスケーリングロジックの管理、帳簿管理、クラウドプロバイダのオートスケーリンググループを使用するRunnerインスタンスのフリート作成。
  • フリート:クラウドプロバイダーの仮想マシンの抽象化。
  • クラウド・プロバイダー・プラグイン:対象となるクラウドプラットフォームへのAPIコールを処理し、プラグイン開発フレームワークを使用して実装されます。

Overview of GitLab Next Runner Autoscaling

GitLab Runner Autoscalerがサポートする公開クラウドインスタンス

以下のオートスケーリングオプションは、公開クラウドのコンピュートインスタンスでサポートされています。

 ネクスト・ランナー・オートスケーラー(エクスペリメント)GitLab Runner Dockerマシンオートスケーラー(GA)
Amazon Web Services EC2インスタンス {チェックサークル}はい {チェックサークル}はい
Google Compute Engine {チェックサークル}はい {チェックサークル}はい
Microsoft Azure仮想マシン {チェックサークル}はい {チェックサークル}はい

GitLab Runner Autoscaler対応プラットフォーム

エクゼキュータLinuxmacOSWindows
インスタンス Executor {チェックサークル}はい {チェックサークル}はい {チェックサークル}はい
Docker Autoscalerエクゼキュータ {チェックサークル}はい {点線円}いいえ {チェックサークル}はい

ランナーマネージャーの設定

Docker Machine AutoscalingソリューションとGitLab Runner Autoscalerの両方でGitLab Runner Autoscalingを使用するには、ランナーマネージャを設定する必要があります。

ランナーマネージャーは、オートスケーリングのために複数のランナーを作成するランナーの一種です。継続的にGitLabにジョブのポーリングを行い、ジョブを実行するための新しいインスタンスを作成するために公開クラウドインフラストラクチャと対話します。ランナー・マネージャーは、GitLab Runnerがインストールされたホスト・マシン上で実行する必要があります。Ubuntu、Debian、CentOS、RHELなど、DockerとGitLab Runnerがサポートしているディストリビューションを選択してください。

  1. Runner Managerをホストするインスタンスを作成します。これはスポットインスタンス(AWS)、またはスポット仮想マシン(GCP、Azure)であってはなりません
  2. インスタンスにGitLab Runner をインストールします。
  3. クラウドプロバイダーの認証情報を Runner Manager のホストマシンに追加します。

GitLab Runner Autoscalerの認証情報の設定例

## credentials_file

[default]
aws_access_key_id=__REDACTED__
aws_secret_access_key=__REDACTED__

GitLab Runner Docker Machine Autoscalingの認証情報設定例

このスニペットはconfig.toml ファイルの runners.machine セクションにあります。

  [runners.machine]
    IdleCount = 1
    IdleTime = 1800
    MaxBuilds = 10
    MachineDriver = "amazonec2"
    MachineName = "gitlab-docker-machine-%s"
    MachineOptions = [
      "amazonec2-access-key=XXXX",
      "amazonec2-secret-key=XXXX",
      "amazonec2-region=us-central-1",
      "amazonec2-vpc-id=vpc-xxxxx",
      "amazonec2-subnet-id=subnet-xxxxx",
      "amazonec2-zone=x",
      "amazonec2-use-private-address=true",
      "amazonec2-security-group=xxxxx",
    ]

Runner autoscaling Executorの設定

Runner Managerを設定した後、オートスケーリング専用のエクゼキュータを設定します:

note
Instance Executor と Docker Autoscaling Executor は Docker Machine autoscaler を置き換える技術なので、使うべきです。