Skip to content

atulkamble/k8s-nodejs-hello-world

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

3 Commits
Β 
Β 

Repository files navigation

setup for deploying a simple Node.js web application using Docker and Kubernetes.


πŸ“ Project Structure:

k8s-nodejs-hello-world/
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ Dockerfile
β”‚   └── server.js
β”œβ”€β”€ k8s/
β”‚   β”œβ”€β”€ deployment.yaml
β”‚   └── service.yaml
β”œβ”€β”€ .dockerignore
β”œβ”€β”€ .gitignore
└── README.md

πŸš€ Step-by-Step Instructions:

1. Create Node.js App

πŸ“„ 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"]

2. .dockerignore

πŸ“„ .dockerignore:

node_modules
npm-debug.log

3. Kubernetes Deployment Config

πŸ“„ 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

πŸ“¦ Build & Push Docker Image

# Inside project root
cd app
docker build -t <your-dockerhub-username>/hello-node:latest .
docker push <your-dockerhub-username>/hello-node:latest

☸️ Deploy to Kubernetes

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

πŸ“ Sample README.md

# 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

About

k8s-nodejs-hello-world

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published