Storage requirements for adoption
Before you can deploy the services in Red Hat OpenStack Services on OpenShift (RHOSO), you must review the storage requirements, plan your Red Hat OpenShift Container Platform (RHOCP) node selection, prepare your RHOCP nodes, and so on.
Storage in a Red Hat OpenStack Platform (RHOSP) deployment refers to the following types:
- The storage that is needed for the service to run
- The storage that the service manages
Storage driver certification Copy linkLink copied!
Confirm that your deployed storage drivers are certified for RHOSO 18.0 before adoption. See the Red Hat Ecosystem Catalog for certified software.
Block Storage service adoption preparation guidelines Copy linkLink copied!
Prepare to adopt your Block Storage service (cinder) to avoid errors during the process.
- Take note of the Block Storage service back ends that you use.
- Determine all the transport protocols that the Block Storage service back ends use, such as RBD, iSCSI, FC, NFS, NVMe-TCP, and so on. You must consider them when you place the Block Storage services and when the right storage transport-related binaries are running on the Red Hat OpenShift Container Platform (RHOCP) nodes. For more information about each storage transport protocol, see RHOCP preparation for Block Storage service adoption.
- Use a Block Storage service volume service to deploy each Block Storage service volume back end.
For example, you have an LVM back end, a Ceph back end, and two entries in
cinderVolumes, and you cannot set global defaults for all volume services. You must define a service for each of them:apiVersion: core.openstack.org/v1beta1 kind: OpenStackControlPlane metadata: name: openstack spec: cinder: enabled: true template: cinderVolumes: lvm: customServiceConfig: | [DEFAULT] debug = True [lvm] < . . . > ceph: customServiceConfig: | [DEFAULT] debug = True [ceph] < . . . >Warning Check that all configuration options are still valid for RHOSO 18.0 version. Configuration options might be deprecated, removed, or added. This applies to both back-end driver-specific configuration options and other generic options.
Block Storage service adoption limitations Copy linkLink copied!
Before you begin the Block Storage service (cinder) adoption, understand the limitations.
- There is no global
nodeSelectoroption for all Block Storage service volumes. You must specify thenodeSelectorfor each back end. - There are no global
customServiceConfigorcustomServiceConfigSecretsoptions for all Block Storage service volumes. You must specify these options for each back end. - Support for Block Storage service back ends that require kernel modules that are not included in Red Hat Enterprise Linux is not tested in Red Hat OpenStack Services on OpenShift (RHOSO).
RHOCP preparation for Block Storage service adoption Copy linkLink copied!
Before you deploy Red Hat OpenStack Platform (RHOSP) in Red Hat OpenShift Container Platform (RHOCP) nodes, ensure that the networks are ready, that you decide which RHOCP nodes to restrict, and that you make any necessary changes to the RHOCP nodes.
- Node selection
-
You might need to restrict the RHOCP nodes where the Block Storage service volume and backup services run.
An example of when you need to restrict nodes for a specific Block Storage service is when you deploy the Block Storage service with the LVM driver. In that scenario, the LVM data where the volumes are stored only exists in a specific host, so you need to pin the Block Storage-volume service to that specific RHOCP node. Running the service on any other RHOCP node does not work. You cannot use the RHOCP host node name to restrict the LVM back end. You need to identify the LVM back end by using a unique label, an existing label, or a new label:
$ oc label nodes worker0 lvm=cinder-volumesapiVersion: core.openstack.org/v1beta1 kind: OpenStackControlPlane metadata: name: openstack spec: secret: osp-secret storageClass: local-storage cinder: enabled: true template: cinderVolumes: lvm-iscsi: nodeSelector: lvm: cinder-volumes < . . . >For more information about node selection, see About node selectors.
Note If your nodes do not have enough local disk space for temporary images, you can use a remote NFS location by setting the extra volumes feature,
extraMounts. - Transport protocols
-
Some changes to the storage transport protocols might be required for RHOCP:
- If you use a
MachineConfigto make changes to RHOCP nodes, the nodes reboot. - Check the back-end sections that are listed in the
enabled_backendsconfiguration option in yourcinder.conffile to determine the enabled storage back-end sections. - Depending on the back end, you can find the transport protocol by viewing the
volume_driverortarget_protocolconfiguration options. - The
iscsidservice,multipathdservice, andNVMe-TCPkernel modules start automatically on data plane nodes.- NFS
- RHOCP connects to NFS back ends without additional changes.
- Rados Block Device and Red Hat Ceph Storage
- RHOCP connects to Red Hat Ceph Storage back ends without additional changes. You must provide credentials and configuration files to the services.
- iSCSI
- To connect to iSCSI volumes, the iSCSI initiator must run on the RHOCP hosts where the volume and backup services run. The Linux Open iSCSI initiator does not support network namespaces, so you must only run one instance of the service for the normal RHOCP usage, and the RHOCP CSI plugins and the RHOSP services.
- If you are not already running
iscsidon the RHOCP nodes, then you must apply aMachineConfig. For example:apiVersion: machineconfiguration.openshift.io/v1 kind: MachineConfig metadata: labels: machineconfiguration.openshift.io/role: worker service: cinder name: 99-master-cinder-enable-iscsid spec: config: ignition: version: 3.2.0 systemd: units: - enabled: true name: iscsid.service - If you use labels to restrict the nodes where the Block Storage services run, you must use a
MachineConfigPoolto limit the effects of theMachineConfigto the nodes where your services might run. For more information, see About node selectors. - If you are using a single node deployment to test the process, replace
workerwithmasterin theMachineConfig. - For production deployments that use iSCSI volumes, configure multipathing for better I/O.
- FC
- The Block Storage service volume and Block Storage service backup services must run in an RHOCP host that has host bus adapters (HBAs). If some nodes do not have HBAs, then use labels to restrict where these services run. For more information, see About node selectors.
- If the Image service is configured to use Block Storage service as a back end with FC, the Image service must also run on an RHOCP host that has HBAs and follow the same node selection requirements as the Block Storage service.
- If you have virtualized RHOCP clusters that use FC you need to expose the host HBAs inside the virtual machine.
- For production deployments that use FC volumes, configure multipathing for better I/O.
- NVMe-TCP
- To connect to NVMe-TCP volumes, load NVMe-TCP kernel modules on the RHOCP hosts.
- If you do not already load the
nvme-fabricsmodule on the RHOCP nodes where the volume and backup services are going to run, then you must apply aMachineConfig. For example:apiVersion: machineconfiguration.openshift.io/v1 kind: MachineConfig metadata: labels: machineconfiguration.openshift.io/role: worker service: cinder name: 99-master-cinder-load-nvme-fabrics spec: config: ignition: version: 3.2.0 storage: files: - path: /etc/modules-load.d/nvme_fabrics.conf overwrite: false # Mode must be decimal, this is 0644 mode: 420 user: name: root group: name: root contents: # Source can be a http, https, tftp, s3, gs, or data as defined in rfc2397. # This is the rfc2397 text/plain string format source: data:,nvme-fabrics - If you use labels to restrict the nodes where Block Storage
services run, use a
MachineConfigPoolto limit the effects of theMachineConfigto the nodes where your services run. For more information, see About node selectors. - If you use a single node deployment to test the process, replace
workerwithmasterin theMachineConfig. - Only load the
nvme-fabricsmodule because it loads the transport-specific modules, such as TCP, RDMA, or FC, as needed. - For production deployments that use NVMe-TCP volumes, use multipathing for better I/O. For NVMe-TCP volumes, RHOCP uses native multipathing, called ANA.
- After the RHOCP nodes reboot and load the
nvme-fabricsmodule, you can confirm that the operating system is configured and that it supports ANA by checking the host:$ cat /sys/module/nvme_core/parameters/multipathImportant ANA does not use the Linux Multipathing Device Mapper, but RHOCP requiresmultipathdto run on Compute nodes for the Compute service (nova) to be able to use multipathing. Multipathing is automatically configured on data plane nodes when they are provisioned.
- Multipathing
- Use multipathing for iSCSI and FC protocols. To configure multipathing on these protocols, you perform the following tasks:
- Prepare the RHOCP hosts
- Configure the Block Storage services
- Prepare the Compute service nodes
- Configure the Compute service
- To prepare the RHOCP hosts, ensure that the Linux Multipath Device Mapper is configured and running on the RHOCP hosts by using
MachineConfig. For example:# Includes the /etc/multipathd.conf contents and the systemd unit changes apiVersion: machineconfiguration.openshift.io/v1 kind: MachineConfig metadata: labels: machineconfiguration.openshift.io/role: worker service: cinder name: 99-master-cinder-enable-multipathd spec: config: ignition: version: 3.2.0 storage: files: - path: /etc/multipath.conf overwrite: false # Mode must be decimal, this is 0600 mode: 384 user: name: root group: name: root contents: # Source can be a http, https, tftp, s3, gs, or data as defined in rfc2397. # This is the rfc2397 text/plain string format source: data:,defaults%20%7B%0A%20%20user_friendly_names%20no%0A%20%20recheck_wwid%20yes%0A%20%20skip_kpartx%20yes%0A%20%20find_multipaths%20yes%0A%7D%0A%0Ablacklist%20%7B%0A%7D systemd: units: - enabled: true name: multipathd.service - If you use labels to restrict the nodes where Block Storage services run, you need to use a
MachineConfigPoolto limit the effects of theMachineConfigto only the nodes where your services run. For more information, see About node selectors. - If you are using a single node deployment to test the process, replace
workerwithmasterin theMachineConfig. - Cinder volume and backup are configured by default to use multipathing.
- Use multipathing for iSCSI and FC protocols. To configure multipathing on these protocols, you perform the following tasks:
- If you use a
Block Storage service configuration conversion for adoption Copy linkLink copied!
In your previous deployment, you use the same cinder.conf file for all the services. To prepare your Block Storage service (cinder) configuration for adoption, split this single-file configuration into individual configurations for each Block Storage service service.
Review the following information to guide you in converting your previous configuration:
- Determine what part of the configuration is generic for all the Block Storage services and remove anything that would change when deployed in Red Hat OpenShift Container Platform (RHOCP), such as the
connectionin the[database]section, thetransport_urlandlog_dirin the[DEFAULT]sections, the whole[coordination]and[barbican]sections. The remaining generic configuration goes into thecustomServiceConfigoption, or aSecretcustom resource (CR) and is then used in thecustomServiceConfigSecretssection, at thecinder: template:level. - Determine if there is a scheduler-specific configuration and add it to the
customServiceConfigoption incinder: template: cinderScheduler. - Determine if there is an API-specific configuration and add it to the
customServiceConfigoption incinder: template: cinderAPI. - If the Block Storage service backup is deployed, add the Block Storage service backup configuration options to
customServiceConfigoption, or to aSecretCR that you can add tocustomServiceConfigSecretssection at thecinder: template: cinderBackup:level. Remove thehostconfiguration in the[DEFAULT]section to support multiple replicas later. - Determine the individual volume back-end configuration for each of the drivers. The configuration is in the specific driver section, and it includes the
[backend_defaults]section and FC zoning sections if you use them. The Block Storage service operator does not support a globalcustomServiceConfigoption for all volume services. Each back end has its own section undercinder: template: cinderVolumes, and the configuration goes in thecustomServiceConfigoption or in aSecretCR and is then used in thecustomServiceConfigSecretssection. - If any of the Block Storage service volume drivers require a custom vendor image, find the location of the image in the Red Hat Ecosystem Catalog, and create or modify an
OpenStackVersionCR to specify the custom image by using the key from thecinderVolumessection.For example, if you have the following configuration:
spec: cinder: enabled: true template: cinderVolume: pure: customServiceConfigSecrets: - openstack-cinder-pure-cfg < . . . >Then the
OpenStackVersionCR that describes the container image for that back end looks like the following example:apiVersion: core.openstack.org/v1beta1 kind: OpenStackVersion metadata: name: openstack spec: customContainerImages: cinderVolumeImages: pure: registry.connect.redhat.com/purestorage/openstack-cinder-volume-pure-rhosp-18-0'Note The name of theOpenStackVersionmust match the name of yourOpenStackControlPlaneCR. - If your Block Storage services use external files, for example, for a custom policy, or to store credentials or SSL certificate authority bundles to connect to a storage array, make those files available to the right containers. Use
SecretsorConfigMapto store the information in RHOCP and then in theextraMountskey. For example, for Red Hat Ceph Storage credentials that are stored in aSecretcalledceph-conf-files, you patch the top-levelextraMountskey in theOpenstackControlPlaneCR:spec: extraMounts: - extraVol: - extraVolType: Ceph mounts: - mountPath: /etc/ceph name: ceph readOnly: true propagation: - CinderVolume - CinderBackup - Glance volumes: - name: ceph projected: sources: - secret: name: ceph-conf-files - For a service-specific file, such as the API policy, you add the configuration
on the service itself. In the following example, you include the
CinderAPIconfiguration that references the policy you are adding from aConfigMapcalledmy-cinder-confthat has apolicykey with the contents of the policy:spec: cinder: enabled: true template: cinderAPI: customServiceConfig: | [oslo_policy] policy_file=/etc/cinder/api/policy.yaml extraMounts: - extraVol: - extraVolType: Ceph mounts: - mountPath: /etc/cinder/api name: policy readOnly: true propagation: - CinderAPI volumes: - name: policy projected: sources: - configMap: name: my-cinder-conf items: - key: policy path: policy.yaml
CephFS through NFS changes for adoption Copy linkLink copied!
Before you begin the adoption, understand the changes to CephFS through NFS between Red Hat OpenStack Platform (RHOSP) 17.1 and Red Hat OpenStack Services on OpenShift (RHOSO) 18.0.
- If the RHOSP 17.1 deployment uses CephFS through NFS as a back end for Shared File Systems service (manila), you cannot directly import the
ceph-nfsservice on the RHOSP Controller nodes into RHOSO 18.0. In RHOSO 18.0, the Shared File Systems service only supports using a clustered NFS service that is directly managed on the Red Hat Ceph Storage cluster. Adoption with theceph-nfsservice involves a data path disruption to existing NFS clients. - On RHOSP 17.1, Pacemaker manages the high availability of the
ceph-nfsservice. This service is assigned a Virtual IP (VIP) address that is also managed by Pacemaker. The VIP is typically created on an isolatedStorageNFSnetwork. The Controller nodes have ordering and collocation constraints established between this VIP,ceph-nfs, and the Shared File Systems service (manila) share manager service. Before adopting Shared File Systems service, you must adjust the Pacemaker ordering and collocation constraints to separate the share manager service. This establishesceph-nfswith its VIP as an isolated, standalone NFS service that you can decommission after completing the RHOSO adoption. - In Red Hat Ceph Storage 7, a native clustered Ceph NFS service has to be deployed on the Red Hat Ceph Storage cluster by using the Ceph Orchestrator before adopting the Shared File Systems service. This NFS service eventually replaces the standalone NFS service from RHOSP 17.1 in your deployment. When the Shared File Systems service is adopted into the RHOSO 18.0 environment, it establishes all the existing exports and client restrictions on the new clustered Ceph NFS service. Clients can continue to read and write data on existing NFS shares, and are not affected until the old standalone NFS service is decommissioned. After the service is decommissioned, you can re-mount the same share from the new clustered Ceph NFS service during a scheduled downtime.
- To ensure that NFS users are not required to make any networking changes to their existing workloads, assign an IP address from the same isolated
StorageNFSnetwork to the clustered Ceph NFS service. NFS users only need to discover and re-mount their shares by using new export paths. When the adoption is complete, RHOSO users can query the Shared File Systems service API to list the export locations on existing shares to identify the preferred paths to mount these shares. These preferred paths correspond to the new clustered Ceph NFS service in contrast to other non-preferred export paths that continue to be displayed until the old isolated, standalone NFS service is decommissioned. - When you migrate your workloads from the old NFS service, you must ensure that exports are not consumed from both the old NFS service and the new clustered Ceph NFS service at the same time. This simultaneous access to both services is considered dangerous and bypasses the protections for concurrent access that is ensured by the NFS protocol. When you migrate the workloads to use exports from the new NFS service, you must ensure that you migrate the use of each export entirely so that no part of the workload stays connected to the old NFS service.
- You can no longer control the old Pacemaker-managed
ceph-nfsservice through the Red Hat OpenStack Platform director after the control plane adoption is complete. This means that there is no support for updating the NFS Ganesha software, or changing any configuration. While data is protected from server crashes or restarts, high availability and data recovery is still limited, and these maintenance issues are no longer visible to Shared File Systems service. - Cloud administrators must ensure a reasonably short window to switch over all end-user workloads to the new NFS service.
- While the old
ceph-nfsservice only supported NFS version 4.1 and later, the new clustered NFS service supports NFS protocols 3 and 4.1 and later. Mixing protocol versions with an export results in unintended consequences. You should mount a given share across all clients by using a consistent NFS protocol version.