第 8 章 与 OpenShift 集成


8.1. 使用 OpenShift API 管理工作区

在机构的 OpenShift 集群中,OpenShift Dev Spaces 工作区以相同名称的 DevWorkspace 自定义资源表示。因此,如果 OpenShift Dev Spaces 仪表板中有一个名为 my-workspace 的工作区,则集群上用户项目中有一个名为 my-workspace 的相应 DevWorkspace 自定义资源。

由于集群中的每个 DevWorkspace 自定义资源都代表 OpenShift Dev Spaces 工作区,所以您可以使用 OpenShift API 和命令行 oc 之类的客户端来管理 OpenShift Dev Spaces 工作区。

每个 DevWorkspace 自定义资源都包含从为工作区克隆的 Git 存储库的 devfile 中获取的详情。例如,devfile 可能会提供 devfile 命令和工作区容器配置。

8.1.1. 列出所有工作区

作为用户,您可以使用命令行列出工作区。

先决条件

  • 一个活跃的 oc 会话,具有 获取 集群中项目中的 DevWorkspace 资源的权限。请参阅 CLI 入门
  • 您知道集群中的相关的 OpenShift Dev Spaces 用户命名空间。

    提示

    您可以访问 https:// <openshift_dev_spaces_fqdn> /api/kubernetes/namespace 来获取您的 OpenShift Dev Spaces 用户命名空间,名为。

  • 您位于集群的 OpenShift Dev Spaces 用户命名空间中。

    提示

    在 OpenShift 中,您可以使用命令行 oc 工具来显示当前命名空间或切换到命名空间

流程

  • 要列出您的工作区,请在命令行中输入以下内容:

    $ oc get devworkspaces
    Copy to Clipboard Toggle word wrap

    例 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
    Copy to Clipboard Toggle word wrap
提示

您可以通过在此命令中添加-- watch 标志来查看实时的 PHASE 更改。

注意

具有管理权限的用户可以通过包含- all-namespaces 标志来列出所有 OpenShift Dev Spaces 用户的所有工作区。

8.1.2. 创建工作区

如果您的用例不允许使用 OpenShift Dev Spaces 仪表板,您可以通过将自定义资源应用到集群来使用 OpenShift API 创建工作区。

注意

与使用命令行相比,通过 OpenShift Dev Spaces 仪表板创建工作区提供了更好的用户体验和配置优势:

  • 作为用户,您会自动登录到集群。
  • OpenShift 客户端会自动工作。
  • OpenShift Dev Spaces 及其组件会自动将目标 Git 存储库的 devfile 转换为集群中的 DevWorkspaceDevWorkspaceTemplate 自定义资源。
  • 默认情况下,使用工作区的 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
    Copy to Clipboard Toggle word wrap
    提示

    如需了解更多详细信息,请参阅 devfile v2 文档

  2. 创建 DevWorkspace 自定义资源,粘贴 spec.template 字段下上一步中的 devfile 内容。

    例 8.3. DevWorkspace 自定义资源

    kind: DevWorkspace
    apiVersion: workspace.devfile.io/v1alpha2
    metadata:
      name: my-devworkspace
    1
    
      namespace: user1-dev
    2
    
    spec:
      routingClass: che
      started: true
    3
    
      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
    Copy to Clipboard Toggle word wrap
    1
    DevWorkspace 自定义资源的名称。这将是新工作区的名称。
    2
    User namespace,这是新工作区的目标项目。
    3
    决定在创建 DevWorkspace 自定义资源时是否必须启动工作区。
    4
    5
    有关要在启动时克隆到工作区的 Git 存储库的详细信息。
    6
    工作区容器和卷组件等组件列表。
  3. DevWorkspace 自定义资源应用到集群。

验证

  1. 通过检查 DevWorkspacePHASE 状态来验证工作区是否已启动。

    $ oc get devworkspaces -n <user_project> --watch
    Copy to Clipboard Toggle word wrap

    例 8.4. 输出

    NAMESPACE        NAME                  DEVWORKSPACE ID             PHASE      INFO
    user1-dev        my-devworkspace       workspacedf64e4a492cd4701   Starting   Waiting for workspace deployment
    Copy to Clipboard Toggle word wrap
  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
    Copy to Clipboard Toggle word wrap

    然后,您可以使用以下选项之一打开工作区:

    • 访问 oc get devworkspaces 命令的输出的 INFO 部分中提供的 URL。
    • 从 OpenShift Dev Spaces 仪表板打开工作区。

8.1.3. 停止工作区

您可以通过将 Devworkspace 自定义资源中的 spec.started 字段设置为 false 来停止工作区。

先决条件

  • 集群中的活跃 oc 会话。请参阅 CLI 入门
  • 您知道工作区名称。

    提示

    您可以在 $ oc get devworkspaces 的输出结果中找到相关的工作区名称。

  • 您知道集群中的相关的 OpenShift Dev Spaces 用户命名空间。

    提示

    您可以访问 https:// &lt;openshift_dev_spaces_fqdn&gt; /api/kubernetes/namespace 来获取您的 OpenShift Dev Spaces 用户命名空间,名为。

  • 您位于集群的 OpenShift Dev Spaces 用户命名空间中。

    提示

    在 OpenShift 中,您可以使用命令行 oc 工具来显示当前命名空间或切换到命名空间

流程

  • 运行以下命令以停止工作区:

    $ 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>
    Copy to Clipboard Toggle word wrap

8.1.4. 启动停止的工作区

您可以通过将 Devworkspace 自定义资源中的 spec.started 字段设置为 true 来启动已停止的工作空间。

先决条件

  • 集群中的活跃 oc 会话。请参阅 CLI 入门
  • 您知道工作区名称。

    提示

    您可以在 $ oc get devworkspaces 的输出结果中找到相关的工作区名称。

  • 您知道集群中的相关的 OpenShift Dev Spaces 用户命名空间。

    提示

    您可以访问 https:// &lt;openshift_dev_spaces_fqdn&gt; /api/kubernetes/namespace 来获取您的 OpenShift Dev Spaces 用户命名空间,名为。

  • 您位于集群的 OpenShift Dev Spaces 用户命名空间中。

    提示

    在 OpenShift 中,您可以使用命令行 oc 工具来显示当前命名空间或切换到命名空间

流程

  • 运行以下命令以启动已停止的工作空间:

    $ 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>
    Copy to Clipboard Toggle word wrap

8.1.5. 删除工作区

您可以通过只删除 DevWorkspace 自定义资源来删除工作区。

警告

如果 OpenShift Dev Spaces 创建它们,则删除 DevWorkspace 自定义资源也会删除其他工作区资源:例如,引用的 DevWorkspaceTemplate 和 per-workspace PersistentVolumeClaims

提示

尽可能使用 OpenShift Dev Spaces 仪表板来删除工作区。

先决条件

  • 集群中的活跃 oc 会话。请参阅 CLI 入门
  • 您知道工作区名称。

    提示

    您可以在 $ oc get devworkspaces 的输出结果中找到相关的工作区名称。

  • 您知道集群中的相关的 OpenShift Dev Spaces 用户命名空间。

    提示

    您可以访问 https:// &lt;openshift_dev_spaces_fqdn&gt; /api/kubernetes/namespace 来获取您的 OpenShift Dev Spaces 用户命名空间,名为。

  • 您位于集群的 OpenShift Dev Spaces 用户命名空间中。

    提示

    在 OpenShift 中,您可以使用命令行 oc 工具来显示当前命名空间或切换到命名空间

流程

  • 运行以下命令以删除工作区:

    $ oc delete devworkspace <workspace_name> -n <user_namespace>
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat