第 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数据库仪表板 和镜像Puller

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
spec:
  devEnvironments:
    defaultNamespace:
      template: '<username>-che'
    storage:
      pvcStrategy: 'common'
  components:
    database:
      externalDb: false
    metrics:
      enable: true
表 3.1. 开发环境配置选项。
属性Description

containerBuildConfiguration

容器构建配置。

defaultComponents

应用到 DevWorkspaces 的默认组件。当 Devfile 不包含任何组件时,可以使用这些默认组件。

defaultEditor

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

defaultNamespace

用户的默认命名空间。

defaultPlugins

应用到 DevWorkspaces 的默认插件。

disableContainerBuildCapabilities

禁用容器构建功能。

nodeSelector

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

secondsOfInactivityBeforeIdling

空闲的工作区超时(以秒为单位)。此超时为持续时间,如果没有活动,工作区将被闲置。要禁用因不活跃而造成的工作区闲置,请将此值设置为 -1。

secondsOfRunBeforeIdling

运行工作区(以秒为单位)的超时。此超时是工作区运行的最长持续时间。要禁用工作空间运行超时,将此值设置为 -1。

storage

工作区持久性存储。

容限(tolerations)

工作空间 pod 的 pod 容限,用于限制工作区 pod 可以运行的位置。

trustedCerts

可信证书设置。

表 3.2. 开发环境 defaultNamespace 选项。
属性Description

autoProvision

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

模板

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

表 3.3. 开发环境 存储选项。
属性Description

perUserStrategyPvcConfig

使用每个用户 PVC 策略时 PVC 设置。

perWorkspaceStrategyPvcConfig

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

pvcStrategy

OpenShift Dev Spaces 服务器的持久性卷声明策略。支持的策略包括: 每个用户 (一个卷中的所有工作区 PVC)和"per-workspace" (每个工作区都会被赋予自己的单独 PVC)。详情请查看 https://github.com/eclipse/che/issues/21185

表 3.4. OpenShift Dev Spaces 组件配置。
属性Description

cheServer

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

dashboard

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

数据库

与 OpenShift Dev Spaces 安装使用的数据库相关的配置设置。

devWorkspace

DevWorkspace Operator 配置。

devfileRegistry

与 OpenShift Dev Spaces 安装使用的 devfile registry 相关的配置设置。

imagePuller

Kubernetes 镜像提取器配置.

metrics

OpenShift Dev Spaces 服务器指标配置。

pluginRegistry

与 OpenShift Dev Spaces 安装使用的插件 registry 相关的配置设置。

表 3.5. DevWorkspace operator 组件配置。
属性Description

runningLimit

每个用户运行的最大工作区数。

表 3.6. 与 OpenShift Dev Spaces 服务器组件相关的常规配置设置。
属性Description

clusterRoles

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

debug

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

部署

部署覆盖选项.

extraProperties

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

logLevel

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

proxy

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

表 3.7. 与 OpenShift Dev Spaces 安装使用的插件 registry 组件相关的配置设置。
属性Description

部署

部署覆盖选项.

disableInternalRegistry

禁用内部插件 registry。

externalPluginRegistries

外部插件注册表.

openVSXURL

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

表 3.8. 与 OpenShift Dev Spaces 安装使用的 Devfile registry 组件相关的配置设置。
属性Description

部署

部署覆盖选项.

disableInternalRegistry

禁用内部 devfile registry。

externalDevfileRegistries

外部 devfile registry 提供示例可供使用 devfile。

表 3.9. 与 OpenShift Dev Spaces 安装使用的数据库组件相关的配置设置。
属性Description

credentialsSecretName

包含 OpenShift Dev Spaces 服务器用来连接到数据库的 PostgreSQL 用户和密码 的 secret。secret 必须具有 app.kubernetes.io/part-of=che.eclipse.org 标签。

部署

部署覆盖选项.

externalDb

指示 Operator 部署专用数据库。默认情况下,一个专用的 PostgreSQL 数据库作为 OpenShift Dev Spaces 安装的一部分部署。当将 externalDb 设置为 true 时,Operator 不会部署任何专用数据库,您需要提供您要使用的外部数据库的连接详情。

postgresDb

OpenShift Dev Spaces 服务器用来连接到数据库的 PostgreSQL 数据库名称。

postgresHostName

OpenShift Dev Spaces 服务器连接到的 PostgreSQL 数据库主机名。仅在使用外部数据库时覆盖这个值。请参阅 externalDb 字段。

postgresPort

OpenShift Dev Spaces 服务器连接到的 PostgreSQL 数据库端口。仅在使用外部数据库时覆盖这个值。请参阅 externalDb 字段。

pvc

PostgreSQL 数据库的 PVC 设置。

表 3.10. 与 OpenShift Dev Spaces 安装使用的 Dashboard 组件相关的配置设置。
属性Description

部署

部署覆盖选项.

headerMessage

仪表板标题消息.

表 3.11. Kubernetes 镜像提取组件配置。
属性Description

enable

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

spec

Kubernetes Image Puller spec,在 CheCluster 中配置镜像 puller。

表 3.12. OpenShift Dev Spaces 服务器指标组件配置。
属性Description

enable

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

表 3.13. 网络、OpenShift Dev Spaces 身份验证和 TLS 配置.
属性Description

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

身份验证设置。

domain

对于 OpenShift 集群,Operator 使用域为路由生成主机名。生成的主机名遵循此模式: che-<devspaces-namespace>.<domain>。<devspaces-namespace> 是创建 CheCluster CRD 的命名空间。与标签结合使用,它会创建一个由非默认 Ingress 控制器提供的路由。对于 Kubernetes 集群,它包含全局入口域。没有默认值: 您必须指定它们。

hostname

安装的 OpenShift Dev Spaces 服务器的公共主机名。

labels

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

tlsSecretName

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

表 3.14. 存储 OpenShift Dev Spaces 镜像的替代注册表。
属性Description

hostname

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

机构

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

表 3.15. CheCluster 自定义资源状态 定义 OpenShift Dev Spaces 安装的观察状态
属性Description

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.