第 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)服务,如
Glance
、Cinder
或Manila
。 -
组件 - 服务的组件,如
GlanceAPI
、CinderAPI
、CinderScheduler
、ManilaShare
、CinderBackup
。 -
实例 - 特定组件的单个实例。例如,您的部署可能有两个组件
ManilaShare
实例,名为share1
和share2
。实例 级别传播代表与同一组件类型一部分的实例关联的 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
条目的挂载组进行分类或标记。此参数没有定义值,但Ceph
、Nfs
和Undefined
的值比较常见。这是一个可选属性。- 5
volumes
字段是一个定义 Red Hat OpenShift 卷源的列表。此字段的结构与 Pod 中的volumes
部分相同。结构取决于定义的卷类型。本节中定义的名称用作挂载
部分的参考。- 6
mount
字段是一个挂载点列表,代表应在 Pod 中挂载volumeSource
的路径。volumes
部分中卷的名称用作参考,以及应挂载它的路径。此属性的结构与 Pod 的volumeMounts
属性相同。
2.1. 使用 extraMounts
属性挂载外部文件
流程
-
在工作站上打开
OpenStackControlPlane
自定义资源(CR)文件openstack_control_plane.yaml
。 将
extraMounts
属性添加到OpenStackControlPlane
CR 服务定义中。以下示例演示了添加
extraMounts
属性:apiVersion: core.openstack.org/v1beta1 kind: OpenStackControlPlane metadata: name: openstack spec: extraMounts: - name: v1 region: r1 extraVol: extraVolType: Ceph
添加
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
-
后端传播:
-
CinderVolume
、ManilaShare
或GlanceAPI
映射中的任何后端。
-
定义卷源:
以下示例演示了如何将
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
字段。
定义在 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 字段。
更新 control plane:
$ oc apply -f openstack_control_plane.yaml -n openstack
等待 RHOCP 创建与
OpenStackControlPlane
CR 相关的资源。运行以下命令来检查状态:$ oc get openstackcontrolplane -n openstack
提示
将
-w
选项附加到oc get
命令的末尾,以跟踪部署进度。当状态为 "Setup complete" 时,会创建
OpenStackControlPlane
资源。通过查看 openstack 命名空间中的 pod 确认 control plane 已部署:
$ oc get pods -n openstack
当所有 pod 都已完成或运行时,会部署 control plane。