Skip to content

gokulchandrap/k8s-3tier-webapp

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🦌 k8s-3tier-webapp

Java CI Docker Image CI Docker Vulnerability Scan Yaml Validator Minikube Quarkus CI Minikube Open Liberty CI Minikube Spring CI Minikube Yaml CI Minikube Stress CI Minikube Security CI Check for Update Dockerfile Lint Check for CI Target Cypress CI Codacy Badge Codacy Badge CodeFactor Maintainability codebeat badge Total alerts codecov Quality Gate Status GuardRails badge Renovate enabled BCH compliance Support JVM Version Support Quarkus Version Support Kubernetes Version Support Minikube Version Support kind Version Cypress Dashboard Gitpod ready-to-code MDDocs ready MIT License FOSSA Status


Sample web application based on k8s. Focus on connecting components, setting k8s resources, and aiming to microservices. The k8s-3tier-webapp service is for PoC, not production ready.


Tier Name Description
1 Frontend Web page, Application logic, Static file
2 Backend Database, Cache, Messaging
3 Management Monitoring, CI/CD, Tracing

LayardArchitecturalOverview.png

Concepts

  • Choice better architecture what you expect based on k8s
  • Help understanding k8s resources based on yaml
  • Test automation on Github Actions for free
  • Expand test automation - unit, end-to-end, performance, recovery, security
  • Keep observability for monitoring services
  • Improve application quality using public CI services that following Github

Features

  • All docker components run on k8s
  • All application written by Java mostly Quarkus
  • k8s resources written by yaml, try not to use helm, operator
  • Use only public software, not commercial
  • Use Github Actions for build, test, release

Requirements

Installed CLI commands.

  • 💻 docker
  • 💻 kubectl
  • 💻 minikube

Run on Minikube

Mac

minikube config set memory 121288
minikube config set cpus 6
minikube config set disk-size 80g
minikube start
minikube addons enable ingress
kubectl delete -A ValidatingWebhookConfiguration ingress-nginx-admission

eval $(minikube docker-env)

Windows

minikube config set memory 121288
minikube config set cpus 6
minikube config set disk-size 80g
minikube start
minikube addons enable ingress
kubectl delete -A ValidatingWebhookConfiguration ingress-nginx-admission

minikube docker-env --shell powershell | Invoke-Expression

Build & Apply

apply.sh supports kubectl apply to k8s clusters.

./kubernetes/bin/apply.sh

Web Console Access

Add hosts

Add IP, domain in /etc/hosts

echo `minikube ip` k8s.3tier.webapp openliberty.minikube spring.minikube api.server.minikube \
rabbitmq.management.minikube jenkins.minikube alertmanager.minikube prometheus.minikube \
grafana.minikube jupyter.minikube hazelcast.manager.minikube activemq.management.minikube \
jaeger.minikube argo.minikube >> /etc/hosts

Web Console list

Service URL
Top Page http://k8s.3tier.webapp/
Open Liberty http://openliberty.minikube
Spring Boot http://spring.minikube
Rabbitmq Management Console http://rabbitmq.management.minikube
Activemq Management Console http://activemq.management.minikube

top.png

Component

Application

Java based web application for application

Kubernetes

Yaml based kubernetes manifests for kubernetes

Monitoring

Set up monitoring for Tier 3

License

k8s-3tier-webapp is licensed under the MIT License. See LICENSE for the full license text.

FOSSA Status

Contribution

  1. Fork this repo
  2. Create a feature branch named like feature/enhancement from master branch
  3. Commit your changes
  4. Rebase your local changes against the master branch
  5. Create new Pull Request

About

Sample web application based on k8s

Resources

License

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 89.0%
  • Shell 5.0%
  • JavaScript 2.6%
  • Dockerfile 1.8%
  • HTML 1.5%
  • CSS 0.1%