Workspaces
| Status | Authors | Coach | DRIs | Owning Stage | Created |
|---|---|---|---|---|---|
| ongoing | @vtak | @grzesiek | @michelle-chen, @adebayo_a | ~devops::create | 2022-11-15 |
はじめに
開発者がプロジェクトに初めてコントリビュートする際に直面する共通の障壁の一つが、ローカル開発環境のセットアップです。相互に依存するパッケージを管理し、バージョン互換性の問題を解決していくプロセスは時間がかかり、特に偶にしかコントリビュートしない方や複数プロジェクトを頻繁に行き来する方にとっては意欲をそぐ原因になりかねません。複雑な環境では、開発チームが制限や認証情報、ビルド手順、標準を設けることも多く、開発環境の脆弱性をさらに高めることになります。
突き詰めると、開発者は開発環境の管理に費やす時間を減らし、高品質なコードのコントリビュートに集中したいと考えています。GitLab のミッションは「誰もがコントリビュートできるようにする」ことです。Workspaces を通じて、私たちはローカル開発環境の設定・維持管理という責任を取り除くことを目指しています。
目標
詳細については Workspaces direction page をご覧ください。
用語集
- GitLab VS Code fork: VSCode プロジェクトの内部フォーク。
- Web IDE: GitLab VS Code fork を基盤として GitLab コンテキストを追加した IDE。 この IDE は純粋にブラウザ上で動作します。
- GitLab VS Code fork for Workspaces: GitLab VS Code fork を基盤として、Workspaces での使用に適したパッチを適用した IDE。 この IDE はサーバーと、リモート接続に使用するオプションのクライアントを実行します。
- GitLab Workflow extension: VS Code に GitLab 機能を追加する拡張機能。
- GitLab Agent for Kubernetes(agentk): GitLab と Kubernetes の統合タスクを解決するためのコンポーネント。
- GitLab Agent for Workspaces(agentw): GitLab と Workspace の統合タスクを解決するためのコンポーネント。
- GitLab Relay(KAS): 異なる GitLab エージェント(agentk、agentw)と GitLab 間の接続を仲介するために、GitLab Rails アプリケーションと並行して動作するサーバー。
概要
各ワークスペースは、GitLab Agent for Kubernetes(agentk)との統合を通じて、Kubernetes の Pod 内にあるユーザー提供コンテナのグループとして実行されます。 各 Pod には IDE(例: GitLab VS Code fork for Workspaces)を注入します。私たちは IDE に依存しないアーキテクチャを目指しています。 ワークスペースへのアクセス方法は、ユーザーの Kubernetes クラスターにデプロイされた GitLab Workspaces Proxy 経由か、ワークスペースに注入された GitLab Agent for Workspaces(agentw)が確立する双方向 gRPC トンネル経由のいずれかとなります。
アーキテクチャ
詳細な実装については Kubernetes セットアップのアーキテクチャ をご覧ください。
決定事項
- 001: 使用する設定フォーマット
- 002: ワークスペースのコンピュートとストレージのプロビジョニング
- 003: ワークスペースの作成とアクセスに関するユーザー認可
- 004: ワークスペースへのアクセスに関するユーザートラフィックの認証
- 005: コンテナのユーザー/グループ ID の明示的な定義
- 006: ワークスペースの自動終了
- 007: プライベートプロジェクトからのワークスペース作成
- 008: ワークスペース内の非 HTTP サービスへのアクセスに SSH を使用する
- 009: GitLab Agent for Kubernetes(agentk)のグループへのマッピングを許可する
- 010: GitLab VS Code fork for Workspaces の拡張機能マーケットプレイス
- 011: ワークスペース内への GitLab Duo 機能の統合
- 012: ワークスペースの自動サスペンション
- 013: プライベートコンテナイメージからのワークスペース作成
- 014: Workspaces のデフォルトコンテナイメージと設定
- 015: GitLab Agent for Kubernetes(agentk)の GitLab クラスターへのマッピングを許可する
- 016: ワークスペース内での sudo コマンド実行をユーザーに許可する
- 017: ワークスペース内でのコンテナビルドおよび実行をユーザーに許可する
- 018: セットアップを簡素化するための GitLab Workspaces Proxy の削除
