第 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 文件来配置它。此文件包含用于配置每个组件的部分: devWorkspacecheServerpluginRegistrydevfileRegistry仪表板和 imagePuller

Red Hat OpenShift Dev Spaces Operator 将 CheCluster 自定义资源转换为 OpenShift Dev Spaces 安装的每个组件可用的配置映射。

OpenShift 平台将配置应用到每个组件,并创建必要的 Pod。当 OpenShift 检测到一个组件的配置中有更改时,它会相应地重启 Pod。

例 3.1. 配置 OpenShift Dev Spaces 服务器组件的主要属性

  1. cheServer 组件部分中应用带有适当修改的 CheCluster 自定义资源 YAML 文件。
  2. Operator 生成 che ConfigMap
  3. OpenShift 会检测 ConfigMap 中的更改,并触发 OpenShift Dev Spaces Pod 重启。

3.1.1. 在安装过程中使用 dsc 配置 CheCluster 自定义资源

要使用适当的配置部署 OpenShift Dev Spaces,请在安装 OpenShift Dev Spaces 时编辑 CheCluster 自定义资源 YAML 文件。否则,OpenShift Dev Spaces 部署使用 Operator 的默认配置参数。

先决条件

流程

  • 创建一个 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>

验证

  1. 验证配置的属性的值:

    $ 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 入门

流程

  1. 编辑集群中的 CheCluster 自定义资源:

    $ oc edit checluster/devspaces -n openshift-devspaces
  2. 保存并关闭该文件以应用更改。

验证

  1. 验证配置的属性的值:

    $ 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: {}
表 3.1. 开发环境配置选项。
属性描述default

containerBuildConfiguration

容器构建配置。

 

defaultComponents

应用到 DevWorkspace 的默认组件。这些默认组件旨在在 Devfile 中不包含任何组件时使用。

 

defaultEditor

要使用以下内容创建工作区创建的默认编辑器。它可以是插件 ID 或 URI。插件 ID 必须具有 publisher/plugin/version 格式。URI 必须从 http://https:// 开始。

 

defaultNamespace

用户的默认命名空间。

{ "autoProvision": true, "template": "<username>-che"}

defaultPlugins

应用到 DevWorkspace 的默认插件。

 

deploymentStrategy

DeploymentStrategy 定义用于将现有工作区 pod 替换为新工作区的部署策略。可用的部署是 RecreateRollingUpdate。使用 Recreate 部署策略时,现有工作区 pod 会在创建新工作区 pod 前被终止。使用 RollingUpdate 部署策略时,会创建一个新的工作区 pod,只有在新的工作区 Pod 处于 ready 状态时,现有的工作区 pod 才会被删除。如果没有指定,则使用默认的 Recreate 部署策略。

 

disableContainerBuildCapabilities

禁用容器构建功能。

 

gatewayContainer

GatewayContainer 配置.

 

maxNumberOfRunningWorkspacesPerUser

每个用户运行工作区的最大数量。值 -1 允许用户运行无限数量的工作区。

 

maxNumberOfWorkspacesPerUser

已停止和运行的工作空间总数,用户可以保留该工作区。值 -1 允许用户保留无限数量的工作区。

-1

nodeSelector

节点选择器限制可以运行工作区 pod 的节点。

 

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

用户配置。

 
表 3.2. defaultNamespace 选项。
属性描述default

autoProvision

指明是否允许自动创建用户命名空间。如果设置为 false,则必须由集群管理员预先创建用户命名空间。

true

模板

如果没有提前创建用户命名空间,此字段定义在启动第一个工作区时创建的 Kubernetes 命名空间。您可以使用 < username> 和 & lt;userid& gt; 占位符,如 che-workspace-<username>。

"<username>-che"

表 3.3. defaultPlugins 选项。
属性描述default

editor

用于为其指定默认插件的编辑器 ID。

 

plugins

指定编辑器的默认插件 URI。

 
表 3.4. gatewayContainer 选项。
属性描述default

env

要在容器中设置的环境变量列表。

 

image

容器镜像。省略它或将其留空,以使用 Operator 提供的默认容器镜像。

 

imagePullPolicy

镜像拉取策略。默认值为 Always 每天下一个最新的镜像,其他情况下为 IfNotPresent

 

name

容器名称。

 

资源

此容器所需的计算资源。

 
表 3.5. 存储选项。
属性描述default

perUserStrategyPvcConfig

使用 per-user PVC 策略时的 PVC 设置。

 

perWorkspaceStrategyPvcConfig

使用 per-workspace PVC 策略时的 PVC 设置。

 

pvcStrategy

