3.4. 全局配置工作区
这部分论述了如何全局配置工作区。
3.4.1. 限制用户可以保留的工作区数量
默认情况下,用户可以在仪表板中保留无限个工作区,但您可以限制这个数量来减少对集群的需求。
此配置是 CheCluster
自定义资源的一部分:
spec: components: cheServer: extraProperties: CHE_LIMITS_USER_WORKSPACES_COUNT: "<kept_workspaces_limit>" 1
- 1
- 设置每个用户的最大工作区数。默认值
-1
允许用户保留无限数量的工作区。使用正整数来设置每个用户的最大工作区数。
流程
获取 OpenShift Dev Spaces 命名空间的名称。默认为
openshift-devspaces
。$ oc get checluster --all-namespaces \ -o=jsonpath="{.items[*].metadata.namespace}"
配置
CHE_LIMITS_USER_WORKSPACES_COUNT
:$ oc patch checluster/devspaces -n openshift-devspaces \1 --type='merge' -p \ '{"spec":{"components":{"cheServer":{"extraProperties":{"CHE_LIMITS_USER_WORKSPACES_COUNT": "<kept_workspaces_limit>"}}}}}' 2
3.4.2. 允许用户同时运行多个工作区
默认情况下,用户一次只能运行一个工作区。您可以让用户同时运行多个工作区。
如果使用默认存储方法,如果用户在多节点集群中分布 pod 时,当同时运行工作区时,用户可能会出现问题。从每位用户的 通用存储策略
切换到 每个工作区存储策略
,或 使用临时存储
类型可以避免或解决这些问题。
此配置是 CheCluster
自定义资源的一部分:
spec: components: devWorkspace: runningLimit: "<running_workspaces_limit>" 1
- 1
- 设置每个用户同时运行工作区的最大数量。默认值为:
1
。
流程
获取 OpenShift Dev Spaces 命名空间的名称。默认为
openshift-devspaces
。$ oc get checluster --all-namespaces \ -o=jsonpath="{.items[*].metadata.namespace}"
配置
runningLimit
:$ oc patch checluster/devspaces -n openshift-devspaces \1 --type='merge' -p \ '{"spec":{"components":{"devWorkspace":{"runningLimit": "<running_workspaces_limit>"}}}}' 2
3.4.3. 带有自签名证书的 Git
您可以配置 OpenShift Dev Spaces,以支持使用自签名证书的 Git 供应商上的操作。
先决条件
-
具有 OpenShift 集群的管理权限的活跃
oc
会话。请参阅 OpenShift CLI 入门。 - Git 版本 2 或更高版本
流程
使用 Git 服务器详情创建新 ConfigMap:
$ oc create configmap che-git-self-signed-cert \ --from-file=ca.crt=<path_to_certificate> \ 1 --from-literal=githost=<host:port> -n openshift-devspaces 2
注意-
如果没有指定
githost
,则给定证书适用于所有 HTTPS 存储库。 -
证书文件通常存储为 Base64 ASCII 文件,例如:
.pem
、.crt
、.ca-bundle
.另外,它们可以编码为二进制数据,如.cer
。所有包含证书文件的Secret
都应该使用 Base64 ASCII 证书而不是二进制数据证书。
-
如果没有指定
在 ConfigMap 中添加所需的标签:
$ oc label configmap che-git-self-signed-cert \ app.kubernetes.io/part-of=che.eclipse.org -n openshift-devspaces
配置 OpenShift Dev Spaces 操作对象,以便为 Git 存储库使用自签名证书。请参阅 第 3.1.2 节 “使用 CLI 配置 CheCluster 自定义资源”。
spec: devEnvironments: trustedCerts: gitTrustedCertsConfigMapName: che-git-self-signed-cert
验证步骤
创建并启动新工作区。工作区使用的每个容器都挂载一个带有自签名证书的文件的特殊卷。容器的
/etc/gitconfig
文件包含有关 Git 服务器主机( 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
对象(注意 允许的Topologies
字段),这将协调 PVC 创建过程。
通过 CHE_INFRA_KUBERNETES_PVC_STORAGE_CLASS_NAME
环境变量将这个新创建的 StorageClass
名称传递给 OpenShift Dev Spaces。这个变量的默认空值指示 OpenShift Dev Spaces 使用集群的默认 StorageClass
。
3.4.5. 打开 VSX registry URL
为了搜索并安装扩展,Visis Studio Code 编辑器使用嵌入的 Open VSX 注册表实例。您还可以将 OpenShift Dev Spaces 配置为使用另一个 Open VSX registry 实例,而不是嵌入的实例。
流程
在 CheCluster Custom Resource
spec.components.pluginRegistry.openVSXURL
字段中设置 Open VSX registry 实例的 URL。spec: components: # [...] pluginRegistry: openVSXRegistryURL: <your_open_vsx_registy> # [...]