第8章 OpenShift との統合
8.1. OpenShift API を使用したワークスペースの管理
組織の OpenShift クラスターでは、OpenShift Dev Spaces ワークスペースは同じ名前の DevWorkspace
カスタムリソースとして表されます。その結果、OpenShift Dev Spaces ダッシュボードに my-workspace
という名前のワークスペースがある場合、クラスター上のユーザーのプロジェクトに my-workspace
という名前の対応する DevWorkspace
カスタムリソースがあります。
クラスター上の各 DevWorkspace
カスタムリソースは OpenShift Dev Spaces ワークスペースを表すため、コマンドライン oc
などのクライアントで OpenShift API を使用して OpenShift Dev Spaces ワークスペースを管理できます。
各 DevWorkspace
カスタムリソースには、ワークスペース用に複製された Git リポジトリーの devfile から派生した詳細が含まれています。たとえば、devfile は、devfile コマンドとワークスペースコンテナー設定を提供する場合があります。
8.1.1. すべてのワークスペースの一覧表示
ユーザーは、コマンドラインを使用してワークスペースを一覧表示できます。
前提条件
-
クラスター上のプロジェクトで
DevWorkspace
リソースをget
するための権限を持つアクティブなoc
セッションです。CLI の使用方法 を参照。 クラスター上の関連する OpenShift Dev Spaces ユーザー namespace を把握している。
ヒントhttps://<openshift_dev_spaces_fqdn>/api/kubernetes/namespace
にアクセスして、OpenShift Dev Spaces ユーザー namespace をname
として取得できます。クラスターの OpenShift Dev Spaces ユーザー namespace にいる。
ヒントOpenShift では、コマンドライン
oc
ツールを使用して、現在の namespace を表示したり、 namespace に切り替えたり できます。
手順
ワークスペースを一覧表示するには、コマンドラインで次のように入力します。
$ oc get devworkspaces
例8.1 出力
NAMESPACE NAME DEVWORKSPACE ID PHASE INFO user1-dev spring-petclinic workspace6d99e9ffb9784491 Running https://url-to-workspace.com user1-dev golang-example workspacedf64e4a492cd4701 Stopped Stopped user1-dev python-hello-world workspace69c26884bbc141f2 Failed Container tooling has state CrashLoopBackOff
このコマンドに --watch
フラグを追加すると、PHASE の変更をライブで表示できます。
クラスターの管理権限を持つユーザーは、--all-namespaces
フラグを含めることで、すべての OpenShift Dev Spaces ユーザーからのすべてのワークスペースを一覧表示できます。
8.1.2. ワークスペースの作成
ユースケースで OpenShift Dev Spaces ダッシュボードの使用が許可されていない場合は、カスタムリソースをクラスターに適用することで、OpenShift API を使用してワークスペースを作成できます。
OpenShift Dev Spaces ダッシュボードを使用してワークスペースを作成すると、コマンドラインを使用する場合と比較して、ユーザーエクスペリエンスと設定の利点が向上します。
- ユーザーとして、クラスターに自動的にログインします。
- OpenShift クライアントは自動的に動作します。
-
OpenShift Dev Spaces とそのコンポーネントは、ターゲット Git リポジトリーの devfile をクラスター上の
DevWorkspace
およびDevWorkspaceTemplate
カスタムリソースに自動的に変換します。 -
ワークスペースへのアクセスは、デフォルトで、ワークスペースの
DevWorkspace
にあるroutingClass: che
で保護されています。 -
DevWorkspaceOperatorConfig
設定の認識は、OpenShift Dev Spaces によって管理されます。 以下を含む、
CheCluster
カスタムリソースで指定されたspec.devEnvironments
の設定の認識:-
永続的なストレージストラテジーは
devEnvironments.storage
で指定されます。 -
デフォルトの IDE は
devEnvironments.defaultEditor
で指定されます。 -
デフォルトのプラグインは
devEnvironments.defaultPlugins
で指定されます。 -
コンテナーのビルド設定は
devEnvironments.containerBuildConfiguration
で指定されます。
-
永続的なストレージストラテジーは
前提条件
-
クラスター上のプロジェクトに
DevWorkspace
リソースを作成する権限を持つアクティブなoc
セッションです。CLI の使用方法 を参照。 クラスター上の関連する OpenShift Dev Spaces ユーザー namespace を把握している。
ヒントhttps://<openshift_dev_spaces_fqdn>/api/kubernetes/namespace
にアクセスして、OpenShift Dev Spaces ユーザー namespace をname
として取得できます。クラスターの OpenShift Dev Spaces ユーザー namespace にいる。
ヒントOpenShift では、コマンドライン
oc
ツールを使用して、現在の namespace を表示したり、 namespace に切り替えたり できます。注記他のユーザーのためにワークスペースを作成する予定の OpenShift Dev Spaces 管理者は、OpenShift Dev Spaces または管理者によってプロビジョニングされたユーザー namespace に
DevWorkspace
カスタムリソースを作成する必要があります。https://access.redhat.com/documentation/ja-jp/red_hat_openshift_dev_spaces/3.7/html-single/administration_guide/index#administration-guide:configuring-namespace-provisioning を参照してください。
手順
DevWorkspace
カスタムリソースを準備するには、ターゲット Git リポジトリーの devfile の内容をコピーします。例8.2
schemaVersion: 2.2.0
の devfile コンテンツをコピーcomponents: - name: tooling-container container: image: quay.io/devfile/universal-developer-image:ubi8-latest
ヒント詳細については、devfile v2 のドキュメントを 参照してください。
前のステップの devfile の内容を
spec.template
フィールドの下に貼り付けて、DevWorkspace
カスタムリソースを作成します。例8.3
DevWorkspace
カスタムリソースkind: DevWorkspace apiVersion: workspace.devfile.io/v1alpha2 metadata: name: my-devworkspace1 namespace: user1-dev2 spec: routingClass: che started: true3 contributions:4 - name: ide uri: https://<openshift_dev_spaces_fqdn>/plugin-registry/v3/plugins/che-incubator/che-code/latest/devfile.yaml template: projects:5 - name: my-project-name git: remotes: origin: https://github.com/eclipse-che/che-docs components:6 - name: tooling-container container: image: quay.io/devfile/universal-developer-image:ubi8-latest
- 1
DevWorkspace
カスタムリソースの名前です。これが新しいワークスペースの名前になります。- 2
- 新しいワークスペースのターゲットプロジェクトであるユーザー namespace です。
- 3
DevWorkspace
カスタムリソースの作成時にワークスペースを開始する必要があるかどうかを決定します。- 4
- プラグインレジストリーからの Microsoft Visual Studio Code - オープンソース IDE devfile への URL 参照 です。
- 5
- 起動時にワークスペースに複製する Git リポジトリーの詳細です。
- 6
- ワークスペースコンテナーやボリュームコンポーネントなどのコンポーネントの一覧です。
-
DevWorkspace
カスタムリソースをクラスターに適用します。
検証
DevWorkspace
の PHASE ステータスをチェックして、ワークスペースが起動していることを確認します。$ oc get devworkspaces -n <user_project> --watch
例8.4 出力
NAMESPACE NAME DEVWORKSPACE ID PHASE INFO user1-dev my-devworkspace workspacedf64e4a492cd4701 Starting Waiting for workspace deployment
ワークスペースが正常に開始されると、
oc get devworkspaces
コマンドの出力でその PHASE ステータスが Running に変わります。例8.5 出力
NAMESPACE NAME DEVWORKSPACE ID PHASE INFO user1-dev my-devworkspace workspacedf64e4a492cd4701 Running https://url-to-workspace.com
次に、次のいずれかのオプションを使用してワークスペースを開くことができます。
-
oc get devworkspaces
コマンドの出力の INFO セクションにある URL にアクセスします。 - OpenShift Dev Spaces ダッシュボードからワークスペースを開きます。
-
8.1.3. ワークスペースの停止
Devworkspace
カスタムリソースの spec.started
フィールドを false
に設定することで、ワークスペースを停止できます。
前提条件
-
クラスター上のアクティブな
oc
セッション。CLI の使用方法 を参照。 ワークスペース名は把握している。
ヒント$oc get devworkspaces
の出力で、関連するワークスペース名を見つけることができます。クラスター上の関連する OpenShift Dev Spaces ユーザー namespace を把握している。
ヒントhttps://<openshift_dev_spaces_fqdn>/api/kubernetes/namespace
にアクセスして、OpenShift Dev Spaces ユーザー namespace をname
として取得できます。クラスターの OpenShift Dev Spaces ユーザー namespace にいる。
ヒントOpenShift では、コマンドライン
oc
ツールを使用して、現在の namespace を表示したり、 namespace に切り替えたり できます。
手順
次のコマンドを実行して、ワークスペースを停止します。
$ oc patch devworkspace <workspace_name> \ -p '{"spec":{"started":false}}' \ --type=merge -n <user_namespace> && \ oc wait --for=jsonpath='{.status.phase}'=Stopped \ dw/<workspace_name> -n <user_namespace>
8.1.4. 停止したワークスペースの開始
Devworkspace
カスタムリソースの spec.started
フィールドを true
に設定することで、停止したワークスペースを開始できます。
前提条件
-
クラスター上のアクティブな
oc
セッション。CLI の使用方法 を参照。 ワークスペース名は把握している。
ヒント$oc get devworkspaces
の出力で、関連するワークスペース名を見つけることができます。クラスター上の関連する OpenShift Dev Spaces ユーザー namespace を把握している。
ヒントhttps://<openshift_dev_spaces_fqdn>/api/kubernetes/namespace
にアクセスして、OpenShift Dev Spaces ユーザー namespace をname
として取得できます。クラスターの OpenShift Dev Spaces ユーザー namespace にいる。
ヒントOpenShift では、コマンドライン
oc
ツールを使用して、現在の namespace を表示したり、 namespace に切り替えたり できます。
手順
次のコマンドを実行して、停止したワークスペースを開始します。
$ oc patch devworkspace <workspace_name> \ -p '{"spec":{"started":true}}' \ --type=merge -n <user_namespace> && \ oc wait --for=jsonpath='{.status.phase}'=Running \ dw/<workspace_name> -n <user_namespace>
8.1.5. ワークスペースの削除
DevWorkspace
カスタムリソースを削除するだけで、ワークスペースを削除できます。
OpenShift Dev Spaces によって作成された場合、DevWorkspace
カスタムリソースを削除すると、他のワークスペースリソースも削除されます (たとえば、参照された DevWorkspaceTemplate
およびワークスペースごとの PersistentVolumeClaims)
。
可能な限り、OpenShift Dev Spaces ダッシュボードを使用してワークスペースを削除します。
前提条件
-
クラスター上のアクティブな
oc
セッション。CLI の使用方法 を参照。 ワークスペース名は把握している。
ヒント$oc get devworkspaces
の出力で、関連するワークスペース名を見つけることができます。クラスター上の関連する OpenShift Dev Spaces ユーザー namespace を把握している。
ヒントhttps://<openshift_dev_spaces_fqdn>/api/kubernetes/namespace
にアクセスして、OpenShift Dev Spaces ユーザー namespace をname
として取得できます。クラスターの OpenShift Dev Spaces ユーザー namespace にいる。
ヒントOpenShift では、コマンドライン
oc
ツールを使用して、現在の namespace を表示したり、 namespace に切り替えたり できます。
手順
次のコマンドを実行して、ワークスペースを削除します。
$ oc delete devworkspace <workspace_name> -n <user_namespace>