This documentation is for a release that is no longer maintained
See documentation for the latest supported version.4.9. 配置存储
OpenShift Dev Spaces 不支持网络文件系统(NFS)协议。
4.9.1. 配置存储类 复制链接链接已复制到粘贴板!
要将 OpenShift Dev Spaces 配置为使用配置的基础架构存储,请使用存储类安装 OpenShift Dev Spaces。当您要绑定由非默认置备程序提供的持久性卷时,这特别有用。
OpenShift Dev Spaces 有一个组件,需要持久性卷来存储数据:
-
OpenShift Dev Spaces 工作区。OpenShift Dev Spaces 工作区使用卷存储源代码,如
/projects
卷。
只有工作区不是临时的时,OpenShift Dev Spaces 工作区源代码才会存储在持久性卷中。
持久性卷声明事实:
- OpenShift Dev Spaces 不会在基础架构中创建持久性卷。
- OpenShift Dev Spaces 使用持久性卷声明(PVC)来挂载持久性卷。
第 2.3.1.2 节 “dev Workspace operator” 创建持久性卷声明。
在 OpenShift Dev Spaces 配置中定义存储类名称,以使用 OpenShift Dev Spaces PVC 中的存储类功能。
流程
使用 CheCluster 自定义资源定义来定义存储类:
定义存储类名称 :配置
CheCluster
自定义资源,并安装 OpenShift Dev Spaces。请参阅 第 4.1.1 节 “在安装过程中使用 dsc 配置CheCluster
自定义资源”。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.9.2. 配置存储策略 复制链接链接已复制到粘贴板!
通过选择存储策略,可以将 OpenShift Dev Spaces 配置为向工作区提供持久性或非持久性存储。默认情况下,所选存储策略将应用到所有新创建的工作区。用户可以为 devfile 中的工作区选择非默认存储策略,或者通过 URL 参数 选择。
可用的存储策略:
-
每个用户
:对用户创建的所有工作区使用单个 PVC。 -
per-workspace
: 每个工作区都会被赋予自己的 PVC。 -
Ephemeral
: Non-persistent storage; 当工作区停止后,任何本地更改都会丢失。
OpenShift Dev Spaces 中使用的默认存储策略是 每个用户
。
流程
-
将 Che Cluster Custom Resource 中的
pvcStrategy
字段设置为per-user
、per-workspace
或ephemeral
。
-
您可以在安装时设置此字段。请参阅 第 4.1.1 节 “在安装过程中使用 dsc 配置
CheCluster
自定义资源”。 - 您可以在命令行中更新此字段。请参阅 第 4.1.2 节 “使用 CLI 配置 CheCluster 自定义资源”。
spec: devEnvironments: storage: pvc: pvcStrategy: 'per-user'
spec:
devEnvironments:
storage:
pvc:
pvcStrategy: 'per-user'
- 1
- 可用的存储策略是
按用户、每个
工作区临时的
。
4.9.3. 配置存储大小 复制链接链接已复制到粘贴板!
您可以使用 per-user
或 per-workspace
存储策略配置持久性卷声明(PVC)大小。您必须使用 CheCluster
自定义资源的 PVC 大小,格式为 Kubernetes 资源数量。有关可用存储策略的详情,请查看 此页面。
默认持久性卷声明大小:
per-user: 10Gi
per-user: 10Gi
Copy to Clipboard Copied! Toggle word wrap Toggle overflow per-workspace: 5Gi
per-workspace: 5Gi
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
流程
-
在 Che Cluster Custom Resource 中为所需的存储策略设置适当的
claimSize
字段。
-
您可以在安装时设置此字段。请参阅 第 4.1.1 节 “在安装过程中使用 dsc 配置
CheCluster
自定义资源”。 - 您可以在命令行中更新此字段。请参阅 第 4.1.2 节 “使用 CLI 配置 CheCluster 自定义资源”。
4.9.4. 持久用户主页 复制链接链接已复制到粘贴板!
Red Hat OpenShift Dev Spaces 提供了一个永久的主目录功能,允许每个非临时工作区在工作空间重启后保留其 /home/user
目录。您可以通过将 spec.devEnvironments.persistUserHome.enabled
设置为 true
,在 CheCluster 中启用此功能。
对于新启动的工作区,此功能会创建一个挂载到工具容器的 /home/user
路径的 PVC。在本文档中,将使用"tools 容器"来指代 devfile 中的第一个容器。此容器是默认包含项目源代码的容器。
当首次挂载 PVC 时,持久性卷的内容为空,因此必须使用 /home/user
目录内容填充。
默认情况下,persistent UserHome
功能为每个名为 init-persistent-home
的新工作区 pod 创建一个 init 容器。此 init 容器使用工具容器镜像创建,并负责运行 stow
命令在持久性卷中创建符号链接以填充 /home/user
目录。
对于不能符号链接到 /home/user
目录的文件,如 .viminfo
和 .bashrc
文件,则会使用 cp
而不是 stow
。
stow
命令的主要功能是运行:
stow -t /home/user/ -d /home/tooling/ --no-folding
stow -t /home/user/ -d /home/tooling/ --no-folding
以上命令在 /home/user
中为位于 /home/tooling 中的文件和目录创建符号链接。这会使用指向 /home/tool
中内容的符号链接填充持久卷。因此,它的 persistentUserHome
功能需要在 /home/tooling
中包含其 /home/user/
内容。
例如,如果工具容器镜像包含 home/tooling
目录中的文件,如 .config
和 .config-folder/another-file
,则 stow 将以以下方式在持久性卷中创建符号链接:
图 4.11. 启用 persistUserHome
的工具容器
init 容器将 stow
命令的输出写入 /home/user/.stow.log
,并且仅在持久性卷第一次挂载到工作区时运行 stow
。
使用 stow
命令在持久性卷中填充 /home/user
内容有两个主要优点:
-
与在持久性卷中创建
/home/user
目录内容的副本相比,创建符号链接速度更快且消耗较少的存储。为了以不同方式放置它,本例中的持久卷包含符号链接,而不是实际文件本身。 -
如果使用现有二进制文件、配置和文件的较新版本更新工具镜像,则 init 容器不需要
研究
新版本,因为现有符号链接将链接到/home/tooling
中的较新版本。
如果工具镜像使用额外的二进制文件或文件更新,则不会以符号形式链接到 /home/user
目录,因为 stow
命令不会被再次运行。在这种情况下,用户必须删除 /home/user/.stow_completed
文件,然后重新启动工作区来重新运行 stow
。
persistUserHome
工具镜像要求
persistUserHome
依赖于用于工作区的工具镜像。默认情况下,OpenShift Dev Spaces 使用通用基础镜像(UDI)作为示例工作区,它支持 persistentUserHome
开箱即用。
如果您使用自定义镜像,应该满足三个要求来支持 persistUserHome
功能。
-
工具镜像应包含
stow
版本 >= 2.4.0。 -
$HOME
环境变量设置为/home/user
。 -
在工具镜像中,要包含
/home/user
内容的目录是/home/tooling
。
由于要求三个,例如,默认的 UDI 镜像将 /home/user
内容添加到 /home/tooling
中,并运行:
RUN stow -t /home/user/ -d /home/tooling/ --no-folding
RUN stow -t /home/user/ -d /home/tooling/ --no-folding
在 Dockerfile 中,使 /home/tooling
中的文件可以从 /home/user
访问,即使没有使用 persistUserHome
功能。