Kubernetes and Cloud Foundry: Better Together

Industry veterans have cast predictions far and wide on what to expect in 2018. And while we can’t ensure every prediction will come true, many would agree that the container industry will continue to grow as it maintains support for businesses looking to leverage new technologies and platforms. In fact, the application container market is projected to grow from $762 million in 2016 to $2.7 billion by 2020 according to 451 Research.
With this explosive growth, it’s easy to understand why some individuals are seeing Kubernetes and Cloud Foundry as competitive projects. The reality? While there is some functional overlap between the two, they ultimately serve complementary purposes that work toward the same goal. By taking approaches that leverage both projects, organizations are actually making it easier to manage their entire cloud environment.
Still skeptical? Here are three reasons to consider using Kubernetes and Cloud Foundry together.
Containerization is the new virtualization: Containers present a new way to virtualizing compute resources that is faster and more efficient than traditional virtual machines. Containers are also much easier to build and deploy, thanks to tools like Docker and other container engines. Now, with the rapid technological advancement and market adoption of Kubernetes, the industry is driving toward de facto standardization of a new, container-centric infrastructure platform. Kubernetes is here to stay, and organizations will soon be able to count on Kubernetes as an omnipresent layer in any system infrastructure.
For Cloud Foundry users, the increasing availability of high value, container-based infrastructure, like Kubernetes, is an exciting development. Cloud Foundry has long been about managing application deployment via containers but was managed in a traditional VM deployment itself. Now, as businesses, government organizations, and independent software vendors are containerizing their applications to take advantage of this new infrastructure, it only makes sense that Cloud Foundry should follow suit. Recent initiatives to containerize Cloud Foundry, such as the Fissile open source project and the SUSE Cloud Application Platform, are delivering on this idea today. With this approach, Cloud Foundry can be easily deployed, anywhere, requiring a fraction of the resources of virtual machine-based deployments. In its containerized form, Cloud Foundry can also leverage Kubernetes to start new nodes faster, which is needed to recover or scale the platform. And, as more and more people develop Kubernetes expertise, their skills can be leveraged to reduce the cost of Cloud Foundry management. These are tremendous advantages that Kubernetes can bring to Cloud Foundry.
Applications are not containers: As powerful as containerization is, and as wonderful as Kubernetes is, the problems these technologies solve are container level problems — where do I place a container, when should I start up a new container, how are my containers performing? Working with applications, on the other hand, is a different thing altogether. That’s because applications are a higher level construct, comprising multiple (often many) containers, distributed over a network. To deliver an application you need to build, deploy, and manage all of the containers that compose that application in a coordinated, holistic way. And if you want to deliver applications at scale, then you’ll need tooling to help automate that effort. This is where Cloud Foundry comes in — it provides higher-level abstractions designed to simplify and automate application delivery. By working with these abstractions, and allowing Cloud Foundry to build, deploy, and manage underlying containers invisibly, behind the scenes, application development and operations teams realize tremendous productivity benefits.
For Kubernetes users, Cloud Foundry should be a natural fit when it comes to adding application management capabilities. Until recently, however, combining these technologies has been somewhat awkward, as the two platforms had evolved quite independently. The good news is that this is changing. Now that Cloud Foundry has been containerized, and can be deployed and managed by Kubernetes, it becomes a relatively simple matter to add the power of Cloud Foundry to an existing Kubernetes environment. This is breakthrough news for Kubernetes users, for whom sophisticated and mature application management tools have not previously been available.
Two are more powerful than one: There’s another very pragmatic reason to use Kubernetes and Cloud Foundry together, and that has to do with the way container-centric and application-centric code management models can be blended to deliver the best of both worlds, even within the context of a single application. Cloud Foundry, which supports an application-centric approach to code management, is built around a particular set of application architecture and deployment patterns. When it comes to delivering applications that adhere to these patterns, especially cloud-native applications, Cloud Foundry provides unsurpassed productivity enhancement, and for that reason, you’ll want to use Cloud Foundry whenever you possibly can. That said, not all code fits these new patterns, which means you may also need a more flexible, container-centric management model, such as that supported by Kubernetes, to fill the code management gap. In these instances, you might choose to sacrifice some of the Cloud Foundry productivity in order to take advantage of the greater flexibility that Kubernetes can support.
For example, you may be building a new cloud-native web app, built from several microservices including a persistent data store on the backend. In all likelihood, most of the application’s microservices can be managed directly and completely by Cloud Foundry, so you’ll want to deliver these components using Cloud Foundry to maximize productivity. However, the data store may require a custom implementation, and be better delivered as an independent container, deployed by Kubernetes. Back in Cloud Foundry, you can integrate the deployed data store into the web application using a Cloud Foundry service broker, effectively bridging the two management systems, enabling you to track the complete application from Cloud Foundry. Working in tandem like this, Kubernetes and Cloud Foundry make an unstoppable combination — like peanut butter and chocolate, better together.