Getting Started With YugaByte DB 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 YugaByte DB?
Over the past few weeks we heard increased community and customer requests for official support of YugaByte DB on PKS clusters. The result? Enterprises can now combine PKS and YugaByte DB 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 YugaByte DB?
YugaByte DB 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 YugaByte DB 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 YugaByte DB. 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 YugaByte DB 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 YugaByte DB Universes
You can create a universe using YugaWare very easily using the UI or a REST API. Internally, YugaWare uses YugaByte DB 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 YugaByte DB. If that sounds interesting to you, do remember we are hiring!