Extended Storage Backend Prerequisites¶
Ensure that the following prerequisites are met before you configure an ESB for StarlingX OpenStack.
This section covers the following topics:
Cinder Driver Support¶
Verify that your storage array’s Cinder driver is included in the upstream
OpenStack cinder package for the 2026.1 (Gazpacho) release. Drivers that
require vendor-supplied libraries or custom container images are not supported
in this release.
See the Cinder driver support matrix.
Storage Array Preparation¶
Before applying the application, configure the storage array and ensure that its management API is accessible from the controller nodes.
For
iscsiandfcpbackends, configure targets or zoning and verify connectivity from the compute nodes.For
nfsbackends, create the required exports and verify that they can be mounted.
Kubernetes StorageClass¶
Determine whether the backend requires a Kubernetes StorageClass.
A backend used for Cinder volumes (typically
iscsiorfcp) can usek8s_storage_class: noneto access the storage array directly.A backend that also provisions Kubernetes PVC storage for the control plane, Glance, or Nova requires a valid StorageClass backed by an installed and operational CSI driver. StarlingX OpenStack does not install CSI drivers.
Confirm which StorageClasses exist by running the following command:
~(keystone_admin)]$ kubectl get storageclass
Note
StarlingX OpenStack does not validate the StorageClass specified in k8s_storage_class
before applying the application. Ensure that the StorageClass name is correct and
its associated CSI driver is operational.
Credentials Secret¶
If the backend requires credentials, create a Kubernetes Secret containing the storage array’s management credentials used by the Cinder driver to authenticate with the array. These credentials are typically different from your platform login credentials. Using your platform login instead will cause authentication to fail and prevent the backend from starting.
~(keystone_admin)]$ kubectl create secret generic <secret-name> \
--namespace openstack \
--from-literal=<key1>=<value1> \
--from-literal=<key2>=<value2>
Reference the Secret in the backend’s secretRef and map each Secret key to the
cinder.conf field required by the driver. A single Secret can hold the
credentials for several backends, each mapping the keys it needs.
Note
The openstack namespace exists only after StarlingX OpenStack has been applied at
least once. On a first-time installation, create the openstack
namespace manually before creating the Secret. The Secret must exist before
you apply StarlingX OpenStack.
TLS Certificate for Array API¶
If the array’s management API uses HTTPS with a private or self-signed CA,
place the CA certificate on the active controller and point
storage_conf.tls.host_cert at it. The default path is
/var/opt/openstack/certs/storage.pem.
~(keystone_admin)]$ mkdir -p /var/opt/openstack/certs
The certificate file must exist at host_cert when you apply the
application. If the path is incorrect, the apply operation still succeeds but
no certificate is mounted and the TLS handshake fails at runtime.
Note
storage_conf.netapp_tls from the previous release is still supported
and automatically mapped to storage_conf.tls. However, it is deprecated
and planned for removal in a future release. Use storage_conf.tls for
new configurations.
Control-Plane StorageClass Decision¶
If you plan to place the control-plane services (MariaDB and RabbitMQ) on an extended backend, decide during first installation.
The PVCs for MariaDB and RabbitMQ are created once, and Kubernetes does not allow the StorageClass of an existing claim to change. Changing it on a running system causes the apply operation to fail while upgrading the MariaDB or RabbitMQ release. To move these services to a different StorageClass later, you must remove the application, delete the existing claims, and re-apply the application. See Configure an Extended Storage Backend.
Note
A VolumeSnapshotClass must be available before updating the application if MariaDB uses a PVC-backed extended backend. Create the VolumeSnapshotClass before initiating the application update.