第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 で指定されます。

前提条件

手順

  1. 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 のドキュメントを 参照してください。

  2. 前のステップの 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
    ワークスペースコンテナーやボリュームコンポーネントなどのコンポーネントの一覧です。
  3. DevWorkspace カスタムリソースをクラスターに適用します。

検証

  1. DevWorkspacePHASE ステータスをチェックして、ワークスペースが起動していることを確認します。

    $ 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
  2. ワークスペースが正常に開始されると、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>
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.