nhkchan / cloud-native-starter

Cloud Native Starter for Java EE based Microservices on Kubernetes and Istio

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Cloud Native Starter for Java EE based Microservices on Kubernetes and Istio

This project contains sample code that demonstrates how to get started with cloud-native applications and microservice based architectures.

The project focusses on how to build microservices with Java EE and the open source technologies Eclipse MicroProfile, Eclipse OpenJ9, AdoptOpenJDK and Open Liberty.

The microservices can be easily deployed on Kubernetes environments running Istio like Minikube or the IBM Cloud Kubernetes Service.

The project showcases the following functionality:

  • REST APIs implementations incl. documentation
  • REST API invocations
  • Traffic management
  • Resiliency via fallbacks and circuit breakers
  • Authentication and authorization
  • Distributed tracing and logging
  • Monitoring and metrics

This diagram shows the key components:

The next screenshot shows the web application. More screenshots are in the images folder.

Demos

This project demonstrates several Java EE and Istio key functionality.

Setup

The sample application can be run locally on Minikube or on the IBM Cloud. The following instructions describe how to install everything locally.

If you would like to run the cloud native starter application on IBM Cloud Kubernetes Service, follow these instructions.

Before the microservices can be installed, make sure you've set up Minikube 0.33.1 and Istio 1.1.1 correctly or follow these instructions to set up Minikube and Istio from scratch. This should not take longer than 30 minutes.

The microservices can be installed via scripts. In addition to Minikube and Istio you need the following tools to be installed.

Prerequisites:

Deploy (and redeploy):

$ git clone https://github.com/nheidloff/cloud-native-starter.git
$ cd cloud-native-starter
$ scripts/check-prerequisites.sh
$ scripts/deploy-articles-java-jee.sh
$ scripts/deploy-web-api-java-jee.sh
$ scripts/deploy-authors-nodejs.sh
$ scripts/deploy-web-app-vuejs.sh
$ scripts/deploy-istio-ingress-v1.sh
$ scripts/show-urls.sh

After running the scripts above, you will get a list of all URLs in the terminal.

Example URL to open the web app: http://192.168.99.100:31380

Example API endpoint: http://192.168.99.100:31380/web-api/v1/getmultiple

Cleanup

Run the following command to delete all cloud-native-starter components from Istio.

$ scripts/delete-all.sh

You can also delete single components:

$ scripts/delete-articles-java-jee.sh
$ scripts/delete-articles-java-jee-quarkus.sh
$ scripts/delete-web-api-java-jee.sh
$ scripts/delete-authors-nodejs.sh
$ scripts/delete-web-app-vuejs.sh
$ scripts/delete-istio-ingress.sh

Authors

Documentation

Here is a series of blog entries about this project:

Here is more information about Microservices, MicroProfile and Istio:

About

Cloud Native Starter for Java EE based Microservices on Kubernetes and Istio

License:Apache License 2.0


Languages

Language:Shell 47.8%Language:Java 33.2%Language:JavaScript 9.4%Language:Vue 7.2%Language:Dockerfile 1.4%Language:HTML 1.0%