OpenShift Origin 3.7 released November 29, 2017 and with it built-in support for Dell EMC ScaleIO storage. Although ScaleIO was technically available in OpenShift 3.6, the initial release didn’t explicitly enable ScaleIO support. This new release is based on Kubernetes 1.7.6; with OpenShift versioning the x in 3.x correlates to the minor release numbering in the Kubernetes release. With the 3.7 release, it is quite simple to configure ScaleIO support with OpenShift, as shown in the example below.

To use ScaleIO with OpenShift, you need the ScaleIO SDC installed and configured on all of your OpenShift nodes. You will also need a ScaleIO Gateway configured/functional, as it provides a REST interface for the OpenShift interface.

Example Use of ScaleIO w/ OpenShift

In this example, a ScaleIO StorageClass will be configured to deploy a redis database with a persistent volume.

From a console, authenticate as a cluster admin and run through the following steps:

  1. Create a StorageClass set to be the default StorageClass. Make sure to set the parameters to match your ScaleIO environment.

  1. Create a new project to run the demo in and give access to it a standard user.

  1. Create a Secret to store ScaleIO credentials. OpenShift requires the Secret values to be base64-encoded which obfuscates, but not encrypts, the clear text passwords. You can run ‘echo -n “input” | base64’ to get your base-64 encoded string.

With a default StorageClass defined, and Secret credentials added to your new project, you are now ready to use ScaleIO persistent volumes in OpenShift.

To consume ScaleIO storage, create a sample application through the web interface via the following steps:

  1. From the web interface, select Redis (Persistent) from the catalog:

  1. Create a new Redis (Persistent) Instance:

  1. Click continue to the project overview:

  1. Redis should complete deployment of 1 pod:

  1. If you click on Storage, you will see the automatically created storage volume:

  1. This can also be seen from the Scaleio GUI:

If you go to the deployed pod’s terminal, you’ll see that a ScaleIO block device is mapped to /var/lib/redis/data, and the local container’s user is able to write to the device. In this example case, the user’s group ID is 1000090000. Once data is added and saved, you will see the redis dump file stored on the ScaleIO block device.

If a pod is deleted, a new one will automatically be created. When it comes online, it will have the same remote volume mapped to /var/lib/redis/data, hence allowing the database to maintain persistence:

What’s Coming in OpenShift 3.8?

Since OpenShift releases follow 3-6 months behind Kubernetes releases, we can provide some details about what will be coming in the next release. In OpenShift 3.8, security will be greatly enhanced by allowing the ScaleIO credentials to be stored in a dedicated namespace/project. This makes it possible to provide ScaleIO support in a multi-tenant OpenShift environment. It will also make it easier to use ScaleIO with containerized OpenShift because there will be no requirement for local system paths to be accessible from within the OpenShift containers.