DEV Community

Cover image for πŸš€ Deploying Your First App on Kubernetes (With YAML Examples)
zaheetdev
zaheetdev

Posted on

1 1 1 1 1

πŸš€ Deploying Your First App on Kubernetes (With YAML Examples)

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
Enter fullscreen mode Exit fullscreen mode

Apply it:

kubectl apply -f nginx-deployment.yaml
Enter fullscreen mode Exit fullscreen mode

Check status:

kubectl get deployments
kubectl get pods
Enter fullscreen mode Exit fullscreen mode

🌐 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
Enter fullscreen mode Exit fullscreen mode

Apply it:

kubectl apply -f nginx-service.yaml
Enter fullscreen mode Exit fullscreen mode

Check the port:

kubectl get svc nginx-service
Enter fullscreen mode Exit fullscreen mode

Look for the NodePort, e.g., 30007.


🌍 Step 3: Access the App

  • If you're using Minikube:
minikube service nginx-service
Enter fullscreen mode Exit fullscreen mode
  • 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
Enter fullscreen mode Exit fullscreen mode

🧠 Summary

You just:

  1. Created a Kubernetes deployment for Nginx
  2. Exposed it using a service
  3. Accessed it via browser or CLI
  4. 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

ACI image

ACI.dev: The Only MCP Server Your AI Agents Need

ACI.dev’s open-source tool-use platform and Unified MCP Server turns 600+ functions into two simple MCP tools on one serverβ€”search and execute. Comes with multi-tenant auth and natural-language permission scopes. 100% open-source under Apache 2.0.

Star our GitHub!

Top comments (0)