OpenShift Dev Spaces 服务器的持久性卷声明策略。支持的策略有:per-user(一个卷中的所有工作区 PVC)、per-workspace(每个工作区都有自己的独立 PVC)和 ephemeral(非持久性存储,当工作区停止时本地的变化会丢失。)

"per-user"

表 3.6. 按用户的 PVC 策略选项。
属性描述default

claimSize

持久性卷声明大小。要更新声明大小,置备它的存储类必须支持调整大小。

 

storageClass

持久性卷声明的存储类。当忽略或留空时,会使用默认存储类。

 
表 3.7. per-workspace PVC 策略选项。
属性描述default

claimSize

持久性卷声明大小。要更新声明大小,置备它的存储类必须支持调整大小。

 

storageClass

持久性卷声明的存储类。当忽略或留空时,会使用默认存储类。

 
表 3.8. trustedCerts 选项。
属性描述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 必须具有 app.kubernetes.io/part-of=che.eclipse.org 标签。

 
表 3.9. containerBuildConfiguration 选项。
属性描述default

openShiftSecurityContextConstraint

构建容器的 OpenShift 安全性上下文约束。

"container-build"

表 3.10. OpenShift Dev Spaces 组件配置。
属性描述default

cheServer

与 OpenShift Dev Spaces 服务器相关的常规配置设置。

{ "debug": false, "logLevel": "INFO"}

dashboard

与 OpenShift Dev Spaces 安装使用的仪表板相关的配置设置。

 

数据库

与 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 相关的配置设置。

 
表 3.11. 与 OpenShift Dev Spaces 服务器组件相关的常规配置设置。
属性描述default

clusterRoles

分配给 OpenShift Dev Spaces ServiceAccount 的额外 ClusterRole。每个角色都必须有一个 app.kubernetes.io/part-of=che.eclipse.org 标签。默认角色为:- < devspaces-namespace>-cheworkspaces-clusterrole - <devspaces-namespace>-cheworkspaces-namespaces-clusterrole - <devspaces-namespace>-cheworkspaces-devworkspace-clusterrole,其中 <devspaces-namespace> 是创建 CheCluster CR 的命名空间。OpenShift Dev Spaces Operator 必须已在这些 ClusterRole 中拥有所有权限才能授予它们。

 

debug

为 OpenShift Dev Spaces 服务器启用 debug 模式。

false

部署

部署覆盖选项。

 

extraProperties

除了从 CheCluster 自定义资源(CR)的其他字段外,OpenShift Dev Spaces 服务器还会使用生成的 che ConfigMap 中使用的额外环境变量映射。如果 extraProperties 字段包含从其他 CR 字段的 che ConfigMap 中生成的属性,则改为使用 extraProperties 中定义的值。

 

logLevel

OpenShift Dev Spaces 服务器的日志级别: INFODEBUG

"INFO"

proxy

Kubernetes 集群的代理服务器设置。OpenShift 集群不需要额外的配置。通过为 OpenShift 集群指定这些设置,您可以覆盖 OpenShift 代理配置。

 
表 3.12. 代理 选项。
属性描述default

credentialsSecretName

包含代理服务器 的用户名和密码 的 secret 名称。secret 必须具有 app.kubernetes.io/part-of=che.eclipse.org 标签。

 

nonProxyHosts

可直接到达的主机列表,绕过代理。指定通配符域,使用以下形式 .<DOMAIN& gt;,例如: - localhost - my.host.com - 123.42.12.32 仅在需要代理配置时才使用。Operator 尊重 OpenShift 集群范围的代理配置,在自定义资源中定义 nonProxyHosts 会导致从集群代理配置中合并非proxy 主机列表,以及自定义资源中定义的名称。请参见以下页面 :https://docs.openshift.com/container-platform/4.4/networking/enable-cluster-wide-proxy.html。

 

端口

代理服务器端口。

 

url

代理服务器的 URL (协议+主机名)。仅在需要代理配置时才使用。Operator 尊重 OpenShift 集群范围的代理配置,在自定义资源中定义 url 会导致覆盖集群代理配置。请参见以下页面 :https://docs.openshift.com/container-platform/4.4/networking/enable-cluster-wide-proxy.html。

 
表 3.13. 与 OpenShift Dev Spaces 安装使用的插件 registry 组件相关的配置设置。
属性描述default

部署

部署覆盖选项。

 

disableInternalRegistry

禁用内部插件 registry。

 

externalPluginRegistries

外部插件 registry。

 

openVSXURL

打开 VSX 注册表 URL。如果省略了嵌入式实例,则将使用。

 
表 3.14. externalPluginRegistries 选项。
属性描述default

url

