Cluster Initialization and NGINX Deployment
Starting Minikube and Deploying NGINX via kubectl
Using PowerShell in VS Code, minikube start was run to spin up a local Kubernetes cluster with the Docker driver (Kubernetes v1.35.1). Once the cluster was ready, kubectl create deployment nginx --image=nginx created the NGINX deployment, and kubectl expose deployment nginx --type=NodePort --port=80 exposed it externally. The minikube service nginx --url command returned the accessible local URL
Verifying the Default NGINX Deployment
Confirming Successful Pod Deployment
Navigating to the generated service URL (127.0.0.1:57751) in the browser displayed the default "Welcome to nginx!" page, confirming that the NGINX container was running correctly and the service was properly routing traffic to the pod.
Enabling the Kubernetes Dashboard
Launching the Minikube Dashboard Add-on
Running minikube dashboard enabled the Kubernetes Dashboard add-on, pulling the dashboard and metrics-scraper images. The terminal output shows the health checks passing and the dashboard proxy launching automatically in the default browser.
Reviewing Workload Status on the Dashboard
Visual Cluster Monitoring via Kubernetes Dashboard
The Kubernetes Dashboard's Workloads view displayed the overall cluster health, showing 1 running Deployment and 1 running Pod in the default namespace — a quick visual confirmation that the earlier kubectl deployment was healthy and active.
Cust*om NGINX Configuration with Persistent Storage*
Deploying NGINX with ConfigMap, PV, and PVC
This step moved beyond the default setup to a more production-style configuration. A nginx.conf file was turned into a ConfigMap (kubectl create configmap nginx-config --from-file=nginx.conf), and persistent storage was provisioned using pv.yaml and pvc.yaml (applied via kubectl apply -f). The nginx-deployment.yaml mounted the ConfigMap as a volume at /etc/nginx/, while nginx-service.yaml exposed the deployment on port 80. This demonstrates a more realistic deployment pattern involving custom configuration and persistent volume management.
Custom NGINX Configuration with Persistent Storage
Deploying NGINX with ConfigMap, PV, and PVC
This step moved beyond the default setup to a more production-style configuration. A nginx.conf file was turned into a ConfigMap (kubectl create configmap nginx-config --from-file=nginx.conf), and persistent storage was provisioned using pv.yaml and pvc.yaml (applied via kubectl apply -f). The nginx-deployment.yaml mounted the ConfigMap as a volume at /etc/nginx/, while nginx-service.yaml exposed the deployment on port 80. This demonstrates a more realistic deployment pattern involving custom configuration and persistent volume management.
Conclusion
This project demonstrated a complete, end-to-end Kubernetes workflow on a local Minikube cluster: from provisioning the cluster and deploying a basic NGINX container, to exposing it as a service, monitoring it via the Kubernetes Dashboard, and finally customizing the deployment with ConfigMaps and persistent storage (PV/PVC). The progression from the default NGINX page to a custom "Hello from Nginx!" response validates that configuration management and volume mounting were correctly implemented — core skills for managing stateful and configurable workloads in real-world Kubernetes environments.






Top comments (0)