第 8 章 与 OpenShift 集成


8.1. 使用 OpenShift API 管理工作区

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

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

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

8.1.1. 列出所有工作区

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

先决条件

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

    提示

    访问 "https://devspaces-<openshift_deployment_name>.<domain_name>"/api/kubernetes/namespace 来获取您的 OpenShift Dev Spaces 用户命名空间作为 name

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

    提示

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

流程

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

    $ 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 转换为集群中的 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
    提示

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

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

    例 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://devspaces-<openshift_deployment_name>.<domain_name>"/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
    用户命名空间,这是新工作区的目标项目。
    3
    决定在创建 DevWorkspace 自定义资源时是否必须启动工作区。
    4
    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. 当工作区成功启动时,其 PHASE 状态会在 oc get devworkspaces 命令的输出中变为 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 用户命名空间。

    提示

    访问 "https://devspaces-<openshift_deployment_name>.<domain_name>"/api/kubernetes/namespace 来获取您的 OpenShift Dev Spaces 用户命名空间作为 name

  • 您位于集群的 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>

8.1.4. 启动停止的工作区

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

先决条件

  • 集群中的一个活跃的 oc 会话。请参阅开始使用 CLI
  • 您知道工作区名称。

    提示

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

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

    提示

    访问 "https://devspaces-<openshift_deployment_name>.<domain_name>"/api/kubernetes/namespace 来获取您的 OpenShift Dev Spaces 用户命名空间作为 name

  • 您位于集群的 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>

8.1.5. 删除工作区

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

警告

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

提示

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

先决条件

  • 集群中的一个活跃的 oc 会话。请参阅开始使用 CLI
  • 您知道工作区名称。

    提示

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

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

    提示

    访问 "https://devspaces-<openshift_deployment_name>.<domain_name>"/api/kubernetes/namespace 来获取您的 OpenShift Dev Spaces 用户命名空间作为 name

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

    提示

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

流程

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

    $ oc delete devworkspace <workspace_name> -n <user_namespace>
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.