插件 registry 的公共 URL。

 
表 3.15. 与 OpenShift Dev Spaces 安装使用的 Devfile registry 组件相关的配置设置。
属性描述default

部署

部署覆盖选项。

 

disableInternalRegistry

禁用内部 devfile registry。

 

externalDevfileRegistries

外部 devfile registry 提供示例 ready-to-use devfile。

 
表 3.16. ExternalDevfileRegistries 选项。
属性描述default

url

devfile registry 的公共 UR 提供示例 ready-to-use devfile。

 
表 3.17. 与 OpenShift Dev Spaces 安装使用的 Dashboard 组件相关的配置设置。
属性描述default

部署

部署覆盖选项。

 

headerMessage

仪表板标头消息。

 
表 3.18. headerMessage 选项。
属性描述default

显示

指示仪表板显示消息。

 

text

用户仪表板上显示的警告消息。

 
表 3.19. Kubernetes Image Puller 组件配置。
属性描述default

enable

安装和配置社区支持的 Kubernetes Image Puller Operator。当您在不提供任何 spec 的情况下将值设为 true 时,它会创建一个由 Operator 管理的默认 Kubernetes Image Puller 对象。当您将值设为 false 时,Kubernetes Image Puller 对象会被删除,Operator 会卸载,无论是否提供了 spec。如果将 spec.images 字段留空,则会自动检测到一组推荐的与工作区相关的镜像,并在安装后预先拉取。请注意,虽然此 Operator 及其行为受社区支持,但其有效负载可能被商业支持用于拉取商业支持的镜像。

 

spec

一个 Kubernetes Image Puller spec,用于在 CheCluster 中配置镜像 puller。

 
表 3.20. OpenShift Dev Spaces 服务器指标组件配置。
属性描述default

enable

为 OpenShift Dev Spaces 服务器端点启用 指标

true

表 3.21. 允许用户使用远程 Git 存储库的配置设置。
属性描述default

azure

允许用户使用托管在 Azure DevOps Service (dev.azure.com)上的存储库。

 

bitbucket

允许用户使用 Bitbucket 上托管的存储库(bitbucket.org 或 self-hosted)。

 

github

允许用户使用托管在 GitHub 上的软件仓库(github.com 或 GitHub Enterprise)。

 

gitlab

允许用户使用 GitLab 上托管的存储库(gitlab.com 或自托管)。

 
表 3.22. GitHub 选项。
属性描述default

disableSubdomainIsolation

禁用子域隔离。弃用了 che.eclipse.org/scm-github-disable-subdomain-isolation 注解。详情请查看以下页面: https://www.eclipse.org/che/docs/stable/administration-guide/configuring-oauth-2-for-github/

 

端点

GitHub 服务器端点 URL。弃用了 che.eclipse.org/scm-server-endpoint 注解。详情请查看以下页面: https://www.eclipse.org/che/docs/stable/administration-guide/configuring-oauth-2-for-github/

 

secretName

Kubernetes secret,其中包含 Base64 编码的 GitHub OAuth 客户端 ID 和 GitHub OAuth 客户端 secret。详情请查看以下页面: https://www.eclipse.org/che/docs/stable/administration-guide/configuring-oauth-2-for-github/

 
表 3.23. GitLab 选项。
属性描述default

端点

GitLab 服务器端点 URL。弃用了 che.eclipse.org/scm-server-endpoint 注解。请参见以下页面 :https://www.eclipse.org/che/docs/stable/administration-guide/configuring-oauth-2-for-gitlab/。

 

secretName

Kubernetes secret,其中包含 Base64 编码的 GitHub 应用程序 id 和 GitLab Application Client secret。请参见以下页面 :https://www.eclipse.org/che/docs/stable/administration-guide/configuring-oauth-2-for-gitlab/。

 
表 3.24. Bitbucket 选项。
属性描述default

端点

Bitbucket 服务器端点 URL。弃用了 che.eclipse.org/scm-server-endpoint 注解。请参见以下页面 :https://www.eclipse.org/che/docs/stable/administration-guide/configuring-oauth-1-for-a-bitbucket-server/。

 

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/。

 
表 3.25. Azure 选项。
属性描述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

 
表 3.26. 网络、OpenShift Dev Spaces 身份验证和 TLS 配置。
属性描述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 集群资源的名称。如果在 IngressClassName 字段和 kubernetes.io/ingress.class 注解中都定义了类名称,IngressClassName 字段将具有优先权。

 

labels

定义为 Ingress 设置的标签(OpenShift 平台的路由)。

 

tlsSecretName

用于设置 Ingress TLS 终止的 secret 名称。如果字段是空字符串,则使用默认集群证书。secret 必须具有 app.kubernetes.io/part-of=che.eclipse.org 标签。

 
表 3.27. 身份验证选项。
属性描述default

