This guide shows how to configure and deploy NetApp ONTAP Manila driver in a Red Hat OpenStack Services on OpenShift (RHOSO) 18.0 control plane. After reading this, you’ll be able to define the proper environment files and deploy single or multiple ONTAP Manila backends in RHOSO control plane.
Note
For more information about RHOSO, please refer to its documentation pages.
Warning
RHOSO 18.0 is based on OpenStack Antelope release. Features included after Antelope release are not available in RHOSO 18.0
In order to deploy NetApp Manila backends, you should have the following requirements satisfied:
NetApp ONTAP storage controllers deployed and ready to be used as Manila backends. See ONTAP Prerequisites for more details.
Deploy the RHOSO control plane on an OpenShift cluster configured with three master nodes and three worker nodes.
RHOSO control plane where Manila services will be installed.
Ensure network connectivity between the storage back end, the Red Hat OpenShift cluster, and the Compute nodes.
You install the Red Hat OpenStack Services on OpenShift (RHOSO) OpenStack Operator (openstack-operator) and create the RHOSO control plane on an operational Red Hat OpenShift Container Platform (RHOCP) cluster. You install the OpenStack Operator by using the RHOCP web console.
To configure a single NetApp Manila backend, Open your OpenStackControlPlane CR file, and add the following parameters to the manila template.
openstack_control_plane.yaml
apiVersion: core.openstack.org/v1beta1
kind: OpenStackControlPlane
spec:
...
manila:
enabled: true
template:
manilaAPI:
replicas: 3
customServiceConfig: |
[DEFAULT]
debug = true
#You can modify the enabled_share_protocols parameter to list only the desired protocols for your cloud.
#For instance, if your deployment's back ends support both NFS and CIFS, you can adjust the default
#value to enable only one protocol.
enabled_share_protocols=nfs,cifs
manilaScheduler:
replicas: 3
manilaShares:
share1:
networkAttachments:
- storage
customServiceConfigSecrets:
- manila_netapp_secret
customServiceConfig: |
[DEFAULT]
debug = true
enabled_share_backends=netapp-ontap-backend
[netapp-ontap-backend]
driver_handles_share_servers=False
share_backend_name=netapp-ontap-backend
share_driver=manila.share.drivers.netapp.common.NetAppDriver
netapp_storage_family=ontap_cluster
netapp_volume_name_template ='share_%(share_id)s'
netapp_vserver = 'vserver_name'
#Use below aggregate param in case of DHSS=True and remove above vserver param.
#netapp_root_volume_aggregate = 'aggr0'
replication_domain = netapp_replication_domain
default_share_type = dhss_false
backend_availability_zone=manila-zone-1
#Use below configuration options for enabling "Standalone Network Plugin" with DHSS=True
#network_api_class = manila.network.standalone_network_plugin.StandaloneNetworkPlugin
#standalone_network_plugin_allowed_ip_ranges = *.*.*.*-*.*.*.*
#standalone_network_plugin_gateway = *.*.*.*
#standalone_network_plugin_mask = 255.255.255.0
#standalone_network_plugin_ip_version = 4
#standalone_network_plugin_network_type = flat
...
Modify the parameter values according to your NetApp ONTAP backend configuration. Run “oc apply -f openstack_control_plane.yaml -n openstack” command to apply the changes.
Note
1. Each YAML Configuration Parameter corresponds to a Manila Configuration Option. See Table 7.1, “Manila NetApp THT Configuration Parameters “ for a complete list of the THT Configuration Parameters and their correspondence to Manila Configuration Options.
2. For information on Standalone Network Plug-in, please refer to this https://netapp-openstack-dev.github.io/openstack-docs/antelope/manila/configuration/manila_config_files/network_plugins/section_standalone_network_plugin.html#standalone-network-plugin
Note
Create a server connection secret for an alternative back end to prevent placing server connection information directly in the OpenStackControlPlane CR.
The following is an example of the contents of a configuration file:
[netapp-ontap-backend]
netapp_server_hostname = <netapp_ip>
netapp_login = <netapp_user>
netapp_password = <netapp_password>
netapp_vserver = <netappvserver>
Create the secret based on the configuration file: oc create secret generic <secret_name> –from-file=secret-config.yaml
See NetApp Unified Driver for ONTAP with Share Server management (Antelope) and NetApp Unified Driver for ONTAP without Share Server management (Antelope) for a complete list of the available Manila Configuration Options.
Warning
RHOSO 18.0 is based on OpenStack Antelope release. Features and Configuration Options included after Antelope release are not available in RHOSO 18.0.
If you are coming from an RHOSP-17.1 background, the following table maps each THT configuration parameter to the corresponding Manila configuration option. The Manila template in the OpenStackControlPlane CR uses only the Manila configuration option parameters.
THT Parameter Name |
Manila Configuration Option |
Required/Optional |
Description |
---|---|---|---|
|
|
Required |
The name used by Manila to refer to the Manila backend. |
|
|
Required |
Administrative user account name used to access the storage system. |
|
|
Required |
Denotes whether the driver should handle the responsibility of managing share servers. This must be set to |
|
|
Required |
Password for the administrative user account specified in the |
|
|
Required |
The hostname or IP address for the storage system or proxy server. The value of this option should be the IP address of the cluster management LIF. |
|
|
Required |
Transport protocol for communicating with the storage system or proxy server. Valid options include |
|
|
Required |
The storage family type used on the storage system; valid values are |
|
|
Optional |
The TCP port to use for communication with the storage system or proxy server. If not specified, ONTAP drivers will use 80 for HTTP and 443 for HTTPS. |
|
|
Optional |
This option specifies a string replacement template that is applied when naming FlexVol volumes that are created as a result of provisioning requests. |
|
|
Required |
This option specifies the storage virtual machine (previously called a Vserver) name on the storage cluster on which provisioning of shared file systems should occur. This parameter is required if the driver is to operate without managing share servers (that is, be limited to the scope of a single SVM). |
|
|
Optional |
This option specifies a string replacement template that is applied when naming FlexVol volumes that are created as a result of provisioning requests. |
|
|
Optional |
This option specifies a string replacement template that is applied when naming data LIFs that are created as a result of provisioning requests. |
|
|
Optional |
This option specifies a regular expression that is applied against all available aggregates. This filtered list will be reported to the Manila scheduler as valid pools for provisioning new shares. |
|
|
Required |
This option specifies name of the aggregate upon which the root volume should be placed when a new SVM is created to correspond to a Manila share server. |
|
|
Optional |
This option specifies name of the root volume that will be created when a new SVM is created to correspond to a Manila share server. |
|
|
Optional |
This option allows you to specify a regular expression for overriding the selection of network ports on which to create Vserver LIFs. |
|
|
Optional |
This option is a comma-separated list of options (valid values include |
|
|
Optional |
This option specifies the NFS protocol versions that will be enabled on new SVMs created by the driver. Valid values include nfs3, nfs4.0, nfs4.1. |
|
|
Optional |
This option specifies the percentage of share space set aside as reserve for snapshot usage. Valid values range from 0 to 90. |
|
|
Optional |
The maximum time in seconds to wait for existing snapmirror transfers to complete before aborting when promoting a replica. |
|
|
Optional |
The percentage of share space set aside as reserve for snapshot usage; valid values range from 0 to 90. |
Table 7.1. Manila NetApp Configuration Parameters
In order to configure multiple NetApp Manila backends, you need to define the all the backends on OpenStackControlPlane CR.
Open your OpenStackControlPlane CR file, openstack_control_plane.yaml, and add the following parameters to the manila template to configure the multiple backends. Following the example shows how to add multiple NetApp Manila backends.
netapp-multi-backend.yaml
This file defines the multiple Manila share backend
netapp-multi-backend.yaml
and its parameters.
apiVersion: core.openstack.org/v1beta1
kind: OpenStackControlPlane
spec:
...
manila:
enabled: true
template:
manilaAPI:
replicas: 3
customServiceConfig: |
[DEFAULT]
debug = true
#You can modify the enabled_share_protocols parameter to list only the desired protocols for your cloud.
#For instance, if your deployment's back ends support both NFS and CIFS, you can adjust the default
#value to enable only one protocol.
enabled_share_protocols=nfs,cifs
manilaScheduler:
replicas: 3
manilaShares:
share1:
networkAttachments:
- storage
customServiceConfigSecrets:
- manila_netapp_secret
customServiceConfig: |
[DEFAULT]
debug = true
enabled_share_backends=netapp-ontap-primary-backend
[netapp-ontap-primary-backend]
driver_handles_share_servers=False
share_backend_name=netapp-ontap-primary-backend
share_driver=manila.share.drivers.netapp.common.NetAppDriver
netapp_storage_family=ontap_cluster
netapp_volume_name_template='share_%(share_id)s'
netapp_vserver='vserver_name_primary'
#Use below aggregate param in case of DHSS=True and remove above vserver param.
#netapp_root_volume_aggregate = 'aggr0'
replication_domain = netapp_replication_domain
backend_availability_zone=manila-zone-1
#Use below configuration options for enabling "Standalone Network Plugin" with DHSS=True
#network_api_class = manila.network.standalone_network_plugin.StandaloneNetworkPlugin
#standalone_network_plugin_allowed_ip_ranges = *.*.*.*-*.*.*.*
#standalone_network_plugin_gateway = *.*.*.*
#standalone_network_plugin_mask = 255.255.255.0
#standalone_network_plugin_ip_version = 4
#standalone_network_plugin_network_type = flat
share2:
networkAttachments:
- storage
customServiceConfigSecrets:
- manila_netapp_secret_sec
customServiceConfig: |
[DEFAULT]
debug = true
enabled_share_backends=netapp-ontap-secondary-backend
[netapp-ontap-secondary-backend]
driver_handles_share_servers=False
share_backend_name=netapp-ontap-secondary-backend
share_driver=manila.share.drivers.netapp.common.NetAppDriver
netapp_storage_family=ontap_cluster
netapp_volume_name_template='share_%(share_id)s'
netapp_vserver='vserver_name_sec'
#Use below aggregate param in case of DHSS=True and remove above vserver param.
#netapp_root_volume_aggregate='aggr0'
replication_domain = netapp_replication_domain
backend_availability_zone=manila-zone-2
#Use below configuration options for enabling "Standalone Network Plugin" with DHSS=True
#network_api_class = manila.network.stand-alone_network_plugin.StandaloneNetworkPlugin
#standalone_network_plugin_allowed_ip_ranges = *.*.*.*-*.*.*.*
#standalone_network_plugin_gateway = *.*.*.*
#standalone_network_plugin_mask = 255.255.255.0
#standalone_network_plugin_ip_version = 4
#standalone_network_plugin_network_type = flat
Modify the parameter values according to your NetApp ONTAP backend configuration.
Run “oc apply -f openstack_control_plane.yaml -n openstack” command to apply the changes or edit the OpenStackControlPlane CR file.
Wait until RHOSO creates the manila share pod, run “oc get openstackcontrolplane -n openstack” command to check the status.
Note
[Applicable only incase of DHSS=False] Starting from ONTAP 9.13.1, there is a design change on deleting flexclone volumes. ONTAP 9.13.1 has introduced volume retention option by default. It means that, the flexclone volumes (equivalent to “shares created from snapshot” in OpenStack) which are deleted in OpenStack would be retained in ONTAP by default, and that will cause share deletion problems in Manila. i.e Manila will not be able to delete such shares, as the equivalent flexclone volumes would be still linked in “volume clones” of parent volume in ONTAP. To avoid waiting for the retention period,and to delete the flexclone share immediately in OpenStack or ONTAP, user can can set the retention period to 0 for the share server being used here.
> set diagnostic
> vserver modify -vserver <vserver_name> -volume-delete-retention-hours 0
This document is licensed under Apache 2.0 license.