Distribution チームインフラとメンテナンス - ビルドインフラ
共通リンク
ビルドインフラ
Distribution は GitLab CI を使用して GNU/Linux パッケージ、Docker イメージ、AWS AMI、およびユーザーのマシンに GitLab をインストールするために使用できるその他のアーティファクトをビルドします。これらのビルドプロセスの多くはより高い計算能力とリソースを必要とするため、Distribution はこれらのリソースを提供するために独自のインフラを維持しています。
ランナーマネージャーマシン
Distribution チームは 2 台のランナーマネージャーマシンを維持しています。1 台は GitLab.com 用、もう 1 台は dev.gitlab.org 用です。ランナーマネージャーの設定は chef-repo プロジェクトで管理されており、これらの設定と共に使用するシークレットは Vault で管理されています。
ランナーは runners-manager-distribution-(com|dev)-(blue|green)-<count> という構文で命名されています。
注意: これらのランナーマネージャーにはまだブルー/グリーンデプロイが設定されていませんが、Issue 1138 でこれらのランナーマネージャーマシンの GitLab Runner のアップグレードを容易にするためのブルー/グリーンデプロイの使用について議論されています。現在、gitlab.com と dev.gitlab.org のそれぞれに対して、1 台の「blue」ランナーマネージャーのみが利用可能です。
ビルドマシン
com と dev の両ランナーは、autoscale 設定を持つ docker-machine エグゼキューターを使用して同一のマシンを起動します。それぞれが起動するマシンの種類は以下のとおりです:
distribution-(com|dev)-amd64-runner-gcp- これらのランナーは GCP で 100GB SSD 付きのn1-highcpu-32マシンを起動し、amd64アーキテクチャ用のomnibus-gitlabGNU/Linux パッケージのビルドに使用されます。distribution-(com|dev)-arm64-runner-gcp- これらのランナーは GCP で 100GB SSD 付きのt2a-standard-8マシンを起動し、arm64アーキテクチャ用のomnibus-gitlabGNU/Linux パッケージのビルドに使用されます。distribution-(com|dev)-arm64-runner-aws- これらのランナーは AWS で 100 GB SSD 付きのm6g.2xlargeマシンを起動し、armv7アーキテクチャ(Raspberry Pi)用のomnibus-gitlabGNU/Linux パッケージのビルドに使用されます。GCP の T2A マシンがarmv7パッケージのビルドに使用される 32 ビット命令セットをサポートしていない のに対し、AWS の Graviton はサポートしているため使用されています。
メンテナンスタスク
要件:
- ノードへのアクセス権。
- Chef Vault 内の特定フォルダへのアクセス権。
- ops chef repo の master へのマージ権限。これは通常チームメンバーには付与されていません。そのため MR を開いた後、アクセス権を持つ人(主にインフラチームのメンバー)にレビューとマージを依頼してください。
GitLab CI ランナーのバージョン変更
Distribution チームの任意のメンバーが実行します:
ランナーバージョンを更新する chef repo への新しいマージリクエストを作成します。
CI がパスし、MR が別のチームメンバーにレビューされていることを確認します。
変更を chef repo にマージします。
ノードにログインして以下を実行し、
sudo /root/runner_upgrade.shアップグレードを実行します。これにより chef-client サービスが停止し、ランナーが停止してマシンがクリーンアップされ、chef-client が新しいバージョンを取得するために実行され、最後に GitLab Runner が再起動します。
