The “digital transformation” mandate has taken hold across all sectors of the economy. Leveraging cloud providers and cloud native technologies is a fundamental way companies are fulfilling this mandate, leading to massive cloud adoption. The benefits of using cloud infrastructure — flexibility, lower capital costs and outsourcing of infrastructure expertise — are now being realized by companies across all industries.
This adoption is gradually becoming more feasible through the natural maturation of cloud providers and the implementation of security and compliance standards like HIPAA, PCI, SOC 2, FedRAMP and others, leading to more strategic initiatives. Part of these intiatives include evaluating the benefits of using multiple cloud vendors to avoid lock-in or to take advantage of a particular cloud provider’s strengths.
For companies that sell software to the enterprise, this means the days of vanilla, single region on-premises deployments are over. Their enterprise customers may, in some cases, be comfortable using a multi-tenant SaaS, but in other cases they will want a single-tenant instance running on their own cloud account(s). In the most sensitive cases, they may need it running on air-gapped servers.
Of course, formidable challenges stand between a multi-cloud vision and operational reality, namely: application migration, application deployment, operational complexity and, most of all, dealing with the shortage of competent talent. All of this makes scaling operations extremely difficult. If you don’t have a plan to address these concerns, your multi-cloud strategy likely will fail.
However, technological advances are increasing the chances of success. Cloud-native technologies, including containers and container orchestrators, such as Kubernetes, have emerged to help companies deliver and manage applications across multiple cloud environments.
This article explores how you can take advantage of Kubernetes to address the cloud talent and cost problem. Along the way, we’ll introduce an open source solution called Gravity that leverages upstream Kubernetes. Gravity puts a “bubble of consistency” around Kubernetes-based applications, so they can be remotely managed on any infrastructure without requiring cloud-specific expertise.
Challenges of running multi-cloud applications
The move to a single cloud provider introduces several new complexities and potential costs. The cost grows exponentially for every additional cloud provider you have to support.
Legacy applications were not architected and developed for cloud native technologies. Many organizations try to perform “VM-based cloud migrations,” i.e., trying to use VM images to have identical virtual machines with their software running on multiple clouds. By coupling software to VMs, this approach prevents organizations from realizing cloud-native benefits, such as rapid application deployments and truly elastic infrastructure utilization.
Each cloud provider is different and requires different expertise. In order to deliver applications into each cloud platform, teams need deep expertise to understand the basics of how that particular cloud infrastructure works, plus additional skills to automate application deployments, and implement proper security, compliance and monitoring. The growing complexity of cloud-native applications often results in a slower application delivery velocity. Adding new cloud deployment targets makes rapid application delivery even more challenging.
Once a cloud-native application is deployed, it must run with minimal downtime. DevOps organizations need consistent tooling to enable applications to run the same way with optimal performance across the various clouds while keeping operational costs down.
In order to overcome these challenges, you need a sizeable team of engineers to avoid cloud headaches and maintain development velocity. Unfortunately, IDC has forecast that 30 percent of high-demand roles for emerging technologies will remain unfilled through 2022.
How Kubernetes changed everything
Kubernetes (sometimes abbreviated as K8s) is an open-source container orchestration system pioneered by Google to serve as an operating system for the data center.
While the primary benefit of adopting Kubernetes is a dramatic increase in infrastructure utilization and efficiency, thereby lowering infrastructure costs, this technology also addresses the main obstacles to adopting a multi-cloud strategy.
Kubernetes manages configuration and automation, allowing you to move an application quickly across any colocation facility or cloud provider and choose the best performance or price for each situation. Kubernetes gives you the benefits of every cloud environment without the complexity and cost of supporting each one.
For the enterprise, Kubernetes enables a critical transition: You can stop comparing on-prem with the public cloud and become cloud-native everywhere. For all of these reasons, Kubernetes has become the standard among container orchestrators, with 60 percent of IT decision makers responsible for cloud-native technology using K8s, while other platforms remain flat or are falling in adoption.
Kubernetes, however, is notoriously difficult to learn and manage. Google released it into the public domain in 2014 and now there are many different distributions that are changing constantly. As with cloud and infrastructure skills, a shortage in Kubernetes-specific talent poses a real challenge. More than half of companies surveyed said they are not adopting Kubernetes widely within their organizations due to a lack of expertise. Fortunately, there is a broad and deep ecosystem of software and services to help the enterprise with its cloud-native journey and abstract away the complexities of Kubernetes. Among them is Gravity, our open source solution for delivering multi-cloud applications.
Introducing Gravity: The multi-cloud application delivery solution
Many organizations that have adopted Kubernetes to date are using it the way Google originally intended, i.e., as a data center operating system that deploys many different applications utilizing the underlying infrastructure as efficiently as possible. While Kubernetes will lower your infrastructure costs, it comes with its own set of challenges: maintenance, support and upgrades, for starters, as well as security, availability, scaling and release management considerations.
However, if the complexity issues can be resolved, Kubernetes can also be used to package and distribute one or multiple applications as smaller, self-contained clusters. This is the use case Gravity is focused on.
Gravity is an open source, upstream Kubernetes packaging solution. It allows developers to package cloud-native applications and their dependencies into a simple, self-contained and dependency-free file known as a Cluster Image. The Cluster Image can be used to create self-managing and self-updating Kubernetes clusters that can be trivially deployed on any infrastructure (from public clouds to private data centers). Gravity clusters do not require Kubernetes expertise. Gravity removes the expensive complexity, while enabling true application portability.
This allows software companies to meet the three key requirements of a successful multi-cloud strategy:
- Run: The ability to consistently package applications securely for distribution in a format that can be installed virtually anywhere while minimizing the differences of each infrastructure footprint.
- Access: A secure method to securely access the applications across every environment in which they have deployed, in order to provide remote upgrades and maintenance.
- Distribute: The ability to publish “approved” applications and updates that users can access easily, knowing they are getting the correct information from a single source of truth.
1. Run applications with Gravity
Gravity allows developers to package and deploy Kubernetes clusters, along with the applications inside, across multiple clouds as well as in the private data centers of their enterprise customers. Each Gravity Cluster comes with a robust web application for Cluster management. Gravity’s web UI includes a dashboard overview of the Cluster, where users can monitor infrastructure utilization, see who else is connected to this cluster, inspect the latest audit events and more.
Gravity also has built-in application and Kubernetes monitoring, user management and auditing capabilities. For monitoring, Gravity uses Prometheus and Grafana to track capacity and resource utilization, monitor the performance and availability of applications running inside your Clusters or see how your Clusters are running in different environments.
2. Access applications with Gravity
We built several unique capabilities into Gravity Enterprise to make it easy for users to access their applications and infrastructure securely, while meeting strict compliance requirements. Gravity clusters have the option to establish an encrypted, outbound tunnel, giving administrators remote access to any Kubernetes cluster, even when located behind a firewall without any open ports.
Gravity acts as a Certificate Authority (CA) to provide trusted access to infrastructure. Gravity enables role-based access controls (RBAC) by creating a unified authentication gateway for each cluster and leverages each customer’s single sign-on (SSO) solution, such as Active Directory or Okta, or the Kubernetes protocol, to help define roles and access. Every session is recorded and auditable for compliance.
3. Distribute applications with Gravity
The Gravity Hub is a multi-cluster control plane that acts as a central repository for Cluster Images. It reduces the operational overhead of managing multiple Kubernetes clusters created from Cluster Images. Single applications (e.g., ElasticDB) or sets of applications (e.g., an ELK stack) can be packaged and distributed as downloadable images for users to run in any environment. In other words, with Gravity Hub, admins are able to publish and version Cluster Images and distribute them for users to easily download and deploy into any cloud platform.
Four compelling use cases for Gravity
Since launching Gravity, we’ve helped a variety of organizations deliver multi-cloud applications across some of the world’s most restricted environments to keep up with the demands of their customers. Here are a few real-world examples of Gravity in action:
Data integration software: From AWS to on-prem
MuleSoft is a fast-growing entity inside of Salesforce that helps companies like Mastercard, Verizon, and Spotify to meet digital demands. In 2016, one of its customers wanted MuleSoft to run its Anypoint Platform for data integration in the customer’s own environment instead of AWS due to sensitive data. Teleport migrated the application to Kubernetes and trained MuleSoft developers in best practices for K8s. This solution solved an immediate business need for the software company. Now, MuleSoft customers can easily install secure and highly available instances of the Anypoint Platform on their own private infrastructure. Read the case study.
Scaling on-premises deployments
Anaconda provides an enterprise data science platform for large organizations to enable AI for teams at scale. Many of its target customers have strict compliance and security requirements that required a different approach to the public cloud. Teleport gave Anaconda the ability to deploy and manage its Enterprise edition on the infrastructure of its most important customers. Gravity established a consistent approach to deploying Anaconda Enterprise across a variety of infrastructure footprints, drastically reducing engineering costs and speed of delivery. Read the case study.
Making the move to “as-a-service”
To keep engineering and support costs down, Splunk looked to standardize its code base to support customers regardless of whichever platform they wanted to use – SaaS or on-premises across multiple clouds. Splunk selected Gravity to make it easier to build and deliver the services that enterprise customers want – all while normalizing deployments and eliminating the need to support different code bases.
Private data center to internal cloud
When a large financial institution wanted to make applications available to internal users in air-gapped environments all over the world, Gravity simplified the move to a private cloud and ensured that all security and compliance regulations were met in the new environment. Gravity’s application catalog (Gravity Hub) allowed the team to publish a list of tools for staff to use and deploy consistent applications to everyone in the organization.
The future is multi-cloud
Multi-cloud is here to stay. Whether through organic adoption of multiple clouds through mergers and acquisitions or more strategic initiatives to avoid cloud vendor lock-in, enterprises are realizing that multi-cloud adoption is the next phase of their cloud journeys. We believe this is a positive trend because more companies will gain agility and reap the “pay-as-you-go” promise of the cloud without the risk of vendor lock-in.
However, this does require that those responsible for delivering applications across multiple cloud environments (whether it be SaaS vendors, ISVs or internal enterprise application developers) now need to adopt new expertise and solutions to succeed at their jobs. With Kubernetes and Gravity, you have a reliable way to get your most innovative business ideas to market faster, while keeping operational costs as low as possible.