setup for deploying a simple Node.js web application using Docker and Kubernetes.
k8s-nodejs-hello-world/
βββ app/
β βββ Dockerfile
β βββ server.js
βββ k8s/
β βββ deployment.yaml
β βββ service.yaml
βββ .dockerignore
βββ .gitignore
βββ README.md
π app/server.js
:
const http = require('http');
const port = process.env.PORT || 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello from Kubernetes!\n');
});
server.listen(port, () => {
console.log(`Server running at http://localhost:${port}/`);
});
π app/Dockerfile
:
FROM node:18-alpine
WORKDIR /app
COPY server.js .
EXPOSE 3000
CMD ["node", "server.js"]
π .dockerignore
:
node_modules
npm-debug.log
π k8s/deployment.yaml
:
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-node-deployment
spec:
replicas: 2
selector:
matchLabels:
app: hello-node
template:
metadata:
labels:
app: hello-node
spec:
containers:
- name: hello-node
image: <your-dockerhub-username>/hello-node:latest
ports:
- containerPort: 3000
π k8s/service.yaml
:
apiVersion: v1
kind: Service
metadata:
name: hello-node-service
spec:
type: LoadBalancer
selector:
app: hello-node
ports:
- protocol: TCP
port: 80
targetPort: 3000
# Inside project root
cd app
docker build -t <your-dockerhub-username>/hello-node:latest .
docker push <your-dockerhub-username>/hello-node:latest
kubectl apply -f k8s/deployment.yaml
kubectl apply -f k8s/service.yaml
Check the service:
kubectl get services
If using Minikube, run:
minikube service hello-node-service
# k8s-nodejs-hello-world
A basic Node.js app deployed with Kubernetes.
## Features
- Node.js HTTP server
- Dockerized
- Kubernetes Deployment & Service YAMLs
## Quick Start
1. Build & Push Docker Image
2. Apply Kubernetes configs
3. Access via LoadBalancer/Minikube