
Explore a realistic spring boot microservices scenario on Kubernetes, featuring three services with a shared persistence database, JMS communication, and consolidated logging via file B, Elasticsearch, and Cabana.
Explore Kubernetes fundamentals with Kubernetes by example, from containerizing Spring Boot apps with Docker to deploying microservices on Kubernetes and managing a gateway.
Set up your development environment for Java microservices by installing macOS, Windows, or Linux, minimum 16 gig memory, Java 11+, JDK, Maven, and Docker, plus a local Kubernetes setup.
Enable kubernetes in docker desktop via the preferences, switch on kubernetes, apply and restart to launch a single node cluster, then verify access with kubectl get nodes by switching contexts.
Explore three spring boot microservices for beer operations on Kubernetes, including view, add, delete, inventory, and orders, with complete source code and deployment insights.
Explore three spring boot microservices: beer inventory, beer order, and tasting room, coordinating brewing and inventory via JMS with ActiveMQ, using JPA Hibernate and a single MySQL in Kubernetes.
Review a ready-made code base for kube by example, featuring a multi-module maven project with a gateway and four Spring Boot microservices built into Docker images.
Demonstrate running a multi-service Spring Boot app with Docker Compose, configure environments and ports, and prepare for Kubernetes migration with gateway routing and logging.
Explore backend services for Spring Boot microservices, deploy a single MySQL database in a container, and configure environment parameters to get Spring Boot to talk to the database in Kubernetes.
Convert a docker-compose MySQL setup to Kubernetes by creating a deployment and a cluster IP service, wiring root password and database name via environment variables in YAML.
Create a JMS service using kubectl and a docker compose image for ActiveMQ, deploy a JMS pod, and expose two JMS ports on a cluster IP service.
Set up deployments and service specs for Spring Boot microservices on Kubernetes, configure environment properties and readiness and liveness probes, enable graceful shutdown and access via Spring Cloud Gateway.
Set up inventory service on Kubernetes by creating a deployment and a service, configuring environment variables (data source, user, password, Hibernate DDL data source URL, host), and exposing port.
Configure the inventory failover service in Kubernetes using kubectl to deploy an inventory-failover deployment and its YAML-based service, enabling a fallback when the primary inventory service is unavailable.
Set up the beer service in Kubernetes by configuring its deployment and service yaml, mirroring the docker compose environment with six name-value properties, and expose it on port 8080.
Deploy the order service in Kubernetes with kubectl using a dry-run yaml, then apply six environment properties for MySQL, JMS broker, and beer service host, exposing ports 80 and 81.
Enable Spring Boot actuator health probes and configure Kubernetes readiness and liveness checks against /actuator/health/readiness and /actuator/health on port 8082, then redeploy inventory and order services.
Configure graceful shutdown in Spring Boot 2.3 and inform Kubernetes to wait, using server.shutdown.graceful and a preStop lifecycle hook with a 10-second sleep.
Discover how Kubernetes ingress controllers route http requests into a cluster via a hostname and path, using Spring Cloud Gateway on a nodePort for a simple, single-node demo.
Configure a spring cloud gateway in Kubernetes to route to beer, inventory, and order services via http routes. Kubernetes resolves hostnames and exposes a node port for local testing.
Delete gateway services and deployments in Kubernetes using kubectl by name or yaml files, including delete -f, to remove components and restore by re-applying.
Consolidate logs from a distributed environment by streaming log data to Elasticsearch with file beat, and search it in Kabbalah; use Spring Cloud Sleuth for trace IDs across services.
Explore consolidating logging in spring boot microservices with a json logback encoder and sleuth trace IDs, correlating across services and shipping to Elasticsearch.
Configure consolidated logging with Elasticsearch as the log store by creating a Kubernetes deployment and service. Set discovery.type to single-node and expose port 9200.
Configure Kibana by creating a deployment and a node port service, exposing port 5601 on the host and using the specified image tag.
Configure Filebeat to run on Kubernetes, adapting from Docker Compose to a DaemonSet with a ConfigMap, enabling per-container discovery via annotations and JSON decoding for Elasticsearch and Kibana.
Kubernetes is a container orchestration system used to automate software deployment, scaling and management.
Effectively, Kubernetes is a management tool direct the running of Docker images.
This course is designed to give you more of 'real world' application of Kubernetes.
You are given four different Spring Boot Microservices, which compose an application. The services communicate via RESTful APIs or JMS messages.
You will learn how to compose each service into a Kubernetes Deployment. And then use Kubernetes Services to expose the microservices to each other.
With Kubernetes, it is a best practice to configure Readiness and Liveness probes. Since our services are persisting data, we will also configure a graceful shutdown to prevent any data loss.
One common issue with Microservices is logging. Each running instance will generate its own log output. Thus, it is common to use consolidated logging.
A very common approach is to use the ELK stack (Elasticsearch, Logstash, Kibana). Elasticsearch is a full-text search engine. Logstash is used to get log data into a common format for Elasticsearch. And Kibana is a power data visualization engine. Together, these tools allow you to consolidate and search through your log data.
If you wish to see a realistic example of Spring Boot Microservices being managed in a Kubernetes environment, enroll in this course today!