YAKC - Yet Another Kubernetes Client
Reactive dashboard for Kubernetes built with Quarkus and React In the new era of cloud-native applications and Kubernetes, you’ll find new alternatives for dashboards and CLI tools every day. This is yet another Dashboard tool. YAKC – Kubernetes Dashboard is a full-fledged reactive Kubernetes web UI, and is the base project to demonstrate what you can achieve with YAKC Kubernetes Java Client. The project is still in a PoC phase and I highly advise against using this in any production environment. However, the project is perfectly suitable for local clusters such as Minikube and the perfect aid for cloud-native developers. […]

YAKC – Kubernetes Dashboard


Kubernetes Logo
Introduction During the past few weeks, I’ve been trying to understand what a Kubernetes Operator is and what makes it different from a Kubernetes Controller. There are lots of conventions and unclear documentation about both terms and I think many may be confused too. In this post, I’ll try to summarize what each of these patterns involves and list some examples. Controllers Kubernetes controller documentation starts with a short control loop definition, this is what the Wikipedia entry says: A control loop is the fundamental building block of industrial control systems. It consists of all the physical components and control functions necessary to […]

Kubernetes Operator vs. Controller


Red Hat New Hire Orientation - Munchen, November 2020
This week (end of October 2020) marks my first year as a Red Hatter. I feel really lucky to be part of this awesome organization, especially because it’s one of my all-time favorite companies. I still remember the sense of joy and accomplishment when late at night in September 2019 I received the email with the good news. I was still a teenager when I first learned about Red Hat Linux in one of those now old computer magazines. I recall dreaming about one day becoming one of those Linux engineers and be part of this, at the time alternative OS […]

A year at Red Hat



Eclipse JKube Logo
Introduction In this post, I will present Eclipse JKube and how you can get started with the project to deploy your Java applications into the Cloud. Eclipse JKube is a collection of plugins and libraries that will help you develop cloud-native Java applications. It includes tools to build container images using Docker, JIB, or S2I build strategies. In addition, JKube provides the means to generate cluster configuration files (YAML) and deploy them into your Kubernetes or OpenShift clusters. JKube’s history Eclipse JKube is not an original project but a rebranding and update of the great Fabric8 Maven Plugin. Fabric8 Maven […]

Eclipse JKube introduction: Java tools and plugins for Kubernetes and ...


Minikube Prometheus Grafana
Introduction In this post I will show you how to deploy Prometheus and Grafana into your Minikube cluster using their provided Helm charts. Prometheus will help us monitor our Kubernetes Cluster and other resources running on it. Grafana will help us visualize metrics recorded by Prometheus and display them in fancy dashboards. Requirements Minikube helm Install Prometheus The stable channel Prometheus charts have been deprecated in favor of the Prometheus Community Kubernetes Helm Charts. We’ll start by adding the repository to our helm configuration: [crayon-5fcc0920ce1dc779314893/] Once the repo is ready, we can install the provided charts by running the following […]

Prometheus and Grafana setup in Minikube


YAKC - Yet Another Kubernetes Client
Introduction In this post, I’ll show you how to perform the equivalent to kubectl rollout restart deployment/$deployment  (rolling restart) from Java using YAKC- Yet Another Kubernetes Client. Rollout Restart Starting at version 1.15, Kubernetes offers a new way to restart Deployments, DaemonSets, and StatefulSets using kubectl. You can simply invoke a kubectl rollout restart deployment/$deployment and Kubernetes will restart your application with zero downtime. Before v1.15 you could do something similar by adding an annotation to the Deployment spec template. If we dig into the source code for Kubectl, we’ll find out that what the provided command does is exactly […]

Rollout Restart Kubernetes Deployment from Java using YAKC



Quarkus
Introduction In this post I will show you how to serve a ReactJS (or any other JavaScript SPA) front-end application using a Java Quarkus Application as a back-end and static page server. The post also includes instructions on how to configure Maven to perform the front-end build tasks along with your application packaging. This article is very similar to my 2017 Angular + Spring Boot integration using Gradle blog post, with some added features to enable React’s router to work. Requirements The technology stack required for this example is: Node.js React Quarkus Maven The main goal is to achieve an […]

React + Quarkus integration using Maven


YAKC - Yet Another Kubernetes Client
Introduction Kubernetes v1.19.0 was just released. Amongst the many new features and improvements, the graduation of Ingress API to V1 (#1453) stands out. Despite users have widely adopted Ingress resources, and that Kubernetes introduced the beta feature back in 2015 (v1.1), it hasn’t been until the new v1.19 release that Ingress has gone GA. An Ingress is “An API object that manages external access to the services in a cluster, typically HTTP”. In other words, Ingresses are the way to publicly expose your Kubernetes managed Services to the outer world. In this post, I will show you how to use […]

Kubernetes 1.19 Ingress API from Java using YAKC


Quarkus
Introduction Quarkus provides its very own templating engine, Qute. In this post, I will show you how to use it to render Markdown from different sources using flexmark-java. Besides showcasing Qute, another reason for this post is to show complex assembly configurations to build container images using Eclipse JKube. You can learn more about JKube and how to get started here. I designed the project to be run in Kubernetes, so some of the features won’t be available if the application is run locally. The application renders a template with markdown fragments loaded from different locations, highlighting how these fragments […]

Quarkus + JKube: Qute template with markdown processing from different ...



Camel
Introduction Eclipse JKube 1.0.0 GA will be released on September 9, 2020. As I mentioned in previous posts, JKube is the successor of the deprecated Fabric8 Maven Plugin (FMP). As such, our main goal right now is to migrate the current user-base to the new project. Aligned with this strategy, we started to create Pull Requests on those repositories that are currently using FMP in order to replace the deprecated dependency. In this article, I’ll describe how to run the updated Apache Camel example (now using JKube) for Cassandra running on Kubernetes, and its expected behavior. This blog post is […]

Apache Camel used on a Kubernetes Cassandra cluster


Quarkus
Introduction During the past few months, my team and I have been working very hard to release Eclipse JKube. JKube is the successor of the deprecated Fabric8 Maven Plugin, and as such, our main goal right now is to migrate the current user-base to the new project. You can learn more about JKube and how to get started in this other post. GitHub provides some fancy stats and metrics, including information about the project’s dependency graph. This information is really valuable since we get to know which projects (within GitHub) depend on ours. So for our user-base migration use case, […]

Building a GitHub Dependents Scraper with Quarkus and Picocli


YAKC - Yet Another Kubernetes Client
Introduction In this example, I will show you how to access the Kubernetes cluster’s REST API from inside a Pod using YAKC (Yet Another Kubernetes Client), Eclipse JKube and Spring Boot. In the first part of the tutorial I’ll show how to create a very simple Spring Boot application with the required YAKC Kubernetes Client dependency (see the introductory post for YAKC). Next you’ll see how to quickly deploy the application into a Kubernetes cluster. I will also show you how to perform requests to the Pod’s exposed REST endpoints to retrieve information from the cluster. Example application The first […]

Access the Kuberntes API from a Pod in Java