eksctl, kubectl, docker, helm installedexport AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)
export REGION=ap-south-1
# Create ECR repository
aws ecr create-repository --repository-name myapp --region $REGION
# Authenticate Docker to ECR
aws ecr get-login-password --region $REGION | \\
docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$REGION.amazonaws.com
# Tag & push image
docker tag myapp:latest $AWS_ACCOUNT_ID.dkr.ecr.$REGION.amazonaws.com/myapp:latest
docker push $AWS_ACCOUNT_ID.dkr.ecr.$REGION.amazonaws.com/myapp:latest
eksctl create cluster \\
--name my-cluster \\
--region $REGION \\
--nodegroup-name workers \\
--node-type t3.medium \\
--nodes 2 \\
--managed
AWS manages: Control plane, API server, etcd
You manage: Worker nodes, pods, deployments, services
deployment.yaml
(Note: Added resources block. HPA requires CPU/Memory requests to function.)
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
replicas: 2
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp
image: $AWS_ACCOUNT_ID.dkr.ecr.$REGION.amazonaws.com/myapp:latest
ports:
- containerPort: 8080
resources:
requests:
cpu: "100m"
memory: "128Mi"
limits:
cpu: "500m"
memory: "256Mi"
kubectl apply -f deployment.yaml
kubectl get pods