Cloud Foundry’s Proven Developer Experience Comes to Kubernetes with cf-for-k8s 1.0

By: | October 21, 2020
Share

The Cloud Foundry community has made several investments in bringing the “cf push” experience to Kubernetes. Our collective progress reaches a new milestone today: cf-for-k8s 1.0 is now available. The project aims to bring the best parts of Cloud Foundry to the Kubernetes ecosystem, and serve as an enterprise application platform for the Kubernetes Era.

To meet these bold aspirations, we’ve built cf-for-k8s from the ground-up to leverage Kubernetes-native features. We’ve thoughtfully blended the Cloud Foundry developer API with many exciting infrastructure technologies like Istio, Envoy, Fluentd, and of course Kubernetes itself.

We think cf-for-k8s 1.0 will delight two different groups of users.

First, long-time Cloud Foundry users will appreciate the familiar developer experience, and the new lean footprint and fast installation time. (You can run cf-for-k8s with 5 nodes, and get up and running in about 10 minutes.)

Second, organizations seeking to make developers productive with Kubernetes may find cf-for-k8s to be the “missing abstraction” they’ve been after.

An inside look at cf-for-k8s 1.0

Here’s what you’ll find in cf-for-k8s 1.0:

  • The Cloud Foundry developer API, including support for the new CF CLI v7
  • App staging with kpack and Paketo Buildpacks
  • Encrypted communication with Istio and Envoy
  • Lifecycle management with Carvel tools like kapp, ytt, and kbuild
  • Metrics, log, and event collection with Fluentd

The project’s architecture looks like this:

You’ll notice the Cloud Foundry control plane is containerized, and simply runs as an app on Kubernetes. The Carvel suite of tools (kapp, ytt) are external to the system and play an important role in initial deployment, patching, and upgrades.

The strength of Cloud Foundry is its community, and that proved true with cf-for-k8s 1.0.

cf-for-k8s 1.0 is the result of a massive effort from the community

The Cloud Foundry community has always enjoyed robust engineering participation from Foundation members. That engagement kicked up a notch with cf-for-k8s 1.0. Eirini, a shim that enables Cloud Foundry to schedule applications onto a Kubernetes cluster, was initially a joint initiative among IBM, SAP, and SUSE, with VMware joining in a year ago. This component was instrumental in our efforts to bring `cf push` to Kubernetes.

Organizations that use Cloud Foundry tend to use it at a remarkable scale. cf-for-k8s can support upwards of 1,000 apps at initial release, which should meet the needs of many teams and organizations. SAP’s engineers led the way for this dimension of the project. This hearty crew is excited to deliver scalability capabilities for cf-for-k8s that meet and exceed the expectations of Cloud Foundry users.

What’s new in cf-for-k8s 1.0

Earlier this year, we announced version 0.1.0 of cf-for-k8s. Since then, the team has advanced the project considerably.

For starters, the project has been hardened across-the-board, encrypting all communication in- flight. We’ve continually run the suite of CF acceptance tests against the project, and the bits now pass with flying colors, with
cf push and cf rollback cf rollback baked in. This includes support for cf bind-service, cf marketplace, and other commands related to the Open Service Broker API.

cf-for-k8s now supports the expected range of developer frameworks (Java, Node, Go, .NET Core, etc.). Lifecycle management has matured, and continues to use the Carvel suite of tools (ytt, kbld, kapp). We think you are going to love the speed and ease of  kapp deploy.

We’ve also refactored the Cloud Controller API (CAPI) to use a container registry as its data store. Use any OCI-compliant registry instead of a blob store to host your application bits, as well as the corresponding container images. This particular change is a terrific example of how cf-for-k8s offers modularity and flexibility, without compromising developer productivity.

It’s time to try cf-for-k8s

Who should take a look at cf-for-k8s?

Practitioners ready to give Cloud Foundry a fresh look. It’s never been easier to install Cloud Foundry. In fact, cf-for-k8s is lightweight enough to be deployed on your laptop. You can experience the magic of `cf push` in minutes. All you need is a local Kubernetes environment like minikube or kind.

Of course, if you’re already using Cloud Foundry, you’ll want to take version 1.0 for a spin. Why not deploy cf-for-k8s to a small cluster? You can play around with the new Cloud Native Buildpacks. As the saying goes, batteries are included with cf-for-k8s. The only thing you need to bring is an OCI compliant registry. (We like Harbor.) 

Once you’ve been up and running for a while, you may even feel confident enough to re-configure your deployment for high availability. Then you’re ready to start pushing a few real applications. We think you’ll love the experience! 

We’re just getting started. So what’s next?

The version 1.0 release is just the beginning. The team is already feeding new features into the project backlog.

Cloud Foundry is used by the most security-minded organizations, so it’s an area of continuous investment. In particular, we’re prioritizing secrets management, and credential rotation. We want this to be transparent and so reliable you don’t even need to think about it.

Critical security vulnerabilities are sadly a fact of life in software. The CF community has an excellent reputation for quickly issuing fixes. We want to build on that in cf-for-k8s, and enable you to rebuild any system image at a moment’s notice.

Every organization has different requirements, so we want to make cf-for-k8s open for extensions, even at runtime. Elasticity and scale are priorities as well.

Keep tabs on our progress! Watch our github project for updates. Want even more details? Check out our tracker project.

Contributors wanted: get involved with cf-for-k8s

Want to learn more, and help shape the future of this project? Here’s how you can get involved!

Documentation

As always, the best place to start is the main documentation page for cf-for-k8s. You’ll find instructions on deploying Cloud Foundry, guidelines for contributors, and other helpful resources. Got a PR for us? We’ll gladly accept it!

Feedback

A version 1.0 release is only the starting line, not the destination. To this end, please file a GitHub issue for bugs, feature requests, or suggestions. You can reach out to us on Cloud Foundry Slack in #cf-for-k8s.

Contributions

We love contributions from the community! If you’re interested, please take a look at our contributing docs. Got questions? We’re standing by to answer them. You can find us in #release-integration or #cf-for-k8s channel in the Cloud Foundry Slack.

Resources

Paul Warren Profile Image

Paul Warren, AUTHOR

SEE ALL ARTICLES