第 3 章 配置 Dev Spaces
本节论述了 Red Hat OpenShift Dev Spaces 的配置方法和选项。
3.1. 了解 CheCluster
自定义资源
OpenShift Dev Spaces 的默认部署由 Red Hat OpenShift Dev Spaces Operator 由一个 CheCluster
自定义资源参数组成。
CheCluster
自定义资源是一个 Kubernetes 对象。您可以通过编辑 CheCluster
自定义资源 YAML 文件来配置它。此文件包含配置每个组件的部分: devWorkspace
、cheServer
、pluginRegistry
、devfileRegistry
、仪表板和
imagePuller
。
Red Hat OpenShift Dev Spaces Operator 将 CheCluster
自定义资源转换为 OpenShift Dev Spaces 安装的每个组件可用的配置映射中。
OpenShift 平台将配置应用到每个组件,并创建所需的 Pod。当 OpenShift 检测到一个组件的配置中有更改时,它会相应地重启 Pod。
例 3.1. 配置 OpenShift Dev Spaces 服务器组件的主要属性
-
在
cheServer
组件部分中应用带有适当修改的CheCluster
自定义资源 YAML 文件。 -
Operator 生成
che
ConfigMap
。 -
OpenShift 检测到
ConfigMap
中的更改,并触发 OpenShift Dev Spaces Pod 重启。
其他资源
3.1.1. 在安装过程中使用 dsc 配置 CheCluster
自定义资源
要使用合适的配置部署 OpenShift Dev Spaces,请在安装 OpenShift Dev Spaces 的过程中编辑 CheCluster
自定义资源 YAML 文件。否则,OpenShift Dev Spaces 部署使用 Operator 的默认配置参数。
先决条件
-
具有 OpenShift 集群管理权限的活跃的
oc
会话。请参阅 CLI 入门。 -
DSC
.请参阅:第 1.2 节 “安装 dsc 管理工具”。
流程
创建一个
che-operator-cr-patch.yaml
YAML 文件,其中包含要配置的CheCluster
自定义资源的子集:spec: <component>: <property_to_configure>: <value>
部署 OpenShift Dev Spaces 并应用
che-operator-cr-patch.yaml
文件中描述的更改:$ dsc server:deploy \ --che-operator-cr-patch-yaml=che-operator-cr-patch.yaml \ --platform <chosen_platform>
验证
验证配置的属性的值:
$ oc get configmap che -o jsonpath='{.data.<configured_property>}' \ -n openshift-devspaces
3.1.2. 使用 CLI 配置 CheCluster 自定义资源
要配置 OpenShift Dev Spaces 的运行实例,请编辑 CheCluster
自定义资源 YAML 文件。
先决条件
- OpenShift 上的 OpenShift Dev Spaces 实例。
-
对目标 OpenShift 集群具有管理权限的活动
oc
会话。请参阅 CLI 入门。
流程
编辑集群中的 CheCluster 自定义资源:
$ oc edit checluster/devspaces -n openshift-devspaces
- 保存并关闭该文件以应用更改。
验证
验证配置的属性的值:
$ oc get configmap che -o jsonpath='{.data.<configured_property>}' \ -n openshift-devspaces
3.1.3. CheCluster
自定义资源字段参考
本节介绍可用于自定义 CheCluster
自定义资源的所有字段。
例 3.2. 最小的 CheCluster
自定义资源示例。
apiVersion: org.eclipse.che/v2 kind: CheCluster metadata: name: devspaces namespace: openshift-devspaces spec: components: {} devEnvironments: {} networking: {}
属性 | 描述 | default |
---|---|---|
containerBuildConfiguration | 容器构建配置。 | |
defaultComponents | 应用到 DevWorkspace 的默认组件。这些默认组件旨在在 Devfile (不包含任何组件)时使用。 | |
defaultEditor |
要创建工作区的默认编辑器。它可以是插件 ID 或 URI。插件 ID 必须具有 | |
defaultNamespace | 用户的默认命名空间。 | { "autoProvision": true, "template": "<username>-che"} |
defaultPlugins | 应用到 DevWorkspace 的默认插件。 | |
deploymentStrategy |
DeploymentStrategy 定义部署策略,用于将现有工作区 pod 替换为新 pod。可用的部署模块是 | |
disableContainerBuildCapabilities |
禁用容器构建功能。当设置为 | |
gatewayContainer | GatewayContainer 配置。 | |
imagePullPolicy | imagePullPolicy 定义用于 DevWorkspace 中容器的 imagePullPolicy。 | |
maxNumberOfRunningWorkspacesPerUser | 每个用户的最大运行工作区数。值 -1 允许用户运行无限数量的工作区。 | |
maxNumberOfWorkspacesPerUser | 用户可以保留的工作区总数,包括已停止和运行。值 -1 允许用户保留无限数量的工作区。 | -1 |
nodeSelector | 节点选择器限制可运行工作区 pod 的节点。 | |
persistUserHome | PersistUserHome 定义用于在工作区中保留用户主目录的配置选项。 | |
podSchedulerName | 工作区 pod 的 Pod 调度程序。如果没有指定,pod 调度程序被设置为集群中的默认调度程序。 | |
projectCloneContainer | 项目克隆容器配置。 | |
secondsOfInactivityBeforeIdling | 空闲的超时时间(以秒为单位)。此超时是持续时间,之后如果没有活动,则工作区将闲置。要禁用因为不活跃的工作区闲置,请将此值设置为 -1。 | 1800 |
secondsOfRunBeforeIdling | 为工作区运行超时(以秒为单位)。此超时是工作区运行的最长持续时间。要禁用工作区运行超时,请将此值设置为 -1。 | -1 |
安全 | 工作区安全配置。 | |
serviceAccount | 启动工作区时,由 DevWorkspace operator 使用的 ServiceAccount。 | |
serviceAccountTokens | 将作为投射卷挂载到工作区 pod 中的 ServiceAccount 令牌列表。 | |
startTimeoutSeconds | StartTimeoutSeconds 决定工作区在自动失败前可以开始的最长时间(以秒为单位)。如果没有指定,则使用默认值 300 秒(5 分钟)。 | 300 |
storage | 工作区持久性存储。 | { "pvcStrategy": "per-user"} |
容限(tolerations) | 工作区 pod 的 pod 容限限制工作区 pod 可以运行的位置。 | |
trustedCerts | 可信证书设置。 | |
user | 用户配置。 | |
workspacesPodAnnotations | WorkspacesPodAnnotations 为工作区 pod 定义额外的注解。 |
属性 | 描述 | default |
---|---|---|
autoProvision | 指明是否允许自动创建用户命名空间。如果设置为 false,则集群管理员必须预先创建用户命名空间。 | true |
模板 |
如果您没有提前创建用户命名空间,此字段定义启动第一个工作区时创建的 Kubernetes 命名空间。您可以使用 < | "<username>-che" |
属性 | 描述 | default |
---|---|---|
Editor |
用于指定默认插件的编辑器 ID。插件 ID 必须具有 | |
plugins | 指定编辑器的默认插件 URI。 |
属性 | 描述 | default |
---|---|---|
env | 容器中要设置的环境变量列表。 | |
image | 容器镜像。省略它或留空,以使用 Operator 提供的默认容器镜像。 | |
imagePullPolicy |
镜像拉取(pull)策略。对于 | |
name | 容器名称。 | |
resources | 此容器所需的计算资源。 |
属性 | 描述 | default |
---|---|---|
perUserStrategyPvcConfig |
使用 | |
perWorkspaceStrategyPvcConfig |
使用 | |
pvcStrategy |
OpenShift Dev Spaces 服务器的持久性卷声明策略。支持的策略有: | "per-user" |
属性 | 描述 | default |
---|---|---|
claimSize | 持久性卷声明大小。要更新声明大小,置备它的存储类必须支持调整大小。 | |
storageClass | 持久性卷声明的存储类。当省略或留空时,会使用默认存储类。 |
属性 | 描述 | default |
---|---|---|
claimSize | 持久性卷声明大小。要更新声明大小,置备它的存储类必须支持调整大小。 | |
storageClass | 持久性卷声明的存储类。当省略或留空时,会使用默认存储类。 |
属性 | 描述 | default |
---|---|---|
gitTrustedCertsConfigMapName |
ConfigMap 包含要传播到 OpenShift Dev Spaces 组件的证书,并为 Git 提供特定的配置。请参见以下页面 :https://www.eclipse.org/che/docs/stable/administration-guide/deploying-che-with-support-for-git-repositories-with-self-signed-certificates/ ConfigMap 必须有一个 |
属性 | 描述 | default |
---|---|---|
openShiftSecurityContextConstraint | 构建容器的 OpenShift 安全性上下文约束。 | "container-build" |
属性 | 描述 | default |
---|---|---|
cheServer | 与 OpenShift Dev Spaces 服务器相关的常规配置设置。 | { "debug": false, "logLevel": "INFO"} |
dashboard | 与 OpenShift Dev Spaces 安装使用的仪表板相关的配置设置。 | |
devWorkspace | DevWorkspace Operator 配置。 | |
devfileRegistry | 与 OpenShift Dev Spaces 安装使用的 devfile registry 相关的配置设置。 | |
imagePuller | Kubernetes Image Puller 配置。 | |
metrics | OpenShift Dev Spaces 服务器指标配置。 | { "enable": true} |
pluginRegistry | 与 OpenShift Dev Spaces 安装使用的插件 registry 相关的配置设置。 |
属性 | 描述 | default |
---|---|---|
clusterRoles |
分配给 OpenShift Dev Spaces ServiceAccount 的额外 ClusterRole。每个角色都必须有一个 | |
debug | 为 OpenShift Dev Spaces 服务器启用调试模式。 | false |
部署 | 部署覆盖选项。 | |
extraProperties |
在生成的 | |
logLevel |
OpenShift Dev Spaces 服务器的日志级别: | "INFO" |
proxy | Kubernetes 集群的代理服务器设置。OpenShift 集群不需要额外的配置。通过为 OpenShift 集群指定这些设置,您可以覆盖 OpenShift 代理配置。 |
属性 | 描述 | default |
---|---|---|
credentialsSecretName |
包含代理服务器 | |
nonProxyHosts |
可直接到达的主机列表,绕过代理。指定通配符域,格式为 | |
port | 代理服务器端口。 | |
url |
代理服务器的 URL (protocol+hostname)。仅在需要代理配置时使用。Operator 遵循 OpenShift 集群范围的代理配置,在自定义资源中定义 |
属性 | 描述 | default |
---|---|---|
部署 | 部署覆盖选项。 | |
disableInternalRegistry | 禁用内部插件 registry。 | |
externalPluginRegistries | 外部插件 registry。 | |
openVSXURL | 打开 VSX 注册表 URL。如果省略了嵌入的实例。 |
属性 | 描述 | default |
---|---|---|
url | 插件 registry 的公共 URL。 |
属性 | 描述 | default |
---|---|---|
部署 | 部署覆盖选项。 | |
disableInternalRegistry | 禁用内部 devfile registry。 | |
externalDevfileRegistries | 外部 devfile registry 为示例可用的 devfile 提供示例。 |
属性 | 描述 | default |
---|---|---|
url | devfile registry 的公共 UR,提供示例 ready-to-use devfiles。 |
属性 | 描述 | default |
---|---|---|
品牌 | 仪表板品牌资源. | |
部署 | 部署覆盖选项。 | |
headerMessage | 仪表板标题消息。 | |
logLevel | 控制面板的日志级别。 | "ERROR" |
属性 | 描述 | default |
---|---|---|
显示 | 指示仪表板显示消息。 | |
text | 用户仪表板上显示警告消息。 |
属性 | 描述 | default |
---|---|---|
enable |
安装和配置社区支持的 Kubernetes Image Puller Operator。当您在不提供任何 spec 的情况下将值设为 | |
spec | 在 CheCluster 中配置镜像拉取器的 Kubernetes Image Puller spec。 |
属性 | 描述 | default |
---|---|---|
enable |
为 OpenShift Dev Spaces 服务器端点启用 | true |
属性 | 描述 | default |
---|---|---|
azure | 让用户能够处理托管在 Azure DevOps Service (dev.azure.com)上的存储库。 | |
Bitbucket | 允许用户处理托管在 Bitbucket 上的存储库(bitbucket.org 或自托管)。 | |
github | 允许用户使用托管在 GitHub 上的软件仓库(github.com 或 GitHub Enterprise)。 | |
gitlab | 让用户能够处理托管在 GitLab 上的存储库(gitlab.com 或自托管)。 |
属性 | 描述 | default |
---|---|---|
disableSubdomainIsolation |
禁用子域隔离。弃用了 | |
端点 |
GitHub 服务器端点 URL。弃用了 | |
secretName | Kubernetes secret,其中包含 Base64 编码的 GitHub OAuth 客户端 ID 和 GitHub OAuth 客户端 secret。详情请查看以下页面 :https://www.eclipse.org/che/docs/stable/administration-guide/configuring-oauth-2-for-github/。 |
属性 | 描述 | default |
---|---|---|
端点 |
GitLab 服务器端点 URL。弃用了 | |
secretName | Kubernetes secret,其中包含 Base64 编码的 GitHub Application id 和 GitLab Application Client secret。请参见以下页面 :https://www.eclipse.org/che/docs/stable/administration-guide/configuring-oauth-2-for-gitlab/。 |
属性 | 描述 | default |
---|---|---|
端点 |
Bitbucket 服务器端点 URL。弃用了 | |
secretName | Kubernetes secret,其中包含 Base64 编码的 Bitbucket OAuth 1.0 或 OAuth 2.0 数据。详情请查看以下页面: https://www.eclipse.org/che/docs/stable/administration-guide/configuring-oauth-1-for-a-bitbucket-server/ 和 https://www.eclipse.org/che/docs/stable/administration-guide/configuring-oauth-2-for-the-bitbucket-cloud/。 |
属性 | 描述 | default |
---|---|---|
secretName | Kubernetes secret,其中包含 Base64 编码的 Azure DevOps Service Application ID 和 Client Secret。请参见以下页面: https://www.eclipse.org/che/docs/stable/administration-guide/configuring-oauth-2-for-microsoft-azure-devops-services |
属性 | 描述 | default |
---|---|---|
annotations | 定义要为 Ingress 设置的注解(OpenShift 平台的路由)。kubernetes 平台的默认值为:kubernetes.io/ingress.class: "nginx" nginx.ingress.kubernetes.io/proxy-read-timeout: "3600", nginx.ingress.kubernetes.io/proxy-connect-timeout: "3600", nginx.ingress.kubernetes.io/ssl-redirect: "true" | |
auth | 身份验证设置. | { "gateway": { "configLabels": { "app": "che", "component": "che-gateway-config" } }} |
domain | 对于 OpenShift 集群,Operator 使用域为路由生成主机名。生成的主机名遵循以下模式:che-<devspaces-namespace>.<domain>。<devspaces-namespace> 是创建 CheCluster CRD 的命名空间。与标签结合使用,它会创建一个由非默认 Ingress 控制器提供的路由。对于 Kubernetes 集群,它包含一个全局入口域。没有默认值:您必须指定它们。 | |
hostname | 安装的 OpenShift Dev Spaces 服务器的公共主机名。 | |
ingressClassName |
ingressClassName 是 IngressClass 集群资源的名称。如果在 | |
labels | 定义要为 Ingress 设置的标签(OpenShift 平台的路由)。 | |
tlsSecretName |
用于设置 Ingress TLS 终止的 secret 名称。如果该字段是空字符串,则使用默认集群证书。secret 必须具有 |
属性 | 描述 | default |
---|---|---|
advancedAuthorization |
提前授权设置。决定允许哪些用户和组访问 Che。如果用户被允许访问 OpenShift Dev Spaces,如果他位于 | |
gateway | 网关设置. | { "configLabels": { "app": "che", "component": "che-gateway-config" }} |
identityProviderURL | 身份提供程序服务器的公共 URL。 | |
identityToken |
要传递给上游的身份令牌。支持的令牌有两种: | |
oAuthAccessTokenInactivityTimeoutSeconds |
在 OpenShift | |
oAuthAccessTokenMaxAgeSeconds |
在 OpenShift | |
oAuthClientName |
用于在 OpenShift 端设置身份联邦的 OpenShift | |
oAuthScope | 访问令牌范围.此字段特定于仅用于 Kubernetes 的 OpenShift Dev Spaces 安装,并针对 OpenShift 忽略。 | |
oAuthSecret |
在 OpenShift |
属性 | 描述 | default |
---|---|---|
configLabels | 网关配置标签。 | { "app": "che", "component": "che-gateway-config"} |
部署 |
部署覆盖选项。由于网关部署由多个容器组成,因此必须使用其名称来区分它们: - | |
kubeRbacProxy | 在 OpenShift Dev Spaces 网关 pod 中配置 kube-rbac-proxy。 | |
oAuthProxy | 在 OpenShift Dev Spaces 网关 pod 中配置 oauth-proxy。 | |
Traefik | 配置 OpenShift Dev Spaces 网关 pod 中的 Traefik。 |
属性 | 描述 | default |
---|---|---|
hostname | 从中拉取镜像的替代容器 registry 的可选主机名或 URL。这个值会覆盖 OpenShift Dev Spaces 部署中涉及的所有默认容器镜像中定义的容器 registry 主机名。这在受限环境中安装 OpenShift Dev Spaces 特别有用。 | |
机构 | 从中拉取镜像的替代 registry 的可选存储库名称。这个值会覆盖 OpenShift Dev Spaces 部署中涉及的所有默认容器镜像中定义的容器 registry 组织。这在受限环境中安装 OpenShift Dev Spaces 特别有用。 |
属性 | 描述 | default |
---|---|---|
containers | 属于 pod 的容器列表。 | |
securityContext | Pod 运行的安全选项。 |
属性 | 描述 | default |
---|---|---|
env | 容器中要设置的环境变量列表。 | |
image | 容器镜像。省略它或留空,以使用 Operator 提供的默认容器镜像。 | |
imagePullPolicy |
镜像拉取(pull)策略。对于 | |
name | 容器名称。 | |
resources | 此容器所需的计算资源。 |
属性 | 描述 | default |
---|---|---|
limits | 描述允许的最大计算资源量。 | |
request | 描述所需的最少计算资源。 |
属性 | 描述 | default |
---|---|---|
cpu |
CPU,以内核为单位。(500M = .5 个内核)如果没有指定值,则根据组件设置默认值。如果值为 | |
内存 |
内存,以字节为单位。(500Gi = 500GiB = 500 * 1024 * 1024 * 1024),如果没有指定值,则根据组件设置默认值。如果值为 |
属性 | 描述 | default |
---|---|---|
cpu |
CPU,以内核为单位。(500M = .5 个内核)如果没有指定值,则根据组件设置默认值。如果值为 | |
内存 |
内存,以字节为单位。(500Gi = 500GiB = 500 * 1024 * 1024 * 1024),如果没有指定值,则根据组件设置默认值。如果值为 |
属性 | 描述 | default |
---|---|---|
fsGroup |
适用于 pod 中所有容器的特殊补充组。默认值为 | |
runAsUser |
用于运行容器进程的入口点的 UID。默认值为 |
属性 | 描述 | default |
---|---|---|
chePhase | 指定 OpenShift Dev Spaces 部署的当前阶段。 | |
cheURL | OpenShift Dev Spaces 服务器的公共 URL。 | |
cheVersion | 当前安装的 OpenShift Dev Spaces 版本。 | |
devfileRegistryURL | 内部 devfile registry 的公共 URL。 | |
gatewayPhase | 指定网关部署的当前阶段。 | |
message | 人类可读的消息,指示 OpenShift Dev Spaces 部署处于当前阶段的详情。 | |
pluginRegistryURL | 内部插件 registry 的公共 URL。 | |
reason | 简短的 CamelCase 消息显示 OpenShift Dev Spaces 部署处于当前阶段的详情。 | |
workspaceBaseDomain | 解析的工作空间基域。这是在 spec 中明确定义相同名称的属性的副本,如果 spec 中未定义,且我们在 OpenShift 上运行,则会自动解析路由的 basedomain。 |