第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.15/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: http://devspaces-dashboard.openshift-devspaces.svc.cluster.local:8080/dashboard/api/editors/devfile?che-editor=che-incubator/che-code/latest 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 - Open Source 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>