One of the key pieces of the Entando platform is the Entando operator that allows us to automate all of the tasks that go into managing a modular architecture on Kubernetes. Here’s how we use Quarkus in the operator, the benefits it brings, and some lessons we learned along the way.
One of the key pieces of the Entando platform is the Entando operator that allows us to automate all of the tasks that go into managing a modular architecture on Kubernetes. There are a couple of things that make the Entando Operator different from many other Kubernetes operators. The first is that it is written entirely in Java and the second is that the operator uses Quarkus for many of the tasks that it performs.
In this post we’ll go over how we use Quarkus in the operator, the benefits it brings, and some lessons we learned along the way.
When we built the operator we made the choice to do everything in Java (look for a future blog post on this topic). When thinking about the operator we had a few main requirements in mind:
With those constraints in mind we found that Quarkus helped address many of our needs. Paired with the “Kubernetes Job” pattern we had the tools to achieve many of our goals. Some of the key features that led us to this choice include:
The primary alternative we considered was building the operator and the jobs in Go. The ultimate choice to go with Java and Quarkus has some trade offs when compared with Go
In the end the speed of Quarkus and the value of keeping the entire platform in Java led us to go with the final architecture you see in the platform today.
When you deploy an Entando instance you’re creating a deployment that includes the operator. The operator then reads the configuration provided in the rest of the helm template and deploys your instance of the platform.
During that deployment the operator creates Kubernetes Jobs that manage the tasks required to complete installation of the platform. In particular, the jobs that are created are Run to Completion jobs and the containers that are deployed use Quarkus.
The operator uses those Quarkus based jobs to complete many parts of the installation including:
We also use a run to completion job at runtime when a user deploys a microservice (plugin) from the Entando Component Repository (ECR). The workflow in this case is:
When you’re deploying an Entando instance you’ll see the pods for these jobs start and complete if you’re watching the namespace. Some examples are highlighted in the screenshot below.
There are a number of things that we learned along the way about building an operator using Quarkus and run to completion jobs. This pattern and the tools we selected have many of the same tradeoffs and requirements that you see in normal Java projects.
However, the design choices we made amplify some of the challenges, and some aspects of the project ecosystem were more critical than we originally anticipated. This is a quick list of some of the challenges we ran into and things to be aware of.
The Entando Operator is open source. If you want to learn more or dive into the code, checkout some of the links below for the Quarkus run to completion jobs
Some of our Quarkus controllers
You can find the other code for the operator and the rest of the architecture in our two GitHub organizations:
Deploy an instance yourself and look for those Quarkus run to completion jobs during deployment
When release cycles take months instead of weeks, your business is left unable to deliver modern online experiences. You might run containerized deployments and have backend modular, but for many organizations, the frontend monolith remains. And it’s slowing innovation.
So that’s why we created a platform to help you get your ideas to market faster.
Entando is the leading modular application platform for building enterprise web apps on Kubernetes. We want to change the way enterprises think about building their apps, sites, and portals in order to innovate more quickly.
With Entando, you can:
Entando is open source with available enterprise support and services. Begin developing on the platform today, and get a quote to see how our team can help your enterprise build better apps, sites, and portals--faster.
This white paper outlines how your organization can accelerate UX innovation by developing with micro frontends on Kubernetes, as well as how a micro frontend platform can help you execute this methodology more effectively.