目標
この取り組みには、いくつかのCore目標があります:
- 水平展開が容易
- デプロイ、アップグレード、メンテナーが容易
- クラウドサービスプロバイダーの幅広いサポート
- KubernetesとHelmを初期サポートし、将来的には他のスケジューラも柔軟にサポート可能
スケジューラ
Kubernetesは成熟しており、業界全体で広くサポートされています。しかし、私たちの設計の一部として、他のスケジューラのサポートを妨げるような決定は避けようと考えています。これは特にOpenShiftやTectonicのようなダウンストリームのKubernetesプロジェクトに当てはまります。将来的には、Docker SwarmやMesosphereのような他のスケジューラもサポートされるかもしれません。
私たちは、Kubernetesのスケーリングと自己修復機能をサポートすることを目指しています:
- レディネスとヘルスチェックでポッドが機能していることを確認し、機能していない場合はリサイクルします。
- カナリアおよびローリングデプロイをサポートするトラック
- 自動スケーリング
Kubernetesの標準的な機能を活用するようにします:
- 設定を管理するためのConfigMaps。これらはDockerコンテナにマッピングされたり渡されたりします。
- 機密データのシークレット
Consulも使うかもしれないので、他のインストール方法との一貫性を保つために、代わりにこれを使うかもしれません。
Helmチャート
GitLab固有のコンテナ/サービスのデプロイを管理するために、Helmチャートを作成します。また、デプロイ全体を簡単にするためのバンドルチャートも用意します。DockerとKubernetesのレイヤーには、Omnibusベースのオールインワンのソリューションよりもかなり複雑な部分があるため、これはこの取り組みにとって特に重要です。Helmはこの複雑さを管理するのに役立ち、values.yaml
ファイルを介して設定を管理するための簡単なトップレベルのインターフェイスを提供します。
私たちは3段階のHelmチャートを提供する予定です: