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)