Getting Started With YugabyteDB on Pivotal Container Service (PKS)
Pivotal Container Service (PKS) simplifies the deployment and management of enterprise-grade Kubernetes on both public and private clouds. The PKS APIs and its command line interface make it easy to create and manage Kubernetes clusters without cloud-vendor lock in.
Getting started with PKS is easy
Why PKS and YugabyteDB?
Over the past few weeks we heard increased community and customer requests for official support of YugabyteDB on PKS clusters. The result? Enterprises can now combine PKS and YugabyteDB to deliver a private database-as-a-service which is easy to install and operate. This private DBaaS enables developers to self-service data services, bringing unparalleled agility to the business along with opportunities to consolidate database sprawl and simplify operations.
What is YugabyteDB?
YugabyteDB is a transactional database for globally distributed applications, designed from the ground up for the cloud and cloud-native environments like Kubernetes containers. What’s unique about YugabyteDB is its ability to deliver SQL and NoSQL capabilities in a single, open source database. Features include:
- Distributed ACID transactions
- 90% better performance than Cassandra
- Redis, PostgreSQL and Cassandra wire compatible APIs
- Automated scaling across availability zones and cloud providers
First, we need to create a PKS Kubernetes Cluster to run YugabyteDB. This is easy enough to do by running the following command:
Listing all the Kubernetes clusters will show the cluster we just created.
Next, you need to installing the YugaByte Management Console – called YugaWare, which is a containerized application deployed in a Kubernetes pod. YugaWare offers a managed data service like experience for interacting with YugabyteDB and integrates deeply with Kubernetes.
Once the service is up and running, browsing to the UI should ask for some basic information along with the type of the deployment.
Once the registration goes through, you should an empty dashboard that looks as follows:
Configuring PKS as a Data Service Provider
Now that we have a PKS cluster with YugaWare installed, let us configure PKS as a data service provider on it next. In the Cloud Provider Configuration screen, click on the PKS configure screen and just enter the following details.
- The service account name that has sufficient privileges to spin up and tear down database pods
kubeconfigfile with information about the PKS cluster
Upon saving the credentials, you should see the PKS cluster as a provider as shown below:
Creating YugabyteDB Universes
You can create a universe using YugaWare very easily using the UI or a REST API. Internally, YugaWare uses YugabyteDB Helm Charts to orchestrate creation of a cluster on Kubernetes. Helm is an open-source package manager that simplifies installation of apps and services on Kubernetes. Helm packages a collection of YAML templates and default values into a well-defined format called a chart.
To create a new universe using the UI, simply click on the create universe button. Choose the provider we just configured, and you’re all set.
Just hit ok, and everything is taken care of for you by YugaWare and PKS!
You can list the nodes and pods using Kubernetes:
Running a Workload
Next, let us run a Cassandra key-value workload.
Upon running a workload, you should see the metrics start showing the total IOPS happening in the cluster.
We wanted to give a huge shout out to Amey Banarse, Nikhil Chandrappa and Prasad Radhakrishnan from Pivotal’s (NYSE:PVTL ) Platform Architecture for Data team, without whose tireless efforts all of the above would not have been possible.
As for the next steps for our PKS integration, there are still a number of things that need to get done.
- This integration is currently in beta, working towards general availability.
- Backups integrated with object stores such as AWS S3 and SAN or NAS devices.
- Multi-AZ and multi-DC deployments for higher availability on failures.
There are a number of hard challenges in getting Kubernetes to work in a multi-DC environment, and in building a container-native database such as YugabyteDB. If that sounds interesting to you, do remember we are hiring!