Skip to content

yurake/k8s-3tier-webapp

Repository files navigation

🦌 k8s-3tier-webapp

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.

Java CI Docker Image CI Minikube Quarkus CI Minikube Yaml CI Minikube Stress CI Minikube Security CI kind Chaos Mesh CI kind Quarkus CI kind Yaml CI Yaml Validator Shell Validator Dockerfile Lint CodeQL Check for Update CIS Dockerfile benchmark Cypress CI K8S Security Config Watch Dependency Review DevSkim Snyk Codacy pmd pages-build-deployment

Codacy Badge Codacy Badge CodeFactor Maintainability codebeat badge codecov Codiga Code Quality Score Codiga Code Grade DeepSource Active Issues DeepSource Resluved Issues Cypress

Support JVM Version Support Quarkus Version Support Kubernetes Version Support Minikube Version Support kind Version MIT License FOSSA Status

AccessLint Datadog Debricked GitBook Gitpod Hound Imgbot Renovate Repo Ranger Socket Sonatype Lift What The Diff

sonarcloud More details at sonarcloud


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 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/
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

Security

Security