3.3. 配置服务器组件


3.3.1. 将 Secret 或 ConfigMap 挂载为文件或环境变量到 Red Hat OpenShift Dev Spaces 容器中

Secret 是存储敏感数据的 OpenShift 对象,例如:

  • 用户名
  • 密码
  • 身份验证令牌

以加密的形式使用。

用户可以挂载包含敏感数据的 OpenShift Secret 或包含 OpenShift Dev Spaces 管理的容器中的 ConfigMap,如下所示:

  • 一个文件
  • 环境变量

挂载过程使用标准的 OpenShift 挂载机制,但它需要额外的注释和标记。

3.3.1.1. 将 Secret 或 ConfigMap 挂载为文件到 OpenShift Dev Spaces 容器中

先决条件

  • 一个 Red Hat OpenShift Dev Spaces 的运行实例。

流程

  1. 在部署了 OpenShift Dev Spaces 的 OpenShift 项目中创建新的 OpenShift Secret 或 ConfigMap。要创建的对象标签必须与一组标签匹配:

    • app.kubernetes.io/part-of: che.eclipse.org
    • app.kubernetes.io/component: <DEPLOYMENT_NAME>-<OBJECT_KIND>
    • & lt;DEPLOYMENT_NAME > 对应于以下部署:

      • devspaces-dashboard
      • devfile-registry
      • plugin-registry
      • devspaces

    • <OBJECT_KIND& gt; 是:

      • secret

        或者

      • configmap

例 3.4. Example:

apiVersion: v1
kind: Secret
metadata:
  name: custom-settings
  labels:
    app.kubernetes.io/part-of: che.eclipse.org
    app.kubernetes.io/component: devspaces-secret
...

或者

apiVersion: v1
kind: ConfigMap
metadata:
  name: custom-settings
  labels:
    app.kubernetes.io/part-of: che.eclipse.org
    app.kubernetes.io/component: devspaces-configmap
...
  1. 配置注释值。注解必须表示,给定的对象作为文件挂载:

    • Che.eclipse.org/mount-as: 文件 - 表示对象挂载为文件。
    • Che.eclipse.org/mount-path: <TARGET_PATH > - 提供所需的挂载路径。

例 3.5. Example:

apiVersion: v1
kind: Secret
metadata:
  name: custom-data
  annotations:
    che.eclipse.org/mount-as: file
    che.eclipse.org/mount-path: /data
  labels:
    app.kubernetes.io/part-of: che.eclipse.org
    app.kubernetes.io/component: devspaces-secret
...

或者

apiVersion: v1
kind: ConfigMap
metadata:
  name: custom-data
  annotations:
    che.eclipse.org/mount-as: file
    che.eclipse.org/mount-path: /data
  labels:
    app.kubernetes.io/part-of: che.eclipse.org
    app.kubernetes.io/component: devspaces-configmap
...

OpenShift 对象可以包含多个项目,其名称必须与挂载到容器中的所需文件名匹配。

例 3.6. Example:

apiVersion: v1
kind: Secret
metadata:
  name: custom-data
  labels:
    app.kubernetes.io/part-of: che.eclipse.org
    app.kubernetes.io/component: devspaces-secret
  annotations:
    che.eclipse.org/mount-as: file
    che.eclipse.org/mount-path: /data
data:
  ca.crt: <base64 encoded data content here>

或者

apiVersion: v1
kind: ConfigMap
metadata:
  name: custom-data
  labels:
    app.kubernetes.io/part-of: che.eclipse.org
    app.kubernetes.io/component: devspaces-configmap
  annotations:
    che.eclipse.org/mount-as: file
    che.eclipse.org/mount-path: /data
data:
  ca.crt: <data content here>

这会导致名为 ca.crt 的文件被挂载到 OpenShift Dev Spaces 容器的 /data 路径。

重要

要使 OpenShift Dev Spaces 容器的更改可见,请完全重新创建 Secret 或 ConfigMap 对象。

3.3.1.2. 将 Secret 或 ConfigMap 作为子Path 挂载到 OpenShift Dev Spaces 容器中

先决条件

  • 一个 Red Hat OpenShift Dev Spaces 的运行实例。

流程

  1. 在部署了 OpenShift Dev Spaces 的 OpenShift 项目中创建新的 OpenShift Secret 或 ConfigMap。要创建的对象标签必须与一组标签匹配:

    • app.kubernetes.io/part-of: che.eclipse.org
    • app.kubernetes.io/component: <DEPLOYMENT_NAME>-<OBJECT_KIND>
    • & lt;DEPLOYMENT_NAME > 对应于以下部署:

      • devspaces-dashboard
      • devfile-registry
      • plugin-registry
      • devspaces

    • <OBJECT_KIND& gt; 是:

      • secret

        或者

      • configmap

