The Reversed-IP App is an example a Node.js application deployed locally using Docker and Kubernetes. This guide provides a step-by-step process for deploying the app along with its dependencies (MySQL) using Helm.
You can just replace it with your application.
Before deploying the app, ensure the following are installed:
minikube start
eval $(minikube docker-env)
cd app
docker build -t reversed-ip:1.0 .
cd helm/charts/local
helm dependency update
helm install local .
kubectl get pods
kubectl port-forward svc/local-reversed-ip 8000:80
Open the browser hit http://localhost:8000/
Before deploying the app, ensure the following are installed:
cd terraform/live
terraform init
why: Terraform code consumes both kubernetes and aws provider, so without provisioning an EKS cluster, kubernetes provider terraform resource will throws the error
terraform plan --target module.eks --target module.vpc
terraform apply --target module.eks --target module.vpc
Use --auto-approve flag or type yes if terraform asks to continue
terraform plan
terraform apply
- Uses Github Actions Runner
- Runner Pods are provisioned in Kubernetes by deployed Actions Runner Controller
- Find the actions runner file .github/workflows/reversed-ip-ci-cd.yaml
- Once application updated, Actions runner will be triggered automatically
- Nodejs : Application Software Language
- Docker : Container Runtime and Image Creating
- IaC : Terraform, Helm
- Cloud: AWS
- Container Orchestration: Kubernetes (EKS Managed Control Plan, Spot Worker Nodes)
- Networking and Firewall : VPC and Security Groups, (Public and Prviate Subnet)
- CI-CD: Github Actions
- CI-CD Runners: Actions Runner Controller on Kubernetes
- Deployment Strategy: Rolling Update
- Container Registry: AWS ECR
- Secrets Management: AWS Secrets Manager
- Database: MySQL (K8s Deployment)
- DNS: AWS Route53
- TLS Certificates: AWS ACM
- Secrets Synchronizer: External-Secrets Operator on K8s
- Traffic Management: Nginx Ingress Controller On K8s
- Load Balancing : AWS ALB
- EKS Worker Node Scaling: Cluster Autoscaler on K8s
- Kubernetes Metrics Provider: Metrics Server on K8s
- IAM Management: IRSA Roles with least permissions trusted only apps on defined namespaces
-
Argo CD Integration
-
Github APP replacement with PAT
-
Karpenter replacement with Cluster Autoscaler