public | ||
deployment.yaml | ||
Dockerfile | ||
namespace.yaml | ||
package-lock.json | ||
package.json | ||
prepare-app.sh | ||
README.md | ||
server.js | ||
service.yaml | ||
start-app.sh | ||
statefulset.yaml | ||
stop-app.sh |
Todo App Kubernetes Deployment
This repository contains the Kubernetes configuration files to deploy the Todo App. Follow the instructions below to deploy the application on your Kubernetes cluster.
Description
The Todo App is a simple web application that allows users to create, read, update, and delete todo items. It is built using Node.js and is containerized using Docker.
Containers Used
- elineen/todo-app:latest: The main application container that runs the Todo App.
Kubernetes Objects
- Namespace:
my-namespace
- The namespace in which all other objects are created. - Deployment: Defines the deployment configuration for the Todo App.
- StatefulSet: Defines the stateful set configuration for the Todo App, including PersistentVolume and PersistentVolumeClaim objects.
- Service: Exposes the Todo App to the network.
Virtual Networks and Named Volumes
- PersistentVolume: Defines a persistent volume for storing application data.
- PersistentVolumeClaim: Claims the persistent volume for use by the StatefulSet.
Container Configuration
The container configuration includes the following:
- Image:
elineen/todo-app:latest
- Ports: The application listens on port 8080.
- Volume Mounts: The container mounts the persistent volume at
/data
.
Instructions
Prerequisites
- Kubernetes cluster (e.g., Minikube, Docker Desktop, or a cloud provider like GKE, EKS, AKS)
kubectl
command-line tool installed and configured to interact with your Kubernetes cluster- Docker installed and configured to pull images from Docker Hub
Prepare the Application
Run the following script to prepare the application, build the Docker image, and create the persistent volumes:
./prepare-app.sh
Start the Application
Run the following script to create all Kubernetes objects and start the application:
./start-app.sh
Stop the Application
Run the following script to delete all created Kubernetes objects and stop the application:
./stop-app.sh
View the Application
If you are using a LoadBalancer service, you can access the application using the external IP address provided by the service. Run the following command to get the service details:
kubectl get services -n my-namespace