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>という命名規則を使用しています。
NOTE: これらのランナーマネージャーにはまだブルー/グリーンデプロイメントが設定されていませんが、
Issue 1138では
これらのランナーマネージャーマシンでのGitLab Runnerのアップグレードを容易にするためにブルー/グリーン
デプロイメントの使用について検討しています。現在は、gitlab.comとdev.gitlab.orgそれぞれに
単一の「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上に100GB SSDを備えたm6g.2xlargeマシンをスピンアップし、armv7アーキテクチャ(Raspberry Pi)向けのomnibus-gitlabGNU/Linuxパッケージのビルドに使用されます。GCPのT2Aマシンは 32ビット命令セットをサポートしていないため使用できませんが、 AWSのGravitonはこれをサポートしているためです。
メンテナンスタスク
前提条件:
- ノードへのアクセス権。
- Chef Vault内の特定フォルダーへのアクセス権。
- ops chef repoのmasterへのマージ権限。 これは通常チームメンバーには付与されていません。そのためMRを作成後、アクセス権を持つ人物 (主にInfrastructureチームのメンバー)にレビューとマージを依頼してください。
GitLab CIランナーのバージョン変更
Distributionチームのメンバー誰でも実行可能:
ランナーのバージョンを更新するchef repoへの新しいマージリクエストを作成します。
CIがパスし、別のチームメンバーによるレビューが完了していることを確認します。
変更をchef repoにマージします。
ノードにログインし、以下を実行します。
sudo /root/runner_upgrade.shこれによりアップグレードが実行されます。chef-clientサービスを停止し、ランナーを停止して マシンをクリーンアップし、chef-clientを実行して新しいバージョンを取得し、 最後にGitLab Runnerを再起動します。
