アーキテクチャ
コンポーネントの3つの階層をサポートする予定です:
- Dockerコンテナ
- スケジューラ(Kubernetes)
- 高レベルの設定ツール(Helm)
お客様がインストールに使用する主な方法は、このリポジトリ内のHelmチャートです。将来的には、Amazon CloudFormationやDocker Swarmのような他のデプロイ方法も提供する可能性があります。
Dockerコンテナイメージ
前提として、各サービスに対してDockerコンテナを作成します。これにより、イメージサイズと複雑さを軽減し、より簡単な水平スケーリングが可能になります。設定は、Dockerの標準的な方法で、おそらく環境変数またはマウントされたファイルで渡される必要があります。これにより、スケジューラソフトウェアとのクリーンで共通のインターフェースが提供されます。
GitLab Dockerイメージ
GitLabアプリケーションは、GitLab固有のサービスを含むDockerイメージを使用してビルドされています。これらのイメージのビルド環境は、CNG repositoryにあります。
以下のGitLabコンポーネントには、CNGリポジトリにイメージがあります。
- Gitaly
- GitLab Elasticsearch Indexer
- mail_room
- GitLab Exporter
- GitLab Shell
- Sidekiq
- GitLab Toolbox
- Webservice
- Workhorse
以下は、GitLab固有のDockerイメージも使用するフォークしたチャートです。
initContainersおよびさまざまなJobで使用されるDockerイメージ。
- alpine-certificates
- kubectl
公式Dockerイメージ
基盤となるサービスには、次の既存の公式コンテナを活用します:
- Docker Distribution(Docker Registry 2.0)
- Prometheus
- NGINX Ingress
- cert-manager
- Redis
- PostgreSQL
GitLabチャート
これはトップレベルのGitLabチャート(gitlab)で、GitLabの完全な設定に必要なすべてのリソースを設定します。これには、GitLab、PostgreSQL、Redis、Ingress、および証明書管理チャートが含まれます。
この高レベルでは、お客様は次のような決定を下すことができます:
- 組み込みのPostgreSQLチャートを使用するか、PostgreSQL用のAmazon RDSのような外部データベースを使用するか。
- 独自のSSL証明書を持ち込むか、Let’s Encryptを活用するか。
- ロードバランサーを使用するか、専用のIngressを使用するか。
手軽に始めたいお客様は、このチャートから始めることをお勧めします。
これらのチャートの構造
メインのGitLabチャートは、他の多くのチャートで構成されるアンブレラチャートです。各サブチャートは個別にドキュメント化され、chartsディレクトリ構造に一致する構造で配置されます。
GitLab以外のコンポーネントは、トップレベルでパッケージ化され、ドキュメント化されています。GitLabコンポーネントサービスは、GitLabチャートの下にドキュメント化されています:
- NGINX
- MinIO
- レジストリ
- GitLab/Gitaly
- GitLab/GitLab Exporter
- GitLab/GitLab Shell
- GitLab/Migrations
- GitLab/Sidekiq
- GitLab/Webservice
コンポーネントリスト
チャートを使用するときにデプロイされるコンポーネントのリスト、および必要に応じて設定手順については、アーキテクチャコンポーネントリストページにあります。
設計上の判断
これらのチャートのアーキテクチャに関して行われた決定のドキュメントは、設計に関する決定のドキュメントにあります