Marc Nuri

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

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. 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 can be assembled into the container image using different techniques and ultimately […]

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

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), and 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 […]

Apache Camel used on a Kubernetes Cassandra cluster

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. 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, this information is spot on. Unfortunately, the GitHub developers API offers information about dependencies, but […]

Building a GitHub Dependents Scraper with Quarkus and Picocli

YAKC - Yet Another Kubernetes Client
Introduction This example shows how you can access the Kubernetes cluster’s REST API from inside a Pod using YAKC (Yet Another Kubernetes Client), Eclipse JKube and Spring Boot. The first part of the tutorial shows how to create a very simple Spring Boot application with the required YAKC Kubernetes Client dependency (see introductory post for YAKC). The second part describes how to quickly deploy the application into a Kubernetes cluster and how to perform requests to the Pod’s REST endpoints to retrieve information from the cluster. Example application The first step will be to create an example Spring Boot Maven […]

Access the Kuberntes API from a Pod in Java

YAKC - Yet Another Kubernetes Client
Introduction I’m a proud member of the team maintaining Fabric8 Kubernetes Client (for a while now) which is one of the most popular Java clients for Kubernetes and OpenShift. Fabric8 Kubernetes Client is great because it allows to perform most of the kubectl supported operations from Java with a very neat and fluent API. However, accessing low-level REST API operations or specific API versions is hard because some of these decisions are taken for you (for now). This is the main reason that drove me to implement Yet Another Kubernetes Client (YAKC) as a side project during these Easter holidays. […]

Kubernetes Client for Java: Introducing YAKC

GitHub Actions
Introduction In this post, I’ll show you how one GitHub Actions workflow from a repository can invoke a workflow from a different repository. The first part describes the different events that can trigger a workflow, focusing on the repository_dispatch event. The second part is a practical example showing how two repositories trigger their workflows mutually. Events that trigger workflows As you may already know, there are several events that can trigger a GitHub Actions workflow execution. The most common events that can trigger this execution are push, pull_request and schedule. These events cover most of the use cases, as regularly […]

Triggering GitHub Actions across different repositories

Quarkus + GraalVM + Fabric8 Maven Plugin 2
Introduction In this tutorial, we’ll see how to develop and integrate a very simple Quarkus application with Fabric8 Maven Plugin in order to publish a native GraalVM image into Docker Hub. The first part of the tutorial describes how to build a very simple Quarkus application. The next part describes how to build a Quarkus native executable with GraalVM. The last section shows how to integrate the project with Fabric8 Maven Plugin and how to deploy the application images into Docker Hub. Quarkus example application This section describes how to build a simple application that will return a random quote […]

Quarkus + Fabric8 Maven Plugin + GraalVM integration

Isotope + Kuberentes
Introduction Isotope mail client is a free open source webmail application and one of the side projects in which I invested my spare time during the last year. You can read more about Isotope’s features in a previous blog post. Although there is still no official release, the application is quite stable and usable. In this post, I will show you how to deploy the application to a Kubernetes cluster. For the purpose of the tutorial I’ve used minikube + kubectl, but the same steps should be reproducible in a real K8s cluster. Traefik v1 Despite it’s not part of […]

Isotope Mail: How to deploy Isotope+Traefik into Kubernetes

What is Cinnamon? Cinnamon is a free desktop environment derived from GNOME 3, and the principal desktop environment for the Linux Mint distribution (And also my personal favorite). Fedora 30 comes with GNOME as the default X Window System desktop environment, however, there is a spin which is a variation of the official Fedora distribution with Cinnamon as the default desktop environment. Although you can download the Cinnamon spin, in this blog post we’ll see how to install the necessary packages to easily deploy Cinnamon in your system as the default desktop environment for the standard Fedora distribution. Install Cinnamon […]

Fedora: How to install Cinnamon desktop environment

Webpack ReactJS Gatsby
Introduction Gatsby is static site generator platform based in ReactJS and powered by GraphQL. I’ve been using Gatsby for a while now and most recently used it to rebuild my personal homepage. One of the things that has come to my attention is that transpiled Javascript source maps are published to production builds by default in V2. It’s nice to be transparent and to publish your source code and share with the software community, but maybe this is an undesirable effect (especially when building commercial websites). In this post we’ll see how we can configure Gatsby to publish source maps […]

Gatsby: Disable source maps in production