アーキテクチャ
3層のコンポーネントをサポートする予定です:
- Dockerコンテナ
- スケジューラー(Kubernetes)
- 上位設定ツール(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イメージ
基礎となるサービスには、以下の公式コンテナを活用しています:
- Docker ディストリビューション(Docker レジストリ 2.0)
- Prometheus
- NGINX Ingress
- サートマネージャ
- Redis
- PostgreSQL
GitLabチャート
これはトップレベルのGitLabチャート(gitlab
)で、GitLabの完全な設定に必要なすべてのリソースを設定します。これには、GitLab、PostgreSQL、Redis、Ingress、証明書管理チャートが含まれます。
この高いレベルで、顧客は次のような決定を下すことができます:
- 組み込まれたPostgreSQLのChartを使うか、Amazon RDS for PostgreSQLのような外部データベースを使うか。
- 独自のSSL証明書を持参するか、Let’s Encryptを活用するか。
- ロードバランサーを使うか、専用のIngressを使うか。
素早く簡単に始めたいお客様は、このChartから始めてください。
チャートの構成
メインのGitLabチャートは、他の多くのチャートから構成されるアンブレラチャートです。それぞれのサブチャートは個別に文書化されており、チャートのディレクトリ構造と同じ構造になっています。
GitLab以外のコンポーネントはパッケージ化され、トップレベルで文書化されます。GitLabコンポーネントサービスはGitLabチャートの下にドキュメントされています:
- NGINX
- MinIO
- レジストリ
- GitLab/Gitaly
- GitLab/GitLabエクスポーター
- GitLab/GitLabシェル
- GitLab/マイグレーション
- GitLab/Sidekiq
- GitLab/Webservice
コンポーネント一覧
Chartを使用する際にデプロイされるコンポーネントの一覧と、必要な場合の設定方法は、アーキテクチャ・コンポーネント一覧ページでご覧いただけます。
デザインの決定
これらのChartのアーキテクチャに関して決定された文書については、Design Decisionsドキュメントをご覧ください。