GitLab Runnerのオートスケール
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
GitLab Runnerのオートスケールを使用すると、パブリッククラウドインスタンスでRunnerを自動的にスケールできます。オートスケーラーを使用するようにRunnerを設定すると、クラウドインフラストラクチャ上で複数のジョブを同時に実行することで、CI/CDジョブのワークロード増加に対処できます。
パブリッククラウドインスタンスのオートスケールオプションに加えて、次のコンテナオーケストレーションソリューションを使用して、Runnerフリートをホストおよびスケールできます。
- Red Hat OpenShift Kubernetesクラスター
- Kubernetesクラスター: AWS EKS、Azure、オンプレミス
- AWS FargateのAmazon Elastic Container Servicesクラスター
Runnerマネージャーを設定する
GitLab Runnerのオートスケール(Docker Machine AutoscalingソリューションとGitLab Runner Autoscalerの両方)を使用するようにRunnerマネージャーを設定する必要があります。
Runnerマネージャーは、オートスケール用に複数のRunnerを作成するRunnerの一種です。GitLabに対しジョブを継続的にポーリングし、パブリッククラウドインフラストラクチャと連携して、ジョブを実行するための新しいインスタンスを作成します。Runnerマネージャーは、GitLab Runnerがインストールされているホストマシン上で実行する必要があります。DockerとGitLab Runnerがサポートするディストリビューション(Ubuntu、Debian、CentOS、RHELなど)を選択します。
- Runnerマネージャーをホストするインスタンスを作成します。これはスポットインスタンス(AWS)またはスポット仮想マシン(GCP、Azure)であってはなりません。
- インスタンスにGitLab Runnerをインストールします。
- クラウドプロバイダーの認証情報をRunnerマネージャーのホストマシンに追加します。
コンテナ内でRunnerマネージャーをホストできます。GitLab.comでホストされるRunnerの場合、Runnerマネージャーは仮想マシンインスタンスでホストされます。
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=eu-central-1",
"amazonec2-vpc-id=vpc-xxxxx",
"amazonec2-subnet-id=subnet-xxxxx",
"amazonec2-zone=x",
"amazonec2-use-private-address=true",
"amazonec2-security-group=xxxxx",
]認証情報ファイルはオプションです。AWS環境のRunnerマネージャーにはAWSアイデンティティおよびアクセス管理(IAM)インスタンスプロファイルを使用できます。AWSでRunnerマネージャーをホストしない場合は、認証情報ファイルを使用できます。
耐障害性のあるデザインを実装する
耐障害性のあるデザインを作成し、Runnerマネージャーホストの障害を防ぐには、同じRunnerタグを使用する少なくとも2つのRunnerマネージャーから始めます。
たとえばGitLab.comでは、LinuxでホストされるRunnerに対して複数のRunnerマネージャーが設定されています。各Runnerマネージャーにはタグsaas-linux-small-amd64があります。
組織のCI/CDワークロードの効率性とパフォーマンスのバランスを取るためにオートスケールパラメータを調整するときには、可観測性とRunnerフリートのメトリクスを使用します。
Runnerのオートスケールexecutorを設定する
Runnerマネージャーを設定したら、オートスケールに固有のexecutorを設定します:
Instance executorとDocker Autoscaling executorを使用してください。これらのexecutorは、Docker Machineオートスケーラーに代わるテクノロジーを構成しています。