Skip to content

johnnyhuy/todo-app-kubernetes

Repository files navigation

MIT License LinkedIn


Logo

Todo App Kubernetes

A demonstration of a todo application in a container orchestration environment.

Getting Started
Monitoring · Load testing · Chaos testing
Findings · Acknowledgments

Background

Todo App

This project was made to solve the problem of introducing new team members into Kubernetes. Demonstrating tool to host a microservices app in Kubernetes along with testing and monitoring capabilities.

We're using Minikube as a baseline to deploy services into Kubernetes. However, this can be compatible with Managed Kubernetes Services give or take some modification to adapt to cloud providers.

Built With

Notable tools including, but not limited to:

Getting Started

Prerequisites

  • NodeJS v17+
  • Docker
  • Minikube

MacOS

Use Homebrew to install required tools.

brew bundle

# Install NodeJS
nvm use 16

Windows

Use Chocolatey to install required tools. Run the PowerShell script as admin.

.\Install-ChocoTools.ps1

# Install NodeJS
nvm use 16

Multi-platform

Alternatively, we can use VSCode dev containers to open a cluster environment. This only requires Docker.

Open this project in VSCode, ctrl + p and enter Remote-Containers: Rebuild and Reopen in Container.

Usage

Feel free to inspect make commands in the Makefile

# Start local cluster
make local-cluster

# Create a tunnel between Minikube and our local machine (localhost)
make tunnel

Monitoring

make deploy-monitoring

Load Testing

We can run load tests locally. This requires k6 and NodeJS with Yarn.

make load-test

Chaos Testing

TODO

Contributing

# Start local cluster
make local-cluster

# Build images, deploy, port-forward and watch for changes
skaffold dev

# OR

# Do everything `skaffold dev` except watching & port-forwarding
skaffold build -q | skaffold deploy --build-artifacts -

Findings

Little tid bits can me found in FINDINGS.md

Acknowledgments

Distributed under the MIT License. See LICENSE for more information.

TODO

About

🚀 NodeJS todo app powered by Kubernetes using Kube Invaders, MongoDB, Vue 3, Skaffold, Minikube, Helm and more!

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published