アーキテクチャ

3層のコンポーネントをサポートする予定です:

  1. Dockerコンテナ
  2. スケジューラー(Kubernetes)
  3. 上位設定ツール(Helm)

お客様がインストールする主な方法は、このリポジトリにあるHelm チャートでしょう。将来的には、Amazon CloudFormationやDocker Swarmのような他のデプロイ方法も提供するかもしれません。

Dockerコンテナイメージ

基礎として、各サービスごとにDockerコンテナを作成します。こうすることで、イメージのサイズと複雑さを軽減し、水平方向のスケーリングが容易になります。設定はDockerの標準的な方法、おそらく環境変数かマウントされたファイルで渡します。これにより、スケジューラソフトウェアとのクリーンな共通インターフェースが提供されます。

GitLab Dockerイメージ

GitLabアプリケーションは、GitLab固有のサービスを含むDockerイメージを使ってビルドされます。これらのイメージのビルド環境はCNGリポジトリにあります。

以下のGitLabコンポーネントはCNGリポジトリにイメージがあります。

  • Gitaly
  • GitLab Elasticsearch インデクサー
  • メールルーム
  • GitLab Exporter
  • GitLab シェル
  • Sidekiq
  • GitLab ツールボックス
  • ウェブサービス
  • ワークホース

以下は、GitLab固有のDockerイメージを使うフォークされたChartです。

initContainers や様々なJobで使われている Docker イメージです。

  • アルパイン証明書
  • kubectl

公式Dockerイメージ

基礎となるサービスには、以下の公式コンテナを活用しています:

GitLabチャート

これはトップレベルのGitLabチャート(gitlab)で、GitLabの完全な設定に必要なすべてのリソースを設定します。これには、GitLab、PostgreSQL、Redis、Ingress、証明書管理チャートが含まれます。

この高いレベルで、顧客は次のような決定を下すことができます:

  • 組み込まれたPostgreSQLのChartを使うか、Amazon RDS for PostgreSQLのような外部データベースを使うか。
  • 独自のSSL証明書を持参するか、Let’s Encryptを活用するか。
  • ロードバランサーを使うか、専用のIngressを使うか。

素早く簡単に始めたいお客様は、このChartから始めてください。

チャートの構成

メインのGitLabチャートは、他の多くのチャートから構成されるアンブレラチャートです。それぞれのサブチャートは個別に文書化されており、チャートのディレクトリ構造と同じ構造になっています。

GitLab以外のコンポーネントはパッケージ化され、トップレベルで文書化されます。GitLabコンポーネントサービスはGitLabチャートの下にドキュメントされています:

コンポーネント一覧

Chartを使用する際にデプロイされるコンポーネントの一覧と、必要な場合の設定方法は、アーキテクチャ・コンポーネント一覧ページでご覧いただけます。

デザインの決定

これらのChartのアーキテクチャに関して決定された文書については、Design Decisionsドキュメントをご覧ください。