3.4. 全局配置工作区


本节论述了管理员如何全局配置工作区。

3.4.1. 限制用户可以保留的工作区数量

默认情况下,用户可以在仪表板中保留无限数量的工作区,但您可以限制这个数量来减少集群的要求。

此配置是 CheCluster 自定义资源的一部分:

spec:
  devEnvironments:
    maxNumberOfWorkspacesPerUser: <kept_workspaces_limit>1
1
设置每个用户的最大工作区数。默认值 -1 允许用户保留无限数量的工作区。使用正整数设置每个用户的最大工作区数。

流程

  1. 获取 OpenShift Dev Spaces 命名空间的名称。默认值为 openshift-devspaces

    $ oc get checluster --all-namespaces \
      -o=jsonpath="{.items[*].metadata.namespace}"
  2. 配置 maxNumberOfWorkspacesPerUser

    $ oc patch checluster/devspaces -n openshift-devspaces \1
    --type='merge' -p \
    '{"spec":{"devEnvironments":{"maxNumberOfWorkspacesPerUser": <kept_workspaces_limit>}}}'2
    1
    您在第 1 步中获取的 OpenShift Dev Spaces 命名空间。
    2
    选择 < kept_workspaces_limit> 值。

3.4.2. 允许用户同时运行多个工作区

默认情况下,一个用户一次只能运行一个工作区。您可以启用用户同时运行多个工作区。

注意

如果使用默认存储方法,如果 pod 在多节点集群中的节点间分布,则用户可能会遇到同时运行工作区时可能会出现问题。从每个用户的 通用 存储策略切换到 per-workspace 存储策略,或 使用临时存储 类型可以避免或解决这些问题。

此配置是 CheCluster 自定义资源的一部分:

spec:
  devEnvironments:
    maxNumberOfRunningWorkspacesPerUser: <running_workspaces_limit>1
1
设置每个用户同时运行工作区的最大数量。-1 值允许用户运行无限数量的工作区。默认值为 1

流程

  1. 获取 OpenShift Dev Spaces 命名空间的名称。默认值为 openshift-devspaces

    $ oc get checluster --all-namespaces \
      -o=jsonpath="{.items[*].metadata.namespace}"
  2. 配置 maxNumberOfRunningWorkspacesPerUser

    $ oc patch checluster/devspaces -n openshift-devspaces \1
    --type='merge' -p \
    '{"spec":{"devEnvironments":{"maxNumberOfRunningWorkspacesPerUser": <running_workspaces_limit>}}}'2
    1
    您在第 1 步中获取的 OpenShift Dev Spaces 命名空间。
    2
    选择 < running_workspaces_limit> 值。

3.4.3. 带有自签名证书的 Git

您可以配置 OpenShift Dev Spaces,以支持使用自签名证书的 Git 供应商上的操作。

先决条件

  • 具有 OpenShift 集群的管理权限的活跃 oc 会话。请参阅 OpenShift CLI 入门
  • Git 版本 2 或更高版本

流程

  1. 创建一个新的 ConfigMap,其中包含有关 Git 服务器的详情:

    $ oc create configmap che-git-self-signed-cert \
      --from-file=ca.crt=<path_to_certificate> \  1
      --from-literal=githost=<git_server_url> -n openshift-devspaces  2
    1
    自签名证书的路径。
    2
    指定 Git 服务器 URL 的可选参数,例如 https://git.example.com:8443。在省略时,通过 HTTPS 为所有存储库使用自签名证书。
    注意
    • 证书文件通常存储为 Base64 ASCII 文件,例如:.pem,.crt,.ca-bundle.保存证书文件的所有 ConfigMap 都应该使用 Base64 ASCII 证书,而不是二进制数据证书。
    • 需要信任证书链。如果 ca.crt 由证书颁发机构(CA)签名,则必须将 CA 证书包含在 ca.crt 文件中。
  2. 在 ConfigMap 中添加所需的标签:

    $ oc label configmap che-git-self-signed-cert \
      app.kubernetes.io/part-of=che.eclipse.org -n openshift-devspaces
  3. 配置 OpenShift Dev Spaces 操作对象,以将自签名证书用于 Git 存储库。请参阅 第 3.1.2 节 “使用 CLI 配置 CheCluster 自定义资源”

    spec:
      devEnvironments:
        trustedCerts:
          gitTrustedCertsConfigMapName: che-git-self-signed-cert

验证步骤

  • 创建并启动新的工作区。工作区使用的每个容器都挂载一个包含自签名证书的文件的特殊卷。容器的 /etc/gitconfig 文件包含与 Git 服务器主机(its URL)和 http 部分中证书的路径相关的信息(请参阅有关 git-config的 Git 文档)。

    例 3.11. /etc/gitconfig 文件的内容

    [http "https://10.33.177.118:3000"]
    sslCAInfo = /etc/config/che-git-tls-creds/certificate

3.4.4. 配置工作区 nodeSelector

本节论述了如何为 OpenShift Dev Spaces 工作区的 Pod 配置 nodeSelector

流程

OpenShift Dev Spaces 使用 CHE_WORKSPACE_POD_NODE__SELECTOR 环境变量来配置 nodeSelector。此变量可以包含一组以逗号分隔的 key=value 对,以组成 nodeSelector 规则,或 NULL 来禁用它。

CHE_WORKSPACE_POD_NODE__SELECTOR=disktype=ssd,cpu=xlarge,[key=value]
重要

nodeSelector 必须在 OpenShift Dev Spaces 安装过程中配置。这可防止现有工作区因为卷关联性冲突而无法运行,因为现有工作区 PVC 和 Pod 调度到不同的区中。

为了避免 Pod 和 PVC 调度到大型的多区集群中的不同区中,请创建额外的 StorageClass 对象(请注意 allowedTopologies 字段),这将协调 PVC 创建过程。

通过 CHE_INFRA_KUBERNETES_PVC_STORAGE__CLASS__NAME 环境变量将这个新创建的 StorageClass 的名称传递给 OpenShift Dev Spaces。此变量的默认空值指示 OpenShift Dev Spaces 使用集群的默认 StorageClass

3.4.5. 打开 VSX registry URL

要搜索和安装扩展,Microsoft Visual Studio Code - 开源编辑器使用嵌入式 Open VSX registry 实例。您还可以将 OpenShift Dev Spaces 配置为使用另一个 Open VSX registry 实例,而不是嵌入的 registry 实例。

流程

  • 在 CheCluster 自定义资源 spec.components.pluginRegistry.openVSXURL 字段中设置 Open VSX registry 实例的 URL。

    spec:
       components:
    # [...]
         pluginRegistry:
           openVSXURL: <your_open_vsx_registy>
    # [...]
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.