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 在多节点集群中的节点间分布,用户可能会在同时运行工作区时遇到问题。从每个用户的 通用
存储策略切换到 每个工作区
存储策略,或 使用临时存储
类型来避免或解决这些问题。
此配置是 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=<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 服务器主机(it 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
要搜索并安装扩展,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> # [...]