3.8. 配置存储

3.8.1. 配置存储类

要将 OpenShift Dev Spaces 配置为使用已配置的基础架构存储,请使用存储类安装 OpenShift Dev Spaces。当用户想绑定非默认置备程序提供的持久性卷时,这特别有用。为此,用户可将这个存储绑定用于 OpenShift Dev Spaces 数据存储并设置该存储的参数。这些参数可以确定以下内容:

  • 特殊主机路径
  • 一个存储容量
  • 卷 mod
  • 挂载选项
  • 文件系统
  • 访问模式
  • 存储类型
  • 以及许多其他

OpenShift Dev Spaces 有两个组件,它们需要持久性卷来存储数据:

  • PostgreSQL 数据库。
  • OpenShift Dev Spaces 工作区。OpenShift Dev Spaces 工作区使用卷存储源代码,如 /projects 卷。
注意

只有工作区不是临时的,OpenShift Dev Spaces 源代码才会存储在持久性卷中。

持久性卷声明事实:

  • OpenShift Dev Spaces 不会在基础架构中创建持久性卷。
  • OpenShift Dev Spaces 使用持久性卷声明(PVC)来挂载持久性卷。
  • OpenShift Dev Spaces 服务器创建持久性卷声明。

    用户在 OpenShift Dev Spaces 配置中定义一个存储类名称,以使用 OpenShift Dev Spaces PVC 中的存储类功能。使用存储类时,用户通过额外的存储参数以灵活的方式配置基础架构存储。也可以使用类名称将静态置备的持久性卷绑定到 OpenShift Dev Spaces PVC。

流程

使用 CheCluster Custom Resource 定义来定义存储类:

  1. 定义存储类名称:配置 CheCluster 自定义资源,并安装 OpenShift Dev Spaces。请参阅 第 3.1.1 节 “在安装过程中使用 dsc 配置 CheCluster 自定义资源”

    spec:
      storage:
        # keep blank unless you need to use a non default storage class for PostgreSQL PVC
        postgresPVCStorageClassName: 'postgres-storage'
        # keep blank unless you need to use a non default storage class for workspace PVC(s)
        workspacePVCStorageClassName: 'workspace-storage'
  2. che-postgres-pv.yaml 文件中为 PostgreSQL 数据库定义持久卷:

    che-postgres-pv.yaml file

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: postgres-pv-volume
      labels:
        type: local
    spec:
      storageClassName: postgres-storage
      capacity:
        storage: 1Gi
      accessModes:
        - ReadWriteOnce
      hostPath:
        path: "/data/che/postgres"

  3. che-postgres-pv.yaml 文件中为 OpenShift Dev Spaces 工作区定义持久卷:

    Che-workspace-pv.yaml 文件

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: workspace-pv-volume
      labels:
        type: local
    spec:
      storageClassName: workspace-storage
      capacity:
        storage: 10Gi
      accessModes:
        - ReadWriteOnce
      hostPath:
        path: "/data/che/workspace"

  4. 绑定两个持久性卷:

    $ kubectl apply -f che-workspace-pv.yaml -f che-postgres-pv.yaml
注意

您必须为卷提供有效的文件权限。您可以使用存储类配置或手动完成此操作。要手动定义权限,请定义 storageClass#mountOptions uidgid。PostgreSQL 卷需要 uid=26gid=26