1.2. アーキテクチャー

図1.1 Dev Workspace Operator を使用した高度な OpenShift Dev Spaces アーキテクチャー

devspaces と devworkspace との連携

OpenShift Dev Spaces は、3 つのコンポーネントのグループで実行されます。

OpenShift Dev Spaces サーバーコンポーネント
ユーザープロジェクトおよびワークスペースの管理。主な設定要素はユーザーダッシュボードで、ユーザーはここから自分のワークスペースを制御します。
Dev ワークスペースの演算子
User ワークスペースの実行に必要な OpenShift オブジェクトを作成し、制御します。PodsServicesPeristentVolumes を含みます。
User ワークスペース
コンテナーベースの開発環境、IDE を含みます。

これらの OpenShift の機能のロールは中心的なものです。

Dev ワークスペースのカスタムリソース
ユーザーワークスペースを表す有効な OpenShift オブジェクト。OpenShift Dev Spaces で操作します。3 つのグループのコンポーネントのコミュニケーションチャンネルとなります。
OpenShift のロールベースアクセスコントロール (RBAC)
すべてのリソースへのアクセスを制御します。

1.2.1. サーバーコンポーネント

OpenShift Dev Spaces サーバーコンポーネントにより、マルチテナンシーとワークスペースの管理が確保されます。

図1.2 Dev Workspace Operator と対話する OpenShift Dev Spaces サーバーコンポーネント

devspaces デプロイメントが devworkspace と対話する

1.2.1.1. Dev Spaces オペレーター

OpenShift Dev Spaces Operator は、OpenShift Dev Spaces サーバーコンポーネントの完全なライフサイクル管理を行います。これには、以下が含まれます。

CheCluster カスタムリソース定義 (CRD)
CheCluster OpenShift オブジェクトを定義します。
OpenShift Dev Spaces コントローラー
Pod、サービス、永続ボリュームなどの OpenShift Dev Space インスタンスを実行するために必要な OpenShift オブジェクトを作成し、制御します。
CheCluster カスタムリソース (CR)

OpenShift Dev Spaces Operator を持つクラスターでは、CheCluster カスタムリソース (CR) を作成できます。OpenShift Dev Spaces オペレーターは、この OpenShift Dev Spaces インスタンス上で OpenShift Dev Spaces サーバーコンポーネントの完全なライフサイクル管理を行います。

1.2.1.2. Dev ワークスペースの演算子

Dev Workspace 演算子は、OpenShift を拡張して Dev Workspace のサポートを提供します。これには、以下が含まれます。

Dev Workspace のカスタムリソース定義
Devfile v2 仕様から Dev Workspace OpenShift オブジェクトを定義します。
Dev Workspace コントローラー
Pod、サービス、永続ボリュームなど、Dev Workspace の実行に必要な OpenShift オブジェクトを作成して制御します。
Dev Workspace カスタムリソース
Dev Workspace 演算子があるクラスターでは、Dev Workspace カスタムリソース (CR) を作成することができます。Dev Workspace CR は、Devfile を OpenShift で表現したものです。OpenShift クラスター内の User ワークスペースを定義します。

1.2.1.3. ゲートウェイ

OpenShift Dev Spaces ゲートウェイには、以下のロールがあります。

  • 要求をルーティングする。Traefik を使用します。
  • OpenID Connect(OIDC) でユーザーを認証する。OpenShift OAuth2 プロキシー を使用します。
  • OpenShift RoleBased Access Control(RBAC) ポリシーを適用して、OpenShift Dev Spaces リソースへのアクセスを制御します。'kube-rbac-proxy' を使用します。

OpenShift Dev Spaces Operator はこれを che-gateway Deployment として管理します。

以下へのアクセスを制御します。

図1.3 OpenShift Dev Spaces ゲートウェイと他のコンポーネントとの対話

OpenShift Dev Spaces ゲートウェイと他のコンポーネントとの対話

1.2.1.4. ユーザーダッシュボード

ユーザーダッシュボードは、Red Hat OpenShift Dev Spaces のランディングページです。OpenShift Dev Spaces ユーザーは、ユーザーダッシュボードを参照してワークスペースにアクセスし、管理します。これは React のアプリケーションです。OpenShift Dev Spaces デプロイメントは、devspaces-dashboard Deployment で起動します。

以下にアクセスする必要があります。

図1.4 User ダッシュボードと他のコンポーネントとの対話

User ダッシュボードと他のコンポーネントとの対話

