Around the Storage Block

GKE On-Prem using HPE Nimble Storage dHCI

HPE Nimble Storage dHCI

About a month back, my colleague, Michael Mattson, posted a blog article on Google Kubernetes Engine (GKE) On-Prem using a converged solution based on HPE ProLiant and HPE Nimble Storage.

I have to be honest here – this involved quite a bit of configuration work! The weekend before Google Next, we worked through the night to put all the pieces of the puzzle together, defining virtual networking, assigning the correct interface to the correct network, creating snapshots, etc. It involved a lot of manual configuration, but at the end of the day we had a working solution.

What would have been really helpful to us is a solution that automates most of the common tasks of setting up the infrastructure components, so that we could be free to focus solely on the GKE On-Prem elements.

With the announcement of the new HPE Nimble Storage dHCI solution, you can now use the solution combined with GKE On-Prem to create a true hybrid cloud solution. See blog of my colleague David Wang regarding the announcement:

So what’s this GKE On-Prem thing all about, anyway?


The reality of VM admins today is that the infrastructure is becoming increasingly more complex. Controlling VM sprawl is a constant battle, along with pressure to lower cost and to do more supporting both traditional and modern applications.

On top of that, designing, building and managing Kubernetes clusters can be taxing and it can requires a broad skillset.

Solution : GKE On-Prem using HPE Nimble Storage dHCI

HPE Nimble Storage dHCI and GKE On-Prem share the same spirit and idea. For both solutions, the premise is to offer:

         a simplified deployment experience

         centralized management;

         a true hybrid cloud solution;

         end-to-end support experience.

HPE Nimble Storage dHCI and GKE On-Prem drastically simplify the deployment/management and scaling of your VMware and Kubernetes clusters. Once you add HPE Cloud Volumes into the mix, you get a true hybrid cloud solution for container that can scale as your needs require both on-prem and in the cloud.

Technical Overview : GKE On-Prem using HPE Nimble Storage dHCI

OK, enough with the high level marketing pitch.  Let’s roll up our sleeves and dive into the technical aspects of the solution.

First, I deployed a new HPE Nimble Storage dHCI solution comprised of an HPE Nimble Storage AF40 for storage, two HPE DL380 Gen 10 for compute, and two HPE StoreFabric 2010M for networking.


To deploy the VMware environment, I used a feature called Stack Setup. This was a key component of our solution which automates the process to deploy our HPE Nimble Storage array and HPE ProLiant server, deploy a new vCenter, create a new datacenter, create a new cluster, and finally create a datastore.  The screenshots below walk you through what the experience looks like.

Create a new vCenter


Create a new datacenter and a new cluster


Select servers that will be used for VMware cluster


Create a VMFS datastore where deployed GKE On-Prem


After deploying my HPE Nimble Storage dHCI environment, I had to make a couple of modifications before moving forward with the deployment of GKE On-Prem:

        Create a new VM Network called Island to have a dedicated network for GKE On-Prem

        Create a resource pool for GKE On-Prem


And that’s it! Our VMware environment was ready for GKE On-Prem deployment in less than 30 minutes! As you can see, it’s much easier than having to deploy each component manually.

Deploy GKE On-Prem

To deploy GKE On-Prem, I used the documentation and tools provided by Google.

I first deployed a load balancer which can be either virtual or physical.

In my environment, I used a virtual F5 Load Balancer.


Then, I deployed the “admin workstation” OVA from Google using GOVC and Terraform


Lastly, I deployed GKE On-Prem !

The simplified Stack Setup provided with HPE Nimble Storage dHCI is along the lines of what Google provides with their tool – gkectl. It initiated a sequence of prompts which created the yaml file that was used to create and configure the kubernetes environment.


Once you have deployed GKE On-Prem, you should have something similar to this:


Now, you can use your kubernetes environment!

Using kubectl get node to check the status of your node:


After deployment, I registered my GKE On-Prem using GCP Console to have a centralized management of my different GKE environments.


Et voila!

Tech Preview – HPE Nimble Storage FlexVolume Driver for Kubernetes

Kubernetes 1.4 introduced the FlexVolume plugin framework, an extremely lightweight “shim” to allow third-parties and users to provision storage to their containers however they want.