例 3.7. Example:

apiVersion: v1
kind: Secret
metadata:
  name: custom-settings
  labels:
    app.kubernetes.io/part-of: che.eclipse.org
    app.kubernetes.io/component: devspaces-secret
...

或者

apiVersion: v1
kind: ConfigMap
metadata:
  name: custom-settings
  labels:
    app.kubernetes.io/part-of: che.eclipse.org
    app.kubernetes.io/component: devspaces-configmap
...
  1. 配置注释值。注解必须表示给定对象作为 subPath 挂载:

    • Che.eclipse.org/mount-as: subpath - 表示对象挂载为 subPath。
    • Che.eclipse.org/mount-path: <TARGET_PATH > - 提供所需的挂载路径。

例 3.8. Example:

apiVersion: v1
kind: Secret
metadata:
  name: custom-data
  annotations:
    che.eclipse.org/mount-as: subpath
    che.eclipse.org/mount-path: /data
  labels:
    app.kubernetes.io/part-of: che.eclipse.org
    app.kubernetes.io/component: devspaces-secret
...

或者

apiVersion: v1
kind: ConfigMap
metadata:
  name: custom-data
  annotations:
    che.eclipse.org/mount-as: subpath
    che.eclipse.org/mount-path: /data
  labels:
    app.kubernetes.io/part-of: che.eclipse.org
    app.kubernetes.io/component: devspaces-configmap
...

OpenShift 对象可以包含多个项目,其名称必须与挂载到容器中的文件名匹配。

例 3.9. Example:

apiVersion: v1
kind: Secret
metadata:
  name: custom-data
  labels:
    app.kubernetes.io/part-of: che.eclipse.org
    app.kubernetes.io/component: devspaces-secret
  annotations:
    che.eclipse.org/mount-as: subpath
    che.eclipse.org/mount-path: /data
data:
  ca.crt: <base64 encoded data content here>

或者

apiVersion: v1
kind: ConfigMap
metadata:
  name: custom-data
  labels:
    app.kubernetes.io/part-of: che.eclipse.org
    app.kubernetes.io/component: devspaces-configmap
  annotations:
    che.eclipse.org/mount-as: subpath
    che.eclipse.org/mount-path: /data
data:
  ca.crt: <data content here>

这会导致名为 ca.crt 的文件被挂载到 OpenShift Dev Spaces 容器的 /data 路径。

重要

要使 OpenShift Dev Spaces 容器的更改可见,请完全重新创建 Secret 或 ConfigMap 对象。

3.3.1.3. 将 Secret 或 ConfigMap 作为环境变量挂载到 OpenShift Dev Spaces 容器中

先决条件

  • 一个 Red Hat OpenShift Dev Spaces 的运行实例。

流程

  1. 在部署了 OpenShift Dev Spaces 的 OpenShift 项目中创建新的 OpenShift Secret 或 ConfigMap。要创建的对象标签必须与一组标签匹配:

    • app.kubernetes.io/part-of: che.eclipse.org
    • app.kubernetes.io/component: <DEPLOYMENT_NAME>-<OBJECT_KIND>
    • & lt;DEPLOYMENT_NAME > 对应于以下部署:

      • devspaces-dashboard
      • devfile-registry
      • plugin-registry
      • devspaces

    • <OBJECT_KIND& gt; 是:

      • secret

        或者

      • configmap

例 3.10. Example:

apiVersion: v1
kind: Secret
metadata:
  name: custom-settings
  labels:
    app.kubernetes.io/part-of: che.eclipse.org
    app.kubernetes.io/component: devspaces-secret
...

或者

apiVersion: v1
kind: ConfigMap
metadata:
  name: custom-settings
  labels:
    app.kubernetes.io/part-of: che.eclipse.org
    app.kubernetes.io/component: devspaces-configmap
...
  1. 配置注释值。注解必须表示,给定的对象作为环境变量挂载:

    • Che.eclipse.org/mount-as: env - 表示对象作为环境变量挂载
    • Che.eclipse.org/env-name : <FOO_ENV > - 提供一个环境变量名称,这是挂载对象键值所必需的

例 3.11. Example:

apiVersion: v1
kind: Secret
metadata:
  name: custom-settings
  annotations:
    che.eclipse.org/env-name: FOO_ENV
    che.eclipse.org/mount-as: env
  labels:
    app.kubernetes.io/part-of: che.eclipse.org
    app.kubernetes.io/component: devspaces-secret
