1.2. OpenShift Dev Spaces アーキテクチャー

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

devworkspace との連携する che

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

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

これらの OpenShift の機能の役割は中心的なものです。

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

1.2.1. OpenShift Dev Spaces サーバーコンポーネント

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

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

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

1.2.1.1. OpenShift 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. DevWorkspace operator

DevWorkspace Operator は OpenShift を拡張して DevWorkspace サポートを提供します。これには、以下が含まれます。

DevWorkspace のカスタムリソース定義
Devfile v2 仕様から DevWorkspace OpenShift オブジェクトを定義します。
DevWorkspace コントローラー
Pod、サービス、永続ボリュームなど、DevWorkspace の実行に必要な OpenShift オブジェクトを作成して制御します。
DevWorkspace カスタムリソース
DevWorkspace 演算子があるクラスターでは、DevWorkspace カスタムリソース (CR) を作成することができます。DevWorkspace 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 を 「OpenShift Dev Spaces サーバー」 に送信し、ユーザーがリモート devfile からワークスペースを作成する際に devfile が返されることを想定します。
  3. ワークスペースを記述した devfile を読み込みます。
  4. 「プラグインレジストリー」 から追加のメタデータを収集します。
  5. その情報を DevWorkspace Custom Resource に変換します。
  6. OpenShift API を使用して、ユーザープロジェクトに DevWorkspace Custom Resource を作成します。
  7. DevWorkspace カスタムリソースのステータスを監視します。
  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. OpenShift Dev Spaces サーバー

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

  • ユーザーネームスペースの作成
  • ユーザーネームスペースに必要なシークレットと設定マップのプロビジョニング
  • 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 プラグインは、他のコンポーネントとの相互作用を登録します。

プラグインは、他のコンポーネントとの相互作用を登録します。