ユーザーがユーザーダッシュボードにワークスペースの起動を要求すると、ユーザーダッシュボードはこの一連のアクションを実行します。

  1. ユーザーがコードサンプルからワークスペースを作成する際に、「Devfile レジストリー」 から devfile を収集します。
  2. リポジトリー URL を 「Dev Spaces サーバー」 に送信し、ユーザーがリモート devfile からワークスペースを作成する際に devfile が返されることを想定します。
  3. ワークスペースを記述した devfile を読み込みます。
  4. 「プラグインレジストリー」 から追加のメタデータを収集します。
  5. その情報を Dev Workspace Custom Resource に変換します。
  6. OpenShift API を使用して、ユーザープロジェクトに Dev Workspace Custom Resource を作成します。
  7. Dev Workspace Custom Resource のステータスを監視します。
  8. 実行中のワークスペース IDE にユーザーをリダイレクトします。

1.2.1.5. Devfile レジストリー

関連情報

OpenShift Dev Spaces devfile レジストリーは、すぐに使用できるワークスペースを作成するためのサンプル devfile の一覧を提供するサービスです。「ユーザーダッシュボード」 は、DashboardCreate Workspace ページにサンプルリストを表示します。各サンプルには、Devfile v2 が含まれています。OpenShift Dev Spaces デプロイメントでは、devfile-registry デプロイメントで 1 つの devfile レジストリーインスタンスを起動します。

図1.5 他のコンポーネントとの相互作用を登録する Devfile

devspaces devfile レジストリーの対話

1.2.1.6. Dev Spaces サーバー

OpenShift Dev Spaces サーバーの主な機能は次のとおりです。

  • ユーザーネームスペースの作成
  • ユーザーネームスペースに必要なシークレットと Config Map のプロビジョニング
  • Git サービスプロバイダーとの統合による devfile の取得および認証

OpenShift Dev Spaces サーバーは、HTTP REST API を公開する Java Web サービスで、以下へのアクセスが必要です。

図1.6 OpenShift Dev Spaces サーバーと他のコンポーネントとの対話

OpenShift Dev Spaces サーバーと他のコンポーネントとの対話

1.2.1.7. PostgreSQL

OpenShift Dev Spaces サーバーは、PostgreSQL データベースを使用してワークスペースのメタデータなどのユーザー設定を永続化します。

OpenShift Dev Spaces デプロイメントでは、postgres Deployment で専用の PostgreSQL インスタンスを起動します。代わりに外部データベースを使用することができます。

図1.7 Postgre SQL と他のコンポーネントとの対話

Postgre SQL と他のコンポーネントとの対話

1.2.1.8. プラグインレジストリー

各 OpenShift Dev Spaces ワークスペースは、特定のエディターおよび関連する拡張機能のセットで始まります。OpenShift Dev Spaces プラグインレジストリーは、利用可能なエディターおよびエディターエクステンションの一覧を提供します。各エディターや拡張機能については、Devfile v2 に記載されています。

「ユーザーダッシュボード」 は、レジストリーの内容を読み取っています。

図1.8 他のコンポーネントとのプラグインレジストリーの相互作用

他のコンポーネントとのプラグインレジストリーの相互作用

1.2.2. User ワークスペース

図1.9 User ワークスペースと他のコンポーネントとの対話

User ワークスペースと他のコンポーネントとの対話

User ワークスペースは、コンテナー内で動作する Web IDE です。

User ワークスペースは、Web アプリケーションです。コンテナー内で動作するマイクロサービスで設定されており、ブラウザー上で動作する最新の IDE のすべてのサービスを提供します。

  • エディター
  • 言語オートコンプリート
  • 言語サーバー
  • デバッグツール
  • プラグイン
  • アプリケーションのランタイム

ワークスペースは、ワークスペースコンテナーと有効なプラグイン、および関連する OpenShift コンポーネントを含む 1 つの OpenShift Deployment です。

  • コンテナー
  • ConfigMap
  • サービス
  • エンドポイント
  • ingress またはルート
  • シークレット
  • 永続ボリューム (PV)

OpenShift Dev Spaces ワークスペースには、OpenShift 永続ボリューム (PV) で永続化されるプロジェクトのソースコードが含まれます。マイクロサービスは、この共有ディレクトリーに読み書き可能なアクセス権があります。

devfile v2 形式を使用して、OpenShift Dev Spaces ワークスペースのツールおよびランタイムアプリケーションを指定します。

以下の図は、OpenShift Dev Spaces ワークスペースとそのコンポーネントを実行する 1 つを示しています。

図1.10 OpenShift Dev Spaces ワークスペースコンポーネント

dw を使用したワークスペースコンポーネント

この図では、実行中のワークスペースが 1 つあります。