サポートアーキテクチャ
This is a Controlled Document
In line with GitLab’s regulatory obligations, changes to controlled documents must be approved or merged by a code owner. All contributions are welcome and encouraged.このドキュメントは GitLab.com の機能をサポートするアーキテクチャを対象としていますが、ユーザー向けではなく、インフラチームが管理しています。
dev.gitlab.org
Dev.gitlab.org は Azure でホストされている GitLab インスタンスです。このインスタンスは、すべての GitLab コンポーネントの main ブランチから作成されたナイトリービルドの vanilla GitLab Community Edition パッケージを実行しています。インスタンスは、gitlab-server クックブックで定義された cron を使用して毎日自動的にアップグレードされ、chef-repo のロールオーバーライドが設定されています(GitLab 内部のみ)。
主な用途は、公式 Docker イメージと GitLab パッケージのビルドであり、これらはその後公式リリースパイプラインの一部として使用されます。
また、ユーザーが dev.gitlab.org アカウントを使用して他のサービスにサインインできるように、OAuth 認証サービスとしても使用されています。例えば:
- Sentry
- バージョンアプリ

ソース、GitLab 内部使用のみ
アーキテクチャ
Dev.gitlab.org は単一の VM 上で動作し、公式 Linux パッケージにバンドルされているデータベース、Redis などのサービスを使用しています。リポジトリは専用の SSD に保存され、アーティファクト、LFS オブジェクト、コンテナレジストリオブジェクト、アップロードは GCS に保存されています。
データベースバックアップとリポジトリバックアップは、パッケージアップグレード前に実行される組み込みパッケージのバックアップ手順を使用して自動的に作成されます。 これらのバックアップは、公式 Linux パッケージの自動バックアップ機能を使用して、特定の chef ロールで設定された AWS S3 バケットに自動的にアップロードされます。

ソース、GitLab 内部使用のみ
ops.gitlab.net
Ops.gitlab.net は GCP でホストされている GitLab インスタンスです。このインスタンスは、公式リリースチャンネルからの vanilla GitLab EE パッケージを実行しています。インスタンスは、gitlab-server クックブックで定義された cron を使用して自動的にアップグレードされ、chef-repo のロールオーバーライドが設定されています(GitLab 内部のみ)。
主に運用タスクに使用されます。
GitLab.com インフラの管理用リポジトリと、インフラリポジトリのミラーが含まれています。 また、デプロイ管理のためのさまざまなツールや、Slack から送信される便利な chatops コマンドもホストしています。 ops.gitlab.net の管理者は、インフラマネージャー(Reliability、Scalability、Delivery)です。
アーキテクチャ
インスタンスは単一の VM 上で動作し、データベースバックエンドとして CloudSql を、Redis サービスとして Memorystore(マネージド Redis サービス)を使用しています。リポジトリは専用の SSD に保存され、アーティファクト、LFS オブジェクト、コンテナレジストリオブジェクト、アップロードは GCS に保存されています。

ソース、GitLab 内部使用のみ
version.gitlab.com
バージョンサービスは Google Cloud の Kubernetes クラスター上でホストされています。 バージョンは、利用可能な GitLab バージョンとそれに脆弱性が含まれているかどうかを保存し、 セルフマネージドの GitLab インスタンスのバージョンチェックバッジをレンダリングし、バージョンチェックや セルフマネージドインスタンスから送信された使用状況 ping のデータを収集するために使用されます。
アーキテクチャ
version.gitlab.com は Kubernetes 上で動作し、デプロイ管理には Auto DevOps を使用しています。アプリケーションは複数の Pod 上で動作します。Pod のデータ保存には Google Cloud SQL(PostgreSQL)が使用され、Cloud SQL には 2 つのレプリカが設定されています。Google Cloud Memorystore はキャッシュストアとして使用されています。
本番環境

ソース、GitLab 内部使用のみ
