Many engineering leaders are really excited about digital transformation within their organizations. They have seen the benefits of Kubernetes: a uniform platform for deploying and managing applications. But in many organizations, the databases still run in bespoke environments. It would be ideal to migrate them to Kubernetes, but conventional wisdom says that running stateful workloads in Kubernetes is hard. What if we told you that we have solved the problems around running production grade databases in Kubernetes while also providing the ease of use of a fully managed database-as-a-service?
The power of Vitess with Kubernetes
Kubernetes has emerged as the de facto operating system for compute resources, either on your own data center or in the public cloud. Kubernetes abstracts away cloud specific requirements and allows you to focus on feature development and uniform deployment. Developing and deploying on Kubernetes also allows you to use a whole ecosystem of tools that have been developed for the Kubernetes platform. Until now, companies have been shy about deploying databases in Kubernetes because running a stateful service such as a database in a container within an orchestration framework is challenging; you cannot take for granted the longevity of the pod in which your master databases are running.
Vitess, built to run YouTube’s MySQL databases in Borg, and now a CNCF graduated project, handles these challenges. In fact, companies such as Hubspot have been running their MySQL databases on Kubernetes for the last two years using Vitess. At PlanetScale, we run our own database-as-a-service powered by Vitess in Kubernetes via the PlanetScaleDB operator, which automates many operational tasks such as master failovers, backup and restore, and rolling updates.
We all love the convenience that a hosted SaaS platform provides, but there are times when performance and security policies force us to stay within our own network perimeters. This is especially true for data. For regulatory reasons, you might need to host your databases within your network perimeter.
Deploy directly in your own Kubernetes cluster
Starting today, you can now use the PlanetScaleDB control plane hosted by us to deploy, manage, and monitor single and multi-sharded MySQL databases conveniently in your own Kubernetes clusters using the PlanetScaleDB operator - we call this PlanetScaleDB for Kubernetes. Our internal name for this product is BYOK—Bring your own Kubernetes—which aptly describes the new service we are offering. Now you can deploy databases directly into your own Kubernetes cluster without having to worry about backups, durability, high availability or other database management headaches.
With PlanetScaleDB for Kubernetes, you define a custom region in the PlanetScaleDB control plane which points to your Kubernetes cluster. We have automated this process so that it’s quick and easy to use while remaining transparent and auditable. You always know exactly which artifacts are created and have full control over access control permissions granted in your Kubernetes cluster. Once the region is created and configured, you can start deploying databases into it just as you would deploy databases into the three cloud providers that PlanetScaleDB currently supports.
PlanetScaleDB for Kubernetes solves hard problems. We handle the differences between Kubernetes environments such as storage classes, availability zones, and heterogenous hardware configurations. We detect availability zones and deploy masters and replicas across these AZs. We ensure high availability in the face of pod evictions, Kubernetes host management, and application of patches at both the database and Kubernetes layer. We hope to delight you with how easy it is to deploy, monitor, and manage production grade databases in your Kubernetes clusters.
We would love to hear your feedback as you get started.