5.2. 配置项目
对于每个用户,OpenShift Dev Spaces 在项目中隔离工作区。OpenShift Dev Spaces 通过存在标签和注解来识别用户项目。启动工作区时,如果所需的项目不存在,OpenShift Dev Spaces 会使用模板名称创建项目。
您可以通过以下方法修改 OpenShift Dev Spaces 行为:
5.2.1. 配置项目名称 复制链接链接已复制到粘贴板!
您可以在启动一个工作区时配置 OpenShift Dev Spaces 用来创建所需项目的项目名称模板。
有效的项目名称模板遵循以下约定:
-
<
;username>
; 或<userid
> 占位符是必需的。 -
用户名和 ID 不能包含无效字符。如果用户名或 ID 的格式与 OpenShift 对象的命名约定不兼容,OpenShift Dev Spaces 通过将不兼容的字符替换为有效的名称来更改有效名称。
-
OpenShift Dev Spaces 将 &
lt;userid
> 占位符评估为 14 个字符长字符串,并添加随机六个字符的后缀以防止 ID 冲突。结果保存在用户首选项中以供重复使用。 - Kubernetes 将项目名称的长度限制为 63 个字符。
- OpenShift 限制的长度为 49 个字符。
流程
配置
CheCluster
自定义资源。请参阅 第 5.1.2 节 “使用 CLI 配置 CheCluster 自定义资源”。spec: components: devEnvironments: defaultNamespace: template: <workspace_namespace_template_>
spec: components: devEnvironments: defaultNamespace: template: <workspace_namespace_template_>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例 5.3. 用户工作区项目名称模板示例
Expand 用户工作区项目名称模板 生成的项目示例 <username>-devspaces
(默认)user1-devspaces
<userid>-namespace
cge1egvsb2nhba-namespace-ul1411
<userid>-aka-<username>-namespace
cgezegvsb2nhba-aka-user1-namespace-6m2w2b
5.2.2. 提前置备项目 复制链接链接已复制到粘贴板!
您可以提前置备工作区项目,而不依赖于自动配置。为每个用户重复上述步骤。
流程
在
CheCluster
级别禁用自动命名空间置备:devEnvironments: defaultNamespace: autoProvision: false
devEnvironments: defaultNamespace: autoProvision: false
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下标签和注解为 <username> 用户创建 <project_name> 项目:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 使用您选择的项目名称。
5.2.3. 配置用户命名空间 复制链接链接已复制到粘贴板!
此流程指导您使用 OpenShift Dev Spaces 将 ConfigMap
、Secret、PersistentVolume
VolumeClaim
和其他 Kubernetes 对象从 openshift-devspaces
命名空间复制到多个特定于用户的命名空间。OpenShift Dev Spaces 会自动同步重要配置数据,如共享凭证、配置文件和证书到用户命名空间。
如果您在 openshift-devspaces 命名空间中更改 Kubernetes 资源,OpenShift Dev Spaces 会立即在所有用户命名空间中复制更改。相反,如果在用户命名空间中修改了 Kubernetes 资源,OpenShift Dev Spaces 将立即恢复更改。
流程
创建以下
ConfigMap
以复制到每个用户项目中。为增强配置性,您可以通过添加额外的标签和注解来自定义ConfigMap
。默认情况下,ConfigMap 会自动挂载到用户工作区。如果您不希望 ConfigMap 挂载,请明确添加以下标签来覆盖行为:controller.devfile.io/watch-configmap: "false" controller.devfile.io/mount-to-devworkspace: "false"
controller.devfile.io/watch-configmap: "false" controller.devfile.io/mount-to-devworkspace: "false"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关其他可能的标签和注解,请参阅 自动挂载卷、configmap 和 secret。
例 5.4. 将 ConfigMap 复制到每个用户项目中:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例 5.5. 将 ConfigMap 复制到每个用户项目中,并通过路径
/home/user/.m2
自动将settings.xml
文件挂载到每个用户容器中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建以下
Secret
以复制到每个用户项目中。为增强配置性,您可以通过添加额外的标签和注解来自定义Secret
。默认情况下,Secret 会自动挂载到用户工作区。如果您不希望挂载 Secret,请明确添加以下标签来覆盖行为:controller.devfile.io/watch-secret: "false" controller.devfile.io/mount-to-devworkspace: "false"
controller.devfile.io/watch-secret: "false" controller.devfile.io/mount-to-devworkspace: "false"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关其他可能的标签和注解,请参阅 自动挂载卷、configmap 和 secret。
例 5.6. 将 Secret 复制到每个用户项目中:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例 5.7. 将 Secret 复制到每个用户项目中,并通过路径
/etc/pki/ca-trust/source/anchors
自动将trusted-certificates.crt
文件挂载到每个用户容器中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意在工作区启动时运行
update-ca-trust
命令来导入证书。它可以手动实现,或者通过将此命令添加到 devfile 中的postStart
事件中。请参阅 在 devfile 中添加事件绑定。例 5.8. 将 Secret 复制到每个用户项目中,并作为环境变量自动挂载到每个用户容器中:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在下面创建
PersistentVolumeClaim
,将它复制到每个用户项目中。为增强配置,您可以通过添加额外的标签和注解来自定义
PersistentVolumeClaim
。有关其他可能的标签和注解,请参阅 自动挂载卷、configmap 和 secret。要修改
PersistentVolumeClaim
,请将其删除并在 openshift-devspaces 命名空间中创建新名称。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例 5.9. 将
PersistentVolumeClaim
挂载到用户工作区:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要使用 OpenShift Kubernetes Engine,您可以创建一个
Template
对象来复制模板中定义的所有资源。除了前面提到的
ConfigMap
、Secret
和PersistentVolumeClaim
外,Template
对象还可以包括:-
LimitRange
-
NetworkPolicy
-
ResourceQuota
-
角色
RoleBinding
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 参数是可选的
,定义可以使用哪些参数。目前,只支持PROJECT_NAME
和PROJECT_ADMIN_USER
。PROJECT_NAME
是 OpenShift Dev Spaces 命名空间的名称,而PROJECT_ADMIN_USER
是命名空间的 OpenShift Dev Spaces 用户。对象中的 namespace 名称将在同步期间替换为用户的命名空间名称。
例 5.10. 将 Kubernetes 资源复制到用户项目:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意只有在 OpenShift 中才支持创建模板 Kubernetes 资源。
-
其他资源
- https://access.redhat.com/documentation/zh-cn/red_hat_openshift_dev_spaces/3.23/html-single/user_guide/index#end-user-guide:mounting-configmaps
- https://access.redhat.com/documentation/zh-cn/red_hat_openshift_dev_spaces/3.23/html-single/user_guide/index#end-user-guide:mounting-secrets
- https://access.redhat.com/documentation/zh-cn/red_hat_openshift_dev_spaces/3.23/html-single/user_guide/index#end-user-guide:requesting-persistent-storage-for-workspaces
- 自动挂载卷、configmap 和 secret
-
模板的 OpenShift API 参考
- 配置 OpenShift 项目创建