Overview
In this series, IBM developer advocates Niklas Heidloff and Harald Uebele simplify the sometimes-intimidating process of building a full-featured microservices application running in Kubernetes. Follow along in easy-to-understand tutorials, with hands-on examples, as Niklas and Harald explain many aspects of modern application development. For additional details, see the project overview and design principles.
Objectives
Learn how to put together a complete, secure back-end stack to run an enterprise application with a web front end that's fault-tolerant and scalable using modern cloud-native technologies like:
- Open Liberty, a high-performance open source Java application server
- Eclipse MicroProfile, a set of Java standards aimed at microservice development
- Kubernetes, the standard container orchestration platform
Some tutorials rely on services in IBM Cloud, all of which are available in the free tier. However, you will need a credit card or promo code to use the free Kubernetes cluster. A Kubernetes lite cluster itself is free of charge, but it cannot be created in an IBM Cloud Lite account.
The following figure shows the key services and components used in this project:
Estimated time
This project should take you less than an hour to set up. It is focused on first-time experience and consumability, so there are scripts to make setup easy.
Units
Deploy the cloud-native starter on IBM Cloud Kubernetes Service
Provision the necessary infrastructure and deploy the sample app on IBM Cloud.
Set up a local Kubernetes and Istio development environment
Provision the necessary infrastructure and deploy the sample app to a local or public cloud.
Move from Minikube to IBM Cloud Kubernetes Service
Provision a free Kubernetes cluster on IBM Cloud and deploy your containerized microservices.
Dockerize MicroProfile applications
Learn how to create a Docker image from your Open Liberty application so that it's ready for deployment to Kubernetes.
Develop resilient microservices with Istio and MicroProfile
Learn how to use MicroProfile Fallback annotations to allow your Java service to gracefully handle network errors.
Manage microservices traffic with Istio
Use Istio's declarative traffic shaping and routing features to safely experiment with A/B deployment scenarios in production.
Manage microservices traffic with Istio (sample application demonstration)
Follow a sample application demonstration of using Istio traffic management with Kiali visualizations.
Implement and document REST APIs with JavaEE
Learn how to write REST APIs with JAX-RS and document them with the OpenAPI implementation built-in to Open Liberty.
Invoke REST APIs from Java microservices
Learn how to use the MicroProfile REST client to invoke REST endpoints from Java.
Generate metrics from Java-based microservices and access them in the Prometheus dashboard
Learn how to combine application-specific metrics with Istio's built-in telemetry features to monitor traffic inside your cluster.
Distributed logging with LogDNA and monitoring with Sysdig
Learn how to connect a LogDNA service with your Kubernetes cluster for simple centralized log management.
Implement health checks with MicroProfile and Istio
Learn how to use MicroProfile health checking with Kubernetes automatic liveness and readiness probes.
Configure microservices with MicroProfile and Kubernetes
Learn how to inject configuration parameters into Java microservices at run-time using MicroProfile and Kubernetes.
Authenticate web users with OpenID and JWT
Learn how to integrate an OpenID client library with IBM App ID to provide a simple user authentication mechanism.
Authorization in cloud-native applications with OpenID and Istio
Learn how to use Istio JWT based policies along with OpenID to provide secure access to authorized users.
Authorization in microservices with MicroProfile
As in the previous tutorial, use AppID and JWTs to only allow authorized users to access the Web app; but this tutorial shows how to use MicroProfile (not Istio) to secure access.
Persistence for Java microservices in Kubernetes using JPA
Learn how to use Open Liberty and JPA, an ORM framework, to persist objects to a DB2 database in IBM Cloud.
Debug microservices running in Kubernetes
Use the
Telepresense
tool to locally debug Java microservices.