Skip to content

Cloud Native App For Creating Countdowns

Cloud Native App For Creating Countdowns

View on GitHub

A simple cloud-native app that implements the key Kubernetes (K8s) concepts. Everything can be deployed via a Helm chart. The app allows users to create and remove countdowns for events. Once an event is less than 24 hours away, a notification is sent via email using the fake SMTP service Mailhog.

Architecture

  • Deployment 1: HTML and JS for the UI, Python and FastAPI for the API
  • Deployment 2: Fake SMTP (Mailhog) and inbox for testing emails
  • Service: NodePort for accessing the website via browser
  • StatefulSet, Volume: Persistent database (Postgres)
  • CronJob: Checks every 5 minutes if an event is < 24h away and sends a notification email (Notifier)
  • RBAC: ServiceAccount, Role, RoleBinding for the Notifier
  • ConfigMap (nginx-conf), Secret (db-secret): HTTP routing and DB password
  • LimitRange, ResourceQuota: CPU and memory limits, as well as namespace budget

Container Registry

After testing in the development environment, I pushed the images for the UI, Notifier, and API to the GitLab Container Registry of our repository from university to be able to deploy the app to production.

Example for pushing the UI image to the registry:

docker buildx build --platform linux/amd64 -t $REG/countdown-ui:$TAG ./src/ui --push

Demo Videos


Countdown Board Demo

Pods, jobs and more

Mail notification logs

API logs

Database logs