Client is on the same network and accesses Minikube via port-forward on :8080.
A practical, end-to-end setup guide for a lightweight Kubernetes lab built on a constrained Ubuntu VM.
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo usermod -aG docker demouser
sudo systemctl enable --now docker
curl -fsSL "https://dl.k8s.io/release/$(curl -fsSL https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" -o /tmp/kubectl
sudo install -o root -g root -m 0755 /tmp/kubectl /usr/local/bin/kubectl
kubectl version --client
curl -fsSL https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 -o /tmp/minikube
sudo install -o root -g root -m 0755 /tmp/minikube /usr/local/bin/minikube
minikube version
minikube start --driver=docker --cpus=1 --memory=1500mb --force
Reasoning:
--driver=docker: simple and fast on this VM--cpus=1 --memory=1500mb: fits hardware limits--force: bypasses minikube default sizing checksminikube addons enable ingress
kubectl get pods -n ingress-nginx
kubectl get svc -n ingress-nginx
Current ingress exposure:
30848311678080 -> 80 and 8443 -> 443curl http://minikube.mouradcloud.local:8080/helloworld
curl http://minikube.mouradcloud.local:8080/helloworld2
kubectl create deployment myapp --image=hashicorp/http-echo -- /http-echo -text='My App' -listen=':5680'
kubectl expose deployment myapp --name=myapp-svc --port=80 --target-port=5680 --type=ClusterIP
Then add /myapp to your Ingress rules and apply the manifest.
minikube status
kubectl get all
kubectl get ingress
kubectl get pods -n ingress-nginx
kubectl logs -n ingress-nginx -l app.kubernetes.io/name=ingress-nginx
/mnt/SHARES/MINIKUBE/MINIKUBE_SETUP.md/mnt/SHARES/MINIKUBE/QUICK_START.mdUse this sequence when you want to add a third application behind the same ingress controller.
kubectl create deployment myapp --image=hashicorp/http-echo -- \
/http-echo -text='My App from Minikube' -listen=':5680'
Verify:
kubectl get deploy myapp
kubectl get pods -l app=myapp -o wide
kubectl expose deployment myapp \
--name=myapp-svc \
--port=80 \
--target-port=5680 \
--type=ClusterIP
Verify:
kubectl get svc myapp-svc
kubectl get endpoints myapp-svc
kubectl apply -f - <<'EOF_ING'
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: hello-ingress
spec:
ingressClassName: nginx
rules:
- http:
paths:
- path: /helloworld
pathType: Prefix
backend:
service:
name: hello-svc
port:
number: 80
- path: /helloworld2
pathType: Prefix
backend:
service:
name: hello-v2-svc
port:
number: 80
- path: /myapp
pathType: Prefix
backend:
service:
name: myapp-svc
port:
number: 80
EOF_ING
Verify ingress:
kubectl get ingress hello-ingress -o yaml
curl http://minikube.mouradcloud.local:8080/myapp
Expected output includes:
My App from Minikube
kubectl describe ingress hello-ingress
kubectl get endpoints myapp-svc
kubectl logs deploy/myapp
kubectl get pods -n ingress-nginx
kubectl logs -n ingress-nginx -l app.kubernetes.io/name=ingress-nginx
If port-forward is not running, restart it:
kubectl port-forward -n ingress-nginx svc/ingress-nginx-controller 8080:80 8443:443 --address=0.0.0.0 &