第 2 章 挂载外部文件以提供配置数据


有些部署场景需要访问外部数据,以满足配置或身份验证的目的。RHOSO 提供 extraMounts 参数,以允许访问此外部信息。此参数挂载指定的外部文件,供 RHOSO 部署使用。需要此类型外部信息的部署场景可能包括:

  • 组件需要特定于部署的配置和凭证文件,才能存在于文件系统的特定位置。例如,Block Storage (cinder)、Image (glance)和 Compute (nova)服务需要 Red Hat Ceph Storage 集群配置和密钥环文件。这些配置和密钥环文件必须使用 extraMounts 参数分发到这些服务中。
  • 当分配的节点磁盘空间被完全使用时,节点需要访问外部 NFS 共享以用作临时镜像存储位置。您可以使用 extraMounts 参数来配置此访问权限。例如,使用外部共享执行转换的块存储服务。
  • 存储后端驱动器必须在持久文件系统上运行,以便在重新启动之间保留所存储的数据。您必须使用 extraMounts 参数来配置此运行时位置。

extraMounts 参数可在以下级别上定义:

  • Service - 一个 Red Hat OpenStack Services on OpenShift (RHOSO)服务,如 GlanceCinderManila
  • 组件 - 服务的组件,如 GlanceAPICinderAPICinderSchedulerManilaShareCinderBackup
  • 实例 - 特定组件的单个实例。例如,您的部署可能有两个组件 ManilaShare 实例,名为 share1share2实例 级别传播代表与同一组件类型一部分的实例关联的 Pod。

propagation 字段用于描述如何应用定义。如果没有使用 propagation 字段,则定义会传播到定义它的级别下的每个级别:

  • 服务 级别定义传播到 组件和 实例 级别。
  • 组件 级别定义传播到 实例 级别。

以下是 extraMounts 定义的一般结构:

extraMounts:
  - name: <extramount-name> 1
    region: <openstack-region> 2
    extraVol:
      - propagation: 3
        - <location>
        extraVolType: <Ceph | Nfs | Undefined> 4
        volumes: 5
        - <pod-volume-structure>
        mounts: 6
        - <pod-mount-structure>
1
name 字段是命名 extraMounts 定义的字符串。这用于机构目的,无法从清单的其他部分引用。这是一个可选属性。
2
region 字段是一个字符串,用于定义 extraMounts 定义的 RHOSO 区域。这是一个可选属性。
3
propagation 字段描述了如何应用定义。如果没有使用 propagation 字段,则定义会传播到定义它的级别下的每个级别。这是一个可选属性。
4
extraVolType 字段是一个字符串,它可帮助管理员对属于列表的 extraVol 条目的挂载组进行分类或标记。此参数没有定义值,但 CephNfsUndefined 的值比较常见。这是一个可选属性。
5
volumes 字段是一个定义 Red Hat OpenShift 卷源的列表。此字段的结构与 Pod 中的 volumes 部分相同。结构取决于定义的卷类型。本节中定义的名称用作 挂载 部分的参考。
6
mount 字段是一个挂载点列表,代表应在 Pod 中挂载 volumeSource 的路径。volumes 部分中卷的名称用作参考,以及应挂载它的路径。此属性的结构与 Pod 的 volumeMounts 属性相同。

2.1. 使用 extraMounts 属性挂载外部文件

流程

  1. 在工作站上打开 OpenStackControlPlane 自定义资源(CR)文件 openstack_control_plane.yaml
  2. extraMounts 属性添加到 OpenStackControlPlane CR 服务定义中。

    以下示例演示了添加 extraMounts 属性:

    apiVersion: core.openstack.org/v1beta1
    kind: OpenStackControlPlane
    metadata:
      name: openstack
    spec:
      extraMounts:
        - name: v1
          region: r1
          extraVol:
            extraVolType: Ceph
  3. 添加 propagation 字段,以指定服务定义中 extraMount 属性适用的位置。

    以下示例将 propagation 字段添加到上例中:

    apiVersion: core.openstack.org/v1beta1
    kind: OpenStackControlPlane
    metadata:
      name: openstack
    spec:
      glance:
      ...
      extraMounts:
        - name: v1
          region: r1
          extraVol:
            - propagation: 1
              - Glance
              extraVolType: Ceph
    1
    propagation 字段可以有以下值之一:
    • 服务级别传播:

      • Glance
      • Cinder
      • Manila
      • Horizon
      • Neutron
    • 组件级别传播:

      • CinderAPI
      • CinderScheduler
      • CinderVolume
      • CinderBackup
      • GlanceAPI
      • ManilaAPI
      • ManilaScheduler
      • ManilaShare
      • NeutronAPI
    • 后端传播:

      • CinderVolumeManilaShareGlanceAPI 映射中的任何后端。
  4. 定义卷源:

    以下示例演示了如何将 volumes 字段添加到上例中,以向镜像服务(glance)提供 Red Hat Ceph Storage secret:

    apiVersion: core.openstack.org/v1beta1
    kind: OpenStackControlPlane
    metadata:
      name: openstack
    spec:
      extraMounts:
        - name: v1
          region: r1
          extraVol:
            extraVolType: Ceph
            volumes: 1
              - name: ceph
                secret:
                  secretName: ceph-conf-files
    1
    带有 Red Hat Ceph Storage secret 名称的 volumes 字段。
  5. 定义在 Pod 中挂载不同卷的位置。

    以下示例演示了在上例中添加 mount 字段,以提供包含 Red Hat Ceph Storage secret 的文件的位置和名称:

    apiVersion: core.openstack.org/v1beta1
    kind: OpenStackControlPlane
    metadata:
      name: openstack
    spec:
      extraMounts:
        - name: v1
          region: r1
          extraVol:
            extraVolType: Ceph
            volumes:
              - name: ceph
                secret:
                  secretName: ceph-conf-files
              mounts: 1
              - name: ceph
                mountPath: "/etc/ceph"
                readOnly: true
    1
    带有 secret 文件的位置的 mount 字段。
  6. 更新 control plane:

    $ oc apply -f openstack_control_plane.yaml -n openstack
  7. 等待 RHOCP 创建与 OpenStackControlPlane CR 相关的资源。运行以下命令来检查状态:

    $ oc get openstackcontrolplane -n openstack

    提示

    -w 选项附加到 oc get 命令的末尾,以跟踪部署进度。

    当状态为 "Setup complete" 时,会创建 OpenStackControlPlane 资源。

  8. 通过查看 openstack 命名空间中的 pod 确认 control plane 已部署:

    $ oc get pods -n openstack

    当所有 pod 都已完成或运行时,会部署 control plane。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.