3.3. アーキテクチャー


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

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

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

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

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

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

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

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

3.3.1.1. Dev Spaces オペレーター

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

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

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

3.3.1.2. Dev Workspace Operator

Dev Workspace Operator (DWO) は OpenShift Dev Spaces の依存関係であり、OpenShift Dev Spaces の機能に不可欠です。DWO は主に、Dev Workspace カスタムリソース (CR) を調整します。

Dev Workspace CR は、OpenShift Dev Spaces ワークスペースの OpenShift リソース表現です。ユーザーがバックグラウンドで OpenShift Dev Spaces を使用してワークスペースを作成するたびに、Dashboard OpenShift Dev Spaces はクラスター内に Dev Workspace CR を作成します。すべての OpenShift Dev Spaces ワークスペースには、クラスター上に基盤となる Dev Workspace CR が存在します。

図 1 は、クラスター内の Dev Workspace CR の例を示しています。

図3.3 クラスター内の Dev Workspace CR の例

devfile を使用して OpenShift Dev Spaces でワークスペースを作成すると、Dev Workspace CR に devfile の詳細が含まれます。さらに、OpenShift Dev Spaces は、ワークスペースに選択されたエディターに応じて、エディター定義を Dev Workspace CR に追加します。OpenShift Dev Spaces は、CheCluster CR の設定方法に応じてワークスペースをさらに設定する Dev Workspace に属性も追加します。

DevWorkspaceTemplate は、Dev Workspaces の再利用可能な spec.template を定義するカスタムリソースです。

ワークスペースが起動すると、DWO は対応する Dev Workspace CR を読み取り、デプロイメント、シークレット、configmap、ルートなどの必要なリソースを作成して最後に devfile で定義された開発環境を表すワークスペース Pod が作成されます。

カスタムリソースの概要

以下のカスタムリソース定義は、Dev Workspace Operator によって提供されます。

  • Dev Workspace
  • DevWorkspaceTemplate
  • DevWorkspaceOperatorConfig
  • DevWorkspaceRouting

Dev Workspace

Dev Workspace カスタムリソースには、OpenShift Dev Spaces ワークスペースに関する詳細が含まれています。特に、devfile の詳細とエディター定義への参照が含まれています。

DevWorkspaceTemplate

OpenShift Dev Spaces では、DevWorkspaceTemplate カスタムリソースは通常、OpenShift Dev Spaces ワークスペース用のエディター (Visual Studio Code - Open Source など) を定義するために使用されます。このカスタムリソースを使用して、複数の Dev Workspaces で再利用される再利用可能な spec.template コンテンツを定義できます。

DevWorkspaceOperatorConfig

DevWorkspaceOperatorConfig (DWOC) カスタムリソースは、DWO の設定オプションを定義します。DWOC には 2 つの種類があります。

  • グローバル設定
  • 非グローバル設定

グローバル設定は、devworkspace-operator-config という名前の DWOC カスタムリソースであり、通常は DWO インストール namespace に配置されます。デフォルトでは、グローバル設定はインストール時には作成されません。グローバル設定で指定された設定フィールドは、DWO およびすべての Dev Workspaces に適用されます。ただし、DWOC 設定はグローバル以外の設定で上書きできます。

devworkspace-operator-config 以外の DWOC カスタムリソースは、非グローバル設定と見なされます。非グローバル設定は、Dev Workspace に DWOC への参照が含まれていない限り、どの Dev Workspace にも適用されません。グローバル設定と非グローバル設定に同じフィールドがある場合は、非グローバル設定フィールドが優先されます。

Expand
表3.1 グローバル DWOC と OpenShift Dev Spaces が所有する DWOC の比較
 Global DWOCOpenShift Dev Spaces が所有する DWOC

リソース名

devworkspace-operator-config

devworkspace-config

namespace

DWO インストールの namespace

OpenShift Dev Spaces インストールの namespace

デフォルト作成

DWO のインストール時にはデフォルトでは作成されません

OpenShift Dev Spaces インストールにデフォルトで作成されます

スコープ

DWO 自体と、DWO で管理されるすべての Dev Workspaces に適用されます

OpenShift Dev Spaces で作成された Dev Workspaces に適用されます

優先度

OpenShift Dev Spaces 所有設定で指定されたフィールドが優先されます

両方が同じフィールドを定義する場合はグローバル設定よりも優先されます

主な使用例

DWO 全般に適用されるデフォルトの広範な設定を定義するために使用されます。

