CephFS NFS 与 Manila

应使用 CephFS 通过 Manila 为 OpenStack 服务器提供共享存储。

问题描述

现有的 CephFS charm 没有可用的 Manila 集成。

提议的变更

为了添加对 CephFS 作为已部署 OpenStack 的 OpenStack Charm 的共享文件系统的支持,需要做一些事情。主要的是,需要一个新的 charm 来桥接 NFS 到 CephFS 协议。对于此应用程序的最佳选择是 Ganesha。除了对 Ganesha 进行 charm 处理外,还需要对现有的 CephFS charm 进行额外的改进,以提高其可测试性和可支持性。

为了允许新的 Ganesha charm 与 Manila 集成,将向现有的 Manila charm 添加一个新的 remote-manila-plugin 接口,该接口将与现有的 manila-plugin 接口完全相同,但不会限定在容器范围内。这个 remote-manila-plugin 接口将用于禁用 Manila charm 上的 manila-share 服务。新的 manila-ganesha charm 将配置 manila-share 服务,以及 Ganesha。

访问 Ganesha 网络将包括安全组,限制提供商网络上的租户无法访问该网络上的任何内容,除非是他们自己的 NFS 共享,并且将使用 IP 限制来限制租户无法访问彼此的共享。该提供商网络将被记录为需要由 OpenStack 管理员创建。需要创建该网络以匹配 Ganesha charm 提供其 NFS 服务所占用的空间。

备选方案

作为将 Ganesha 安装为 NFS 网关的替代方案,可以通过 CephFS 和 Manila 直接实现共享文件系统。由于需要将 ceph-fs 客户端添加到所有希望访问共享文件系统的租户,因此不推荐使用这种方法。此外,让客户端直接连接到 Ceph 需要直接将 Ceph 集群(mons 和 OSDs)暴露给租户工作负载,从而大大增加共享存储的安全性暴露。

实现

使用 Ganesha 将 Ceph 后端存储添加到 Manila 的 bundle overlay 如下所示

applications:
  manila-ganesha:
    charm: manila-ganesha
    num_units: 2
relations:
  - - ceph-mon
    - ganesha
  - - manila-ganesha:remote-manila-plugin
    - manila:remote-manila-plugin

一个更完整的 bundle 可能如下所示

applications:
  ceph-mon:
    charm: cs:~openstack-charmers-next/ceph-mon
    num_units: 3
  ceph-osd:
    charm: cs:~openstack-charmers-next/ceph-osd
    num_units: 3
    storage:
      osd-devices: '10g'
  ceph-mds:
    charm: cs:~openstack-charmers-next/ceph-mds
    num_units: 2
  manila-ganesha:
    charm: manila-ganesha
    num_units: 2
  manila:
    charm: cs:~openstack-charmers-next/manila
    num_units: 1
relations:
  - - ceph-mon
    - manila-ganesha
  - - ceph-mon
    - ceph-osd
  - - manila-ganesha:remote-manila-plugin
    - manila:remote-manila-plugin

负责人

主要负责人

Chris.MacNaughton

Gerrit Topic

对于与此规范相关的所有补丁,请使用 Gerrit 主题“charm-cephfs-manila”。

git-review -t charm-cephfs-manila

工作项

  • 新的 Manila-Ganesha charm

  • 对 Manila charm 的更新

  • 对 CephFS charm 的改进

仓库

需要几个新的仓库

  • charm-manila-ganesha

此外,charm-manila 和 charm-ceph-fs charm 将被更新。

文档

此更改需要对 charm-guide 进行新的文档记录,以及在新 charm 中进行新的文档记录。此外,charm-ceph-fs 需要更新文档以说明新的功能。

安全性

此更改需要对 Manila 提供的 ceph 存储的权限模型和限制进行一些验证,以确保访问共享不会破坏租户限制。

测试

将向每个 charm 添加单元测试,以涵盖任何新功能。

将向每个新 charm 和现有 charm 添加新的功能测试,以验证功能,包括对整个解决方案的端到端测试。

依赖项

此工作所需的软件包已包含在 Ubuntu 宇宙(Universe)档案中。宇宙(Universe)中所需的软件包(ganesha-nfs)将作为此工作的一部分被提议包含到主(Main)中。没有其他新的外部依赖项。支持 Manila 与 CephFS 和 Ganesha 的第一个版本是 Bionic Rocky。