Kubernetes is among the most popular container orchestrators, if not the most popular. It is also the foundation for many of the Platform-as-a-Service offerings such as Red Hat’s OpenShift and Apprenda’s platform. So it’s no surprise that you might be spending the holidays hiding from the in-laws and cold weather, or avoiding fixing your parents' computer, by figuring out what Kubernetes is and why everyone is making a big deal about it. We’ve talked about how to provide persistent storage to applications deployed using Kubernetes earlier this year (using iSCSI and NFS), however the flaw in this approach is that the volumes must be pre-provisioned and introduced by the Kubernetes administrator before they can be utilized. This is cumbersome, you don’t want to spend your precious time off creating and destroying volumes manually like it’s 2007!
Unfortunately, native dynamic storage provisioning in Kuberentes didn't become available until 1.2, and true to its alpha status is severely limited in functionality. However, 1.4 promoted dynamic provisioning to beta status and added some new capabilities which we can capitalize on to make dynamic storage provisioning using enterprise storage arrays a reality. The core of this new functionality, the
StorageClass API object, enables us to define multiple storage provisioners, each one unique so that storage features and functionality can be exposed as needed.
What does this mean for you?
We are excited, and very happy, to announce and release Trident, an open source storage provisioner and orchestrator for the NetApp portfolio. Storage is fundamental to applications. Having access to storage when it’s needed, where it’s needed, and with the appropriate level of performance, availability, and recoverability is critical not just to the success of the application, but of the business. Leveraging Trident enables applications which are provisioned and managed using Kubernetes to consume storage resources on demand, without having to worry about the details. Trident does this by providing the ability to create and delete storage objects, such as iSCSI LUNs or NFS exports, using a REST interface or via the Kubernetes dynamic storage provisioning paradigm.
Internally, Trident orchestrates the provisioning of storage requests across the configured storage providers, utilizing the NetApp Docker Volume Plugin (nDVP) to provide the storage management functions, such as create and delete. Note that Trident is not responsible for the mounting of storage, only creation/destruction. The storage consumer, for example Kubernetes, is responsible for mounting of the storage where needed. Initially we have tested and verified that both ONTAP and SolidFire work with Trident, enabling the consumption of NetApp’s two most feature rich storage platforms directly, and using native integration, by applications deployed using Kubernetes.
In addition to simply provisioning volumes using the defined parameters of nDVP drivers, Trident can also orchestrate the consumption of storage resources across storage providers which match criteria specified by the
StorageClass. This means that the Trident administrator can create meta-classes of storage, such as Gold, Silver, and Bronze, which span multiple storage providers to seamlessly and transparently provide homogenized storage features and capabilities regardless of the layout of the backing storage systems.
Storage at the Speed of Containers
Trident is available now from the GitHub repository. Please be sure to read through the documentation on how to get started setting up and integrating Trident with your Kubernetes deployment. If you have any issues or questions we’re available on Slack (we have an entire channel dedicated to containers) or in the comments below!