CEO of Stark & Wayne, a consultancy for people who love Cloud Foundry, BOSH and DevOps in general.

Coming to SpringOnePlatform next week? Myself (Dr Nic) and many Stark & Wayne team members will be in the Community Hub to talk about Kubernetes/CFCR, Cloud Foundry, Kafka, SHIELD and more. Come find us!

Kubernetes is one of the newest components of a larger Cloud Foundry, deployed with BOSH, and known as CFCR - the Cloud Foundry Container Runtime (previously known as Kubo). But the current documentation at https://docs-cfcr.cfapps.io/ does not work with an existing BOSH environment; it expects to deploy its own bastian/jumpbox and BOSH environment. I already have a BOSH environment. Lots of them. And I want to run Kubernetes on them.

So, I rewrote the deployment manifests so that it is fun and easy to deploy Kubernetes to an existing BOSH environment.

That's it. It will fetch all the BOSH releases, provision infrastructure on your favourite Cloudy IaaS (e.g. AWS, GCP, Azure, vSphere, OpenStack), and run a single Kubernetes API on one master instance and three Kubelets on worker instances.

Before running the commands above, check the Requirements section at the bottom of this post.

Alternately, you can try a helper script which might be able to use bosh, cf, and credhub CLIs to look up all the information:

./kubo-deployment/manifests/helper/cf-routing-vars.sh > cf-vars.yml

I find the latter approach only slightly less ugly than the first. In the future, ideally, Cloud Foundry will expose BOSH links to discover its API endpoints, UAA clients, etc. Then this step will go away and there should be no need for a cf-vars.yml file. One day.

Requirements

Cloud Config with vm_types named minimal, small, and small-highmem as per similar requirements of cf-deployment

Cloud Config has a network named defaultas per similar requirements of cf-deployment

BOSH instances must be normal VMs, not garden containers (i.e. CFCR does not deploy to bosh-lite)

Ubuntu Trusty stemcell 3468 is already uploaded (it's up to you to keep up to date with latest 3468.X versions and update your BOSH deployments)

If you do not have Credhub, you can use the following additional flags to your bosh deploy commands above --vars-store creds.yml -o kubo-deployment/manifests/ops-files/misc/local-config-server.yml (the base manifest assumes Credhub, and the local-config-server.yml operator removes the options.organization property that bosh CLI does not support locally).

The "Kubo" team has been working very hard on the CFCR/Kubo project all year. It is very exciting to see Kubernetes "just work" and to start playing with it. I look forward to extending this blog post with newer posts in the future. What's interesting to you?