3.8. 配置存储

3.8.1. 使用存储类安装 Dev Spaces

要将 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 自定义资源定义定义存储类:

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

    spec:
      components:
        database:
          pvc:
            # keep blank unless you need to use a non default storage class for PostgreSQL PVC
            storageClass: 'postgres-storage'
      devEnvironments:
        storage:
          pvc:
            # keep blank unless you need to use a non default storage class for workspace PVC(s)
            storageClass: '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 file

    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