This week I was away for JBCNConf, a conference that I've joined every year since the conference started in 2015. This year I did a very unusual presentation comparing Go and Java in the context of Kubernetes, where I've presented tools like KubeBuilder, Java-Operator-SDK, and Metacontroller with Knative Functions, I am adding the slides and resources at the end of this blog post. Before going into the Knative-related sessions at JBCNConf, let's do the 'good-first-issue's for the week:
- Updating RUST template dependencies: https://github.com/knative-sandbox/kn-plugin-func/issues/1111
- Do you have experience with GitHub actions? https://github.com/knative-sandbox/kn-plugin-func/issues/982
There were 4 sessions where Knative was mentioned (including mine) and a workshop:
- Whitney's presentation about Knative Serving introduction and live demos
- Viktor's presentation about how by enabling teams to build their own self-service platforms, we can abstract Kubernetes away using Crossplane and Upbound
- Thomas presentation about building Developer Experiences for Kubernetes
- Daniel Oh's workshop about serverless functions using Quarkus
As I've mentioned before, in my presentation, I've created a Metacontroller and Knative Functions example, but I couldn't stop there, I've created a Pull Request to the MetaController project itself so Java developers can easily get started with MetaController instead of building fully-fledged K8s controllers.
Metacontroller and Knative Functions
While working for my presentation at JBCNConf, I wanted to implement the same controller using different languages and frameworks to be able to compare. The use case I've implemented is pretty simple, the controller reconciles a new type of resource called Conference, and each Conference resource represents a set of services composing a conference application instance. This application is composed of 4 independent services, so the controller is in charge of monitoring these services by interacting with their APIs, and if and only if all the services are up, the controller should create a new Deployment to run a set of production tests.
I've created 4 different implementations for this controller using 3 different projects; you can find these on GitHub.
- Java Operator SDK
A quick and special mention to the implementation for MetaController and Knative Functions, because there is no official example with Java, I've submitted a PR to the metacontroller project with a simplification of the example using spring-boot and Knative Functions: https://github.com/metacontroller/metacontroller/pull/565
This example will require maintenance, documentation, and improvements; if you are interested in helping me with that, please feel free to reach out.
AMA about Serverless in Kubernetes
This next Thursday, 28th July, at 6pm UK time, I will be joining Whitney, Viktor, and Daniel in an Ask Me Anything session about Serverless on Kubernetes. Save the date!
Slides and Pictures