3.3. 配置服务器组件

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

机密是存储敏感数据的 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 > 对应于以下部署:

      • Postgres
      • Keycloak
      • devfile-registry
      • plugin-registry
      • Devspaces

    • <OBJECT_KIND& gt; 可以是:

      • secret

      • configmap

例 3.4. 例如:

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: file - 表示对象已挂载为一个文件。
    • Che.eclipse.org/mount-path: & lt;TARGET_PATH > - 要提供一个所需的挂载路径。

例 3.5. 例如:

apiVersion: v1
kind: Secret
metadata:
  name: custom-data
  annotations:
    che.eclipse.org/mount-as: file
    che.eclipse.org/mount-path: /data
  labels:
...

apiVersion: v1
kind: ConfigMap
metadata:
  name: custom-data
  annotations:
    che.eclipse.org/mount-as: file
    che.eclipse.org/mount-path: /data
  labels:
...

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

例 3.6. 例如:

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 容器的更改可见,请完全重新创建对象。

3.3.1.2. 将 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 > 对应于以下部署:

      • Postgres
      • Keycloak
      • devfile-registry
      • plugin-registry
      • Devspaces

    • <OBJECT_KIND& gt; 可以是:

      • secret

      • configmap

例 3.7. 例如:

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.8. 例如:

apiVersion: v1
kind: Secret
metadata:
  name: custom-settings
  annotations:
    che.eclipse.org/env-name: FOO_ENV
    che.eclipse.org/mount-as: env
  labels:
   ...
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:
   ...
data:
  mykey: myvalue

这会生成两个环境变量:

  • FOO_ENV
  • myvalue

被置备到 OpenShift Dev Spaces 容器中。

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

例 3.9. 例如:

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:
   ...
data:
  mykey: __<base64 encoded data content here>__
  otherkey: __<base64 encoded 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:
   ...
data:
  mykey: __<data content here>__
  otherkey: __<data content here>__

这会生成两个环境变量:

  • FOO_ENV
  • OTHER_ENV

被置备到 OpenShift Dev Spaces 容器中。

注意

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

重要

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