1.2. OpenShift Dev Spaces アーキテクチャー
図1.1 Dev Workspace Operator を使用した高度な OpenShift DevSpaces アーキテクチャー
OpenShift Dev Spaces は、3 つのコンポーネントのグループで実行されます。
- OpenShift Dev Spaces サーバーコンポーネント
- ユーザープロジェクトおよびワークスペースの管理。主な構成要素はユーザーダッシュボードで、ユーザーはここから自分のワークスペースを制御します。
- DevWorkspace operator
-
User ワークスペースの実行に必要な OpenShift オブジェクトを作成し、制御します。
Pods
、Services
、PeristentVolumes
を含みます。 - 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 サーバーコンポーネント
関連情報
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 ゲートウェイと他のコンポーネントとの対話
関連情報
1.2.1.4. ユーザーダッシュボード
ユーザーダッシュボードは、Red Hat OpenShift Dev Spaces のランディングページです。OpenShift Dev Spaces ユーザーは、ユーザーダッシュボードを参照してワークスペースにアクセスし、管理します。これは React のアプリケーションです。OpenShift Dev Spaces デプロイメントは、devspaces-dashboard
Deployment で起動します。
以下にアクセスする必要があります。
- 「Devfile レジストリー」
- 「OpenShift Dev Spaces サーバー」
- 「プラグインレジストリー」
- OpenShift API
図1.4 User ダッシュボードと他のコンポーネントとの対話
ユーザーがユーザーダッシュボードにワークスペースの起動を要求すると、ユーザーダッシュボードはこの一連のアクションを実行します。
- ユーザーがコードサンプルからワークスペースを作成する際に、「Devfile レジストリー」 から devfile を収集します。
- リポジトリー URL を 「OpenShift Dev Spaces サーバー」 に送信し、ユーザーがリモート devfile からワークスペースを作成する際に devfile が返されることを想定します。
- ワークスペースを記述した devfile を読み込みます。
- 「プラグインレジストリー」 から追加のメタデータを収集します。
- その情報を DevWorkspace Custom Resource に変換します。
- OpenShift API を使用して、ユーザープロジェクトに DevWorkspace Custom Resource を作成します。
- DevWorkspace カスタムリソースのステータスを監視します。
- 実行中のワークスペース IDE にユーザーをリダイレクトします。
1.2.1.5. Devfile レジストリー
関連情報
OpenShift Dev Spaces devfile レジストリーは、すぐに使用できるワークスペースを作成するためのサンプル devfile の一覧を提供するサービスです。「ユーザーダッシュボード」 は、Dashboard devfile-registry
デプロイメントで 1 つの devfile レジストリーインスタンスを起動します。
図1.5 他のコンポーネントとの相互作用を登録する Devfile
1.2.1.6. OpenShift Dev Spaces サーバー
OpenShift Dev Spaces サーバーの主な機能は次のとおりです。
- ユーザーネームスペースの作成
- ユーザーネームスペースに必要なシークレットと設定マップのプロビジョニング
- Git サービスプロバイダーとの統合による devfile の取得および認証
OpenShift Dev Spaces サーバーは、HTTP REST API を公開する Java Web サービスで、以下へのアクセスが必要です。
- 「PostgreSQL」
- Git サービスプロバイダー
- OpenShift API
図1.6 OpenShift Dev Spaces サーバーと他のコンポーネントとの対話
1.2.1.7. PostgreSQL
OpenShift Dev Spaces サーバーは、PostgreSQL データベースを使用してワークスペースのメタデータなどのユーザー設定を永続化します。
OpenShift Dev Spaces デプロイメントでは、postgres
Deployment で専用の PostgreSQL インスタンスを起動します。代わりに外部データベースを使用することができます。
図1.7 Postgre SQL と他のコンポーネントとの対話
1.2.1.8. プラグインレジストリー
各 OpenShift Dev Spaces ワークスペースは、特定のエディターおよび関連する拡張機能のセットで始まります。OpenShift Dev Spaces プラグインレジストリーは、利用可能なエディターおよびエディターエクステンションの一覧を提供します。各エディターや拡張機能については、Devfile v2 に記載されています。
「ユーザーダッシュボード」 は、レジストリーの内容を読み取っています。
図1.8 プラグインは、他のコンポーネントとの相互作用を登録します。