Kubernetes can feel overwhelming at first , all the YAML, pods, deployments, services... But once you deploy your first app, things start to click.
In this guide, weโll walk through deploying a simple Nginx web server to a Kubernetes cluster, using just a few YAML files.
๐งฑ What Weโre Deploying
Weโll use:
- A Deployment โ to manage our pods
- A Service โ to expose our app
- Optionally, a NodePort โ to access it from a browser
๐ฆ Step 1: Create a Deployment
Letโs create a deployment to run two replicas of the nginx
container.
File: nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.25
ports:
- containerPort: 80
Apply it:
kubectl apply -f nginx-deployment.yaml
Check status:
kubectl get deployments
kubectl get pods
๐ Step 2: Expose the App with a Service
To make the app accessible, define a Service.
File: nginx-service.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: NodePort
Apply it:
kubectl apply -f nginx-service.yaml
Check the port:
kubectl get svc nginx-service
Look for the
NodePort
, e.g.,30007
.
๐ Step 3: Access the App
- If you're using Minikube:
minikube service nginx-service
- If you're using Docker Desktop or a cloud cluster:
Open http://<NODE-IP>:<NODE-PORT>
in your browser.
๐ Bonus: Clean Up
To delete the resources:
kubectl delete -f nginx-deployment.yaml
kubectl delete -f nginx-service.yaml
๐ง Summary
You just:
- Created a Kubernetes deployment for Nginx
- Exposed it using a service
- Accessed it via browser or CLI
- Learned the basics of
kubectl
and YAML syntax
๐งญ Next Steps
Try:
- Replacing Nginx with your own app image
- Using ConfigMaps or Secrets for configuration
- Exploring Ingress controllers
- Scaling your deployment with
kubectl scale
#kubernetes #devops #k8s #containers #yaml #cloudnative
Top comments (0)