gateway

网关设置。

{ "configLabels": { "app": "che", "component": "che-gateway-config" }}

identityProviderURL

身份提供程序服务器的公共 URL。

 

identityToken

要传递给上游的身份令牌。支持两种类型的令牌: id_tokenaccess_token。默认值为 id_token。此字段特定于只为 Kubernetes 进行的 OpenShift Dev Spaces 安装,并忽略 OpenShift。

 

oAuthAccessTokenInactivityTimeoutSeconds

在 OpenShift OAuthClient 资源中设置令牌的不活跃超时,用于在 OpenShift 端设置身份联邦。0 表示此客户端的令牌永远不会超时。

 

oAuthAccessTokenMaxAgeSeconds

在 OpenShift OAuthClient 资源中设置令牌的访问令牌最大期限,用于在 OpenShift 端设置身份联邦。0 表示没有过期。

 

oAuthClientName

用于在 OpenShift 端设置身份联邦的 OpenShift OAuthClient 资源的名称。

 

oAuthScope

访问令牌范围.此字段特定于只为 Kubernetes 进行的 OpenShift Dev Spaces 安装,并忽略 OpenShift。

 

oAuthSecret

OpenShift OAuthClient 资源中设置的 secret 名称,用于在 OpenShift 端设置身份联邦。

 
表 3.28. 网关 选项。
属性描述default

configLabels

网关配置标签。

{ "app": "che", "component": "che-gateway-config"}

部署

部署覆盖选项。由于网关部署由多个容器组成,它们必须按名称在配置中区分: - gateway - configbump - oauth-proxy - kube-rbac-proxy

 
表 3.29. 配置存储 OpenShift Dev Spaces 镜像的替代 registry。
属性描述default

hostname

要从中拉取镜像的替代容器 registry 的可选主机名或 URL。这个值会覆盖在 OpenShift Dev Spaces 部署中的所有默认容器镜像中定义的容器 registry 主机名。这在受限环境中安装 OpenShift Dev Spaces 特别有用。

 

机构

要从中拉取镜像的替代 registry 的可选存储库名称。这个值会覆盖在 OpenShift Dev Spaces 部署中的所有默认容器镜像中定义的容器 registry 组织。这在受限环境中安装 OpenShift Dev Spaces 特别有用。

 
表 3.30. 部署选项。
属性描述default

containers

属于 pod 的容器列表。

 

securityContext

pod 应该运行的安全选项。

 
表 3.31. 容器 选项。
属性描述default

env

要在容器中设置的环境变量列表。

 

image

容器镜像。省略它或将其留空,以使用 Operator 提供的默认容器镜像。

 

imagePullPolicy

镜像拉取策略。默认值为 Always 每天下一个最新的镜像,其他情况下为 IfNotPresent

 

name

容器名称。

 

资源

此容器所需的计算资源。

 
表 3.32. 容器 选项。
属性描述default

limits

描述允许的最大计算资源量。

 

Request (请求)

描述所需的最少计算资源。

 
表 3.33. 请求 选项。
属性描述default

cpu

CPU,以内核为单位。(500M = .5 个内核)如果没有指定该值,则根据组件设置默认值。如果值为 0, 则不会为组件设置值。

 

memory

内存,以字节为单位。(500Gi = 500GiB = 500 * 1024 * 1024)如果未指定值,则根据组件设置默认值。如果值为 0, 则不会为组件设置值。

 
表 3.34. 限制 选项。
属性描述default

cpu

CPU,以内核为单位。(500M = .5 个内核)如果没有指定该值,则根据组件设置默认值。如果值为 0, 则不会为组件设置值。

 

memory

内存,以字节为单位。(500Gi = 500GiB = 500 * 1024 * 1024)如果未指定值,则根据组件设置默认值。如果值为 0, 则不会为组件设置值。

 
表 3.35. securityContext 选项。
属性描述default

fsGroup

适用于 pod 中所有容器的特殊补充组。默认值为 1724

 

runAsUser

运行容器进程的入口点的 UID。默认值为 1724

 
表 3.36. CheCluster 自定义资源状态定义 OpenShift Dev Spaces 安装的观察状态
属性描述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。

 

postgresVersion

使用的镜像的 PostgreSQL 版本。

 

reason

简短 CamelCase 消息指示 OpenShift Dev Spaces 部署处于当前阶段的详细信息。

 

workspaceBaseDomain

解析的工作区基域。这是 spec 中相同名称的显式定义属性的副本,如果它在 spec 中未定义,且在 OpenShift 上运行,则会自动解析路由的 basedomain。

 
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.