Skip to content

Latest commit

 

History

History
104 lines (73 loc) · 2.63 KB

File metadata and controls

104 lines (73 loc) · 2.63 KB

🪐 Jupiter

A multi-container hit counter application built to learn containers, Kubernetes, and cloud-native development.

Python Flask Redis Kubernetes Podman


What is this?

A simple web app that counts page visits. Each refresh increments the counter and spawns a bouncing "Jupiter" ball on screen.

But the real purpose? Learning how containers and orchestration work by building something hands-on.


Why I built this

I wanted to understand:

  • How containers actually work (not just docker run)
  • Why we need orchestration tools like Kubernetes
  • The difference between local memory and external state (Redis)
  • How multi-container applications communicate

Instead of just reading docs, I built something.


Tech Stack

Component Technology
Backend Python 3.11 + Flask
Database Redis
Container Runtime Podman
Orchestration Kubernetes (Minikube / Kind)

What I learned

Containers

  • Writing Dockerfiles with multi-stage builds
  • Why entrypoint.sh exists (runtime configuration)
  • Container networking — why localhost doesn't work across containers

Kubernetes

  • Pods, Deployments, Services, Namespaces
  • How Services provide stable DNS names for ephemeral pods
  • The difference between Minikube and Kind
  • Using kubectl to debug running applications

Architecture

  • Why external state (Redis) matters — containers are ephemeral
  • How pods share network namespaces (pause containers)
  • The declarative model: describe desired state, let K8s handle the rest

Quick Start

# With Podman
podman build -t jupiter-frontend .
podman pod create --name jupiter -p 5000:5000
podman run -d --pod jupiter --name redis redis:7-alpine
podman run -d --pod jupiter --name flask-app jupiter-frontend

# Visit http://localhost:5000

Project Structure

Jupiter/
├── app/
│   ├── app.py              # Flask application
│   ├── requirements.txt    # Dependencies
│   └── templates/
│       └── index.html      # Frontend with bouncing Jupiters
├── k8s/
│   ├── deployment.yaml     # Kubernetes Deployments
│   └── service.yaml        # Kubernetes Services
├── Dockerfile
├── entrypoint.sh
└── README.md

Screenshots

Jupiter Hit Counter

Refresh the page to add more bouncing planets!