HPE Nimble Storage provides a FlexVolume driver implementation that exposes seamless connectivity to a storage array able to provision dynamic volumes according to your storage class requirements.

The solution for Kubernetes provides scalable and persistent storage for stateful applications.

Let’s go over the configuration example I used in my lab.

Create a secret with your array details

Replace the password string (in this instance, YWRtaW4=) with a base64 encoded version of your actual password and replace the IP with your array IP address and save it into a file called secret.yaml:


Create the secret using kubectl


You should now see the Nimble secret in the kube-systemnamespace along with other secrets15.png

Create a configmap with default settings for HPE FlexVolume plugin and save it into a file called nimble-config.yaml









Create a configmap using kubectl:


Deploy HPE Nimble Storage FlexVolume plugin as Daemonset and HPE Dynamic Provisioner(doryd) as Deployment using the following command18.png

Create a protection template on the HPE Nimble Storage array which includes replication to HPE Cloud Volumes as part of the policy. Define the schedule for replication updates according to your preference.19.pngUse StorageClass to define attributes for the newly persistent volume.

The volume parameter for an HPE Nimble Storage volume can be found here:

Here’s an example of StorageClass with volume parameters replicated to HPE Cloud Volumes.



Create a PersistentVolumeClaim. This makes sure a volume is created and provisioned on your behalf.22.png

Check that a new PersistentVolume is created based on your claim.24.png

The above output means that the HPE Nimble Storage FlexVolume driver successfully provisioned a new volume which is automatically set up to replicate to HPE Cloud Volumes. The volume is not attached to any node yet. It will only be attached to a node if a workload is scheduled to a specific node. 

Now let’s create a pod using our volume



Tech Preview – HPE Cloud Volumes for GCP and K8s Flexvolume drivers

Now that we have our nginx application replicated to the cloud, let’s restart it in the Google Cloud Platform (GCP) using HPE Cloud Volumes!

In my GCP environment, I created a Kubernetes cluster:


The deployment of our FlexVolume driver is just as simple when using HPE Cloud Volumes as it is for on-prem persistent storage.

I changed my Kubernetes context to now use my GCP cluster.

In the same way that we created a secret to get access to the on-prem array, we need to create a secret to access HPE Cloud Volumes



The configmap must now contain the connection details for HPE Cloud Volumes



Deploy HPE Cloud Volumes FlexVolume plugin as Daemonset and HPE Dynamic Provisioner (doryd) as Deployment


Create a StorageClass with volume parameters as required and specify the replica volume name to import as clone along with its replication store name as shown in the following example:


Note the provisioner name here is

Create a PersistentVolumeClaim. This makes sure a volume is created and provisioned.


Now let us create a Pod that refers to the volume we just imported. When the Pod is created, the volume will be attached and mounted to the specified container:



As you can see below, my service my-nginx got created in GCP



So there you have it!  Just to recap, we’ve outlined the detailed steps and provided practical insights into how we bring together key components in the HPE portfolio to easily and simplistically create a containerized environment that spans on-prem and cloud with unified management.  And this is just the beginning of the capabilities and integrations we’ll be offering in the future!

We’ve launched our HPE Nimble Storage dHCI solution that combines the powerful ProLiant platform with our Nimble Array with unified setup, configuration, and management, combined with the containerized persistent storage solution for both on-prem and the cloud, and topped off with integration with GKE on prem and in the cloud with more to come.

Through this effort, we’re enabling several critical use cases for hybrid cloud environments including:

        Dev/Test workflows to develop in the cloud and deploy on prem

        Disaster Recovery for completed data protection across on prem and cloud

        Enable agility and innovation across any and all cloud

       Sophisticated analytics to analyze data in the cloud without disrupting on-prem workloads

Watch this space as we’ll continue to show how this newly create solution acts as the launching point for the ability to manage all of your containerized workload both on-prem and the cloud through HPE integration with Google Anthos.  We’ll continue to provide insights and best practices for stateful and stateless applications though simplified set up, configuration, and monitoring.

This detailed example is the foundation for allowing HPE to enable the industry’s first true hybrid cloud providing:

        Unified management via GCP

        Multicloud flexibility

        Consistent advanced data services and APIs

        Everything as a service

Fred Gagne
Hewlett Packard Enterprise


About the Author


Fred specializes in HPE Converged Solution and HPE Nimble Storage dHCI solution.