data:
  mykey: myvalue

或者

apiVersion: v1
kind: ConfigMap
metadata:
  name: custom-settings
  annotations:
    che.eclipse.org/env-name: FOO_ENV
    che.eclipse.org/mount-as: env
  labels:
    app.kubernetes.io/part-of: che.eclipse.org
    app.kubernetes.io/component: devspaces-configmap
data:
  mykey: myvalue

这会生成两个环境变量:

  • FOO_ENV
  • myValue

被置备到一个 OpenShift Dev Spaces 容器中。

如果对象提供多个数据项,则必须为每个数据键提供环境变量名称,如下所示:

例 3.12. Example:

apiVersion: v1
kind: Secret
metadata:
  name: custom-settings
  annotations:
    che.eclipse.org/mount-as: env
    che.eclipse.org/mykey_env-name: FOO_ENV
    che.eclipse.org/otherkey_env-name: OTHER_ENV
  labels:
    app.kubernetes.io/part-of: che.eclipse.org
    app.kubernetes.io/component: devspaces-secret
stringData:
  mykey: <data_content_here>
  otherkey: <data_content_here>

或者

apiVersion: v1
kind: ConfigMap
metadata:
  name: custom-settings
  annotations:
    che.eclipse.org/mount-as: env
    che.eclipse.org/mykey_env-name: FOO_ENV
    che.eclipse.org/otherkey_env-name: OTHER_ENV
  labels:
    app.kubernetes.io/part-of: che.eclipse.org
    app.kubernetes.io/component: devspaces-configmap
data:
  mykey: <data content here>
  otherkey: <data content here>

这会生成两个环境变量:

  • FOO_ENV
  • OTHER_ENV

被置备到一个 OpenShift Dev Spaces 容器中。

注意

OpenShift 对象中注解名称的最大长度为 63 个字符,其中 9 个字符作为前缀被保留,以 / 结尾。这可作为可用于对象的密钥的最大长度的限制。

重要

要使 OpenShift Dev Spaces 容器的更改可见,请完全重新创建 Secret 或 ConfigMap 对象。

3.3.2. Dev Spaces 服务器的高级配置选项

以下章节描述了 OpenShift Dev Spaces 服务器组件的高级部署和配置方法。

3.3.2.1. 了解 OpenShift Dev Spaces 服务器高级配置

以下章节描述了部署的 OpenShift Dev Spaces 服务器组件高级配置方法。

高级配置需要:

  • 添加 Operator 从标准 CheCluster 自定义资源字段自动生成的环境变量。
  • 从标准 CheCluster 自定义资源字段覆盖 Operator 自动生成的属性。

customCheProperties 字段是 CheCluster 自定义资源 服务器设置 的一部分,包含要应用到 OpenShift Dev Spaces 服务器组件的额外环境变量映射。

例 3.13. 覆盖工作区的默认内存限值

注意

OpenShift Dev Spaces Operator 的早期版本具有名为 custom 的 ConfigMap,以满足此角色。如果 OpenShift Dev Spaces Operator 找到了名为 customconfigMap,它会将包含的数据添加到 customCheProperties 字段中,重新部署 OpenShift Dev Spaces,并删除 自定义 configMap

3.3.3. 为 Red Hat OpenShift Dev Spaces 容器配置副本数

要使用 Kubernetes HorizontalPodAutoscaler (HPA)为 OpenShift Dev Spaces 操作对象配置副本数,您可以为部署定义 HPA 资源。HPA 根据指定指标动态调整副本数。

流程

  1. 为部署创建 HPA 资源,指定目标指标和所需的副本数。

    apiVersion: autoscaling/v2
    kind: HorizontalPodAutoscaler
    metadata:
      name: scaler
      namespace: openshift-devspaces
    spec:
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: <deployment_name> 1
      ...
    1
    & lt;deployment_name > 对应于以下部署:
    • devspaces
    • che-gateway
    • devspaces-dashboard
    • plugin-registry
    • devfile-registry

例 3.14. 为 devspaces 部署创建一个 HorizontalPodAutoscaler

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: devspaces-scaler
  namespace: openshift-devspaces
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: devspaces
  minReplicas: 2
  maxReplicas: 5
  metrics:
    - type: Resource
      resource:
        name: cpu
        target:
          type: Utilization
          averageUtilization: 75

在本例中,HPA 将名为 devspaces 的 Deployment 为目标,最小为 2 个副本,最大 5 个副本,根据 CPU 使用率进行扩展。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.