3.4. 全局配置工作区
本节论述了管理员如何全局配置工作区。
3.4.1. 限制用户可以保留的工作区数量
默认情况下,用户可以在仪表板中保留无限数量的工作区,但您可以限制这个数量来减少集群的要求。
此配置是 CheCluster
自定义资源的一部分:
spec: devEnvironments: maxNumberOfWorkspacesPerUser: <kept_workspaces_limit>1
- 1
- 设置每个用户的最大工作区数。默认值
-1
允许用户保留无限数量的工作区。使用正整数设置每个用户的最大工作区数。
流程
获取 OpenShift Dev Spaces 命名空间的名称。默认值为
openshift-devspaces
。$ oc get checluster --all-namespaces \ -o=jsonpath="{.items[*].metadata.namespace}"
配置
maxNumberOfWorkspacesPerUser
:$ oc patch checluster/devspaces -n openshift-devspaces \1 --type='merge' -p \ '{"spec":{"devEnvironments":{"maxNumberOfWorkspacesPerUser": <kept_workspaces_limit>}}}'2
3.4.2. 允许用户同时运行多个工作区
默认情况下,一个用户一次只能运行一个工作区。您可以启用用户同时运行多个工作区。
如果使用默认存储方法,如果 pod 在多节点集群中的节点间分布,则用户可能会遇到同时运行工作区时可能会出现问题。从每个用户的 通用
存储策略切换到 per-workspace
存储策略,或 使用临时存储
类型可以避免或解决这些问题。
此配置是 CheCluster
自定义资源的一部分:
spec: devEnvironments: maxNumberOfRunningWorkspacesPerUser: <running_workspaces_limit>1
- 1
- 设置每个用户同时运行工作区的最大数量。
-1
值允许用户运行无限数量的工作区。默认值为1
。
流程
获取 OpenShift Dev Spaces 命名空间的名称。默认值为
openshift-devspaces
。$ oc get checluster --all-namespaces \ -o=jsonpath="{.items[*].metadata.namespace}"
配置
maxNumberOfRunningWorkspacesPerUser
:$ oc patch checluster/devspaces -n openshift-devspaces \1 --type='merge' -p \ '{"spec":{"devEnvironments":{"maxNumberOfRunningWorkspacesPerUser": <running_workspaces_limit>}}}'2
3.4.3. 带有自签名证书的 Git
您可以配置 OpenShift Dev Spaces,以支持使用自签名证书的 Git 供应商上的操作。
先决条件
-
具有 OpenShift 集群的管理权限的活跃
oc
会话。请参阅 OpenShift CLI 入门。 - Git 版本 2 或更高版本
流程
创建一个新的 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
文件中。
在 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 服务器主机(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> # [...]