VotingApp

VotingApp is a microservices application, originally built by Docker, that I enhanced in several ways. I used it for Kubernetes workshops, training, and conference demos. It is simple but realistic enough to demonstrate many containers and Kubernetes concepts.

What it demonstrates

  • Deployments and scaling
  • Services and networking
  • ConfigMaps and environment configuration
  • Persistent storage
  • Ingress routing
  • GitOps workflows

Architecture

The app is made of several microservices:

  • vote-ui: front end in VueJS that enables a user to choose between a cat and a dog
  • vote: backend exposing an API with Python / Flask
  • redis: database where votes are stored
  • worker: service, written in Go, that get votes from Redis and store the results in a Postgres database
  • db: the Postgres database storing the results of the votes
  • result: backend sending scores to a UI through websocket
  • result-ui: front end in Angular displaying the results of the votes

Getting started

The repository includes Kubernetes manifests, a Helm chart, and Argo CD examples.

Live demo: vote.votingapp.xyz

Source: gitlab.com/voting-application