OpenShift Dev Spaces で作成された Dev Workspaces の特定の設定を定義するために使用されます

たとえば、デフォルトでは、OpenShift Dev Spaces は、devworkspace-config という名前の OpenShift Dev Spaces namespace でグローバルではない DWOC を作成して管理します。この DWOC には OpenShift Dev Spaces ワークスペースに固有の設定が含まれており、CheCluster CR の設定方法に応じて OpenShift Dev Spaces によって維持されます。OpenShift Dev Spaces がワークスペースを作成すると、OpenShift Dev Spaces は controller.devfile.io/devworkspace-config 属性を使用して OpenShift Dev Spaces が所有する DWOC への参照を追加します。

図3.4 Dev Workspace 設定属性の例

DevWorkspaceRouting

DevWorkspaceRouting カスタムリソースは、Dev Workspace のエンドポイントの詳細を定義します。すべての Dev Workspace には、対応する DevWorkspaceRouting オブジェクトがあり、ワークスペースのコンテナーエンドポイントを指定します。devfile から定義されるエンドポイントおよびエディター定義で指定されるエンドポイントは、DevWorkspaceRouting カスタムリソースに表示されます。

apiVersion: controller.devfile.io/v1alpha1
kind: DevWorkspaceRouting
metadata:
  annotations:
    controller.devfile.io/devworkspace-started: 'false'
  name: routing-workspaceb14aa33254674065
  labels:
    controller.devfile.io/devworkspace_id: workspaceb14aa33254674065
spec:
  devworkspaceId: workspaceb14aa33254674065
  endpoints:
    universal-developer-image:
      - attributes:
          cookiesAuthEnabled: true
          discoverable: false
          type: main
          urlRewriteSupported: true
        exposure: public
        name: che-code
        protocol: https
        secure: true
        targetPort: 3100
  podSelector:
    controller.devfile.io/devworkspace_id: workspaceb14aa33254674065
  routingClass: che
status:
  exposedEndpoints:
    ...
Copy to Clipboard Toggle word wrap
3.3.1.2.1. Dev Workspace Operator のオペランド

Dev Workspace Operator には 2 つのオペランドがあります。

  • コントローラーのデプロイメント
  • Webhook デプロイメント
$ oc get pods -l 'app.kubernetes.io/part-of=devworkspace-operator' -o custom-columns=NAME:.metadata.name -n openshift-operators
NAME
devworkspace-controller-manager-66c6f674f5-l7rhj 
1

devworkspace-webhook-server-d4958d9cd-gh7vr 
2

devworkspace-webhook-server-d4958d9cd-rfvj6 
3
Copy to Clipboard Toggle word wrap
1
カスタムリソースを調整する Dev Workspace コントローラー Pod
2 3
Dev Workspace Operator Webhook Server Pod

Dev Workspace-controller-manager デプロイメントの設定

Dev Workspace Operator Subscription オブジェクトで devworkspace-controller-manager Pod を設定できます。

apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
  name: devworkspace-operator
  namespace: openshift-operators
spec:
  config:
    affinity:
      nodeAffinity: ...
      podAffinity: ...
    resources:
      limits:
        memory: ...
        cpu: ...
      requests:
        memory: ...
        cpu: ...
Copy to Clipboard Toggle word wrap

設定の詳細は、この ドキュメント を参照してください。

Dev Workspace-webhook-server デプロイメントの設定

グローバル DWOC で devworkspace-webhook-server デプロイメントを設定できます。

apiVersion: controller.devfile.io/v1alpha1
kind: DevWorkspaceOperatorConfig
metadata:
  name: devworkspace-operator-config
  namespace: <DWO install namespace>
config:
  webhooks:
    nodeSelector: <map[string]string>
    replicas: <int>
    tolerations: <[]corev1.Toleration>
Copy to Clipboard Toggle word wrap

3.3.1.3. Gateway

関連情報

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

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

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

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

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

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

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

以下へのアクセス権が必要です。

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

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

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

3.3.1.5. Dev Spaces サーバー

関連情報

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

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

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

  • Git サービスプロバイダー
  • OpenShift API

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

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

各 OpenShift Dev Spaces ワークスペースは、特定のエディターと関連する拡張機能のセットを使用して起動します。OpenShift Dev Spaces のプラグインレジストリーは、使用可能なエディターとエディター拡張機能のリストを提供するものです。各エディターや拡張機能は、Devfile v2 に記載されています。

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

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

3.3.2. User ワークスペース

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

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

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

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

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

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

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

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

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

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

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

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat