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 的运行实例。
流程
在部署了 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 ...
配置注释值。注解必须表示,给定的对象作为文件挂载:
-
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 的运行实例。
流程
在部署了 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 ...
配置注释值。注解必须表示给定对象作为 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 的运行实例。
流程
在部署了 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 ...
配置注释值。注解必须表示,给定的对象作为环境变量挂载:
-
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. 覆盖工作区的默认内存限值
配置
CheCluster
自定义资源。请参阅 第 3.1.2 节 “使用 CLI 配置 CheCluster 自定义资源”。apiVersion: org.eclipse.che/v2 kind: CheCluster spec: components: cheServer: extraProperties: CHE_LOGS_APPENDERS_IMPL: json
OpenShift Dev Spaces Operator 的早期版本具有名为 custom
的 ConfigMap,以满足此角色。如果 OpenShift Dev Spaces Operator 找到了名为 custom
的 configMap
,它会将包含的数据添加到 customCheProperties
字段中,重新部署 OpenShift Dev Spaces,并删除 自定义
configMap
。
3.3.3. 为 Red Hat OpenShift Dev Spaces 容器配置副本数
要使用 Kubernetes HorizontalPodAutoscaler
(HPA)为 OpenShift Dev Spaces 操作对象配置副本数,您可以为部署定义 HPA
资源。HPA
根据指定指标动态调整副本数。
流程
为部署创建
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 使用率进行扩展。
其他资源