DevOps Week 15: Mastering Kubernetes with Minikube, Deployments, Services, and Ingress
A frelance mern stack developer at fiver and aspiring devops engineer
Content:
This week in my DevOps journey, I explored Kubernetes hands-on using Minikube on Ubuntu. I covered deployments, self-healing, scaling, services, and NGINX Ingress with HTTPS.
Minikube Setup
I installed and configured Minikube, set up a Master Node, and joined Worker Nodes. I explored Kubernetes master components like API Server, Scheduler, Controller Manager, and etcd. I learned how Kubelet executes containers on worker nodes according to master instructions.
Deploying Applications
I deployed Nginx, Apache, and Redis using a apps.yaml file and exposed them via NodePort Services. Key commands I used:
kubectl get pods
kubectl delete pod <pod-name>
kubectl describe pod <pod-name>
kubectl logs <pod-name>
Self-Healing and Scaling
Instead of running standalone containers, I created a Deployment with 3–4 replicas. Deleting a pod manually triggered Kubernetes to recreate it automatically, ensuring high availability.
Kubernetes Services
I explored three types of services:
ClusterIP: Internal access
NodePort: External access via <NodeIP>:<NodePort>
LoadBalancer: External IP access in cloud environments
I accessed services using Minikube commands and observed self-healing in action.
NGINX Ingress & HTTPS
I enabled NGINX Ingress and created an Ingress resource for domain routing. Using a TLS secret, I secured my application with HTTPS:
bash
Copy code
kubectl create secret tls <app-name>-tls --cert=tls.crt --key=tls.key
The combination of Deployments, Services, and Ingress creates a production-ready Kubernetes workflow.
Key Takeaways
Kubernetes ensures self-healing, scaling, and high availability
Services define how apps are accessed internally and externally
NGINX Ingress simplifies domain routing and SSL management
Minikube hands-on practice deepens understanding of Kubernetes architecture