DEV Community

qing
qing

Posted on

Deploy 1st App in 5 Mins

Kubernetes for Beginners: Deploy Your First App

Imagine having a superpower that allows you to deploy, manage, and scale your applications effortlessly, without worrying about the underlying infrastructure. Welcome to the world of Kubernetes, where this superpower becomes a reality. As a beginner, getting started with Kubernetes can seem daunting, but fear not, we're about to embark on a journey to deploy your first app, and by the end of this article, you'll be well on your way to becoming a Kubernetes master.

Getting Started with Kubernetes

To begin our journey, let's first understand what Kubernetes is. Kubernetes, also known as K8s, is an open-source container orchestration system for automating the deployment, scaling, and management of containerized applications. It was originally designed by Google, and is now maintained by the Cloud Native Computing Foundation (CNCF). With Kubernetes, you can deploy your application on a cluster of machines, and it will take care of the rest, including scaling, self-healing, and resource management.

Setting Up Your Environment

Before we dive into deploying our first app, we need to set up our environment. You'll need to install a few tools, including:

  • Docker: a containerization platform
  • Minikube: a tool for running Kubernetes locally
  • kubectl: the command-line tool for interacting with your Kubernetes cluster

Once you've installed these tools, you can verify that everything is working correctly by running kubectl cluster-info in your terminal.

Deploying Your First App

Now that our environment is set up, it's time to deploy our first app. We'll be using a simple Python web server as an example. Create a new file called app.py and add the following code:

from http.server import BaseHTTPRequestHandler, HTTPServer

class RequestHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.send_header('Content-type', 'text/html')
        self.end_headers()
        self.wfile.write(b"Hello, World!")

def run_server():
    server_address = ('', 8000)
    httpd = HTTPServer(server_address, RequestHandler)
    print("Server running on port 8000...")
    httpd.serve_forever()

if __name__ == "__main__":
    run_server()
Enter fullscreen mode Exit fullscreen mode

This code creates a simple web server that listens on port 8000 and responds with "Hello, World!" to any GET request.

Creating a Docker Image

To deploy our app to Kubernetes, we need to create a Docker image. Create a new file called Dockerfile and add the following code:

FROM python:3.9-slim

WORKDIR /app

COPY app.py .

CMD ["python", "app.py"]
Enter fullscreen mode Exit fullscreen mode

This Dockerfile tells Docker to:

  • Use the official Python 3.9 image as a base
  • Set the working directory to /app
  • Copy the app.py file into the container
  • Run the app.py file with the python command when the container starts

Building and Pushing the Image

To build the Docker image, run the following command:

docker build -t my-python-app .
Enter fullscreen mode Exit fullscreen mode

This will create a new Docker image with the name my-python-app. You can then push the image to a container registry like Docker Hub:

docker tag my-python-app:latest <your-username>/my-python-app:latest
docker push <your-username>/my-python-app:latest
Enter fullscreen mode Exit fullscreen mode

Replace <your-username> with your actual Docker Hub username.

Deploying to Kubernetes

Now that our image is built and pushed, we can deploy it to Kubernetes. Create a new file called deployment.yaml and add the following code:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-python-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-python-app
  template:
    metadata:
      labels:
        app: my-python-app
    spec:
      containers:
      - name: my-python-app
        image: <your-username>/my-python-app:latest
        ports:
        - containerPort: 8000
Enter fullscreen mode Exit fullscreen mode

This YAML file defines a Kubernetes deployment with:

  • 3 replicas of our app
  • A label app: my-python-app to identify the pods
  • A container running our my-python-app image
  • Port 8000 exposed

Replace <your-username> with your actual Docker Hub username.

Applying the Deployment

To apply the deployment, run the following command:

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

This will create a new deployment in your Kubernetes cluster.

Verifying the Deployment

To verify that the deployment was successful, you can run:

kubectl get deployments
Enter fullscreen mode Exit fullscreen mode

This will show you a list of deployments in your cluster, including our my-python-app deployment. You can also check the pods:

kubectl get pods
Enter fullscreen mode Exit fullscreen mode

This will show you a list of pods in your cluster, including the 3 replicas of our app.

Conclusion and Next Steps

Congratulations, you've just deployed your first app to Kubernetes! This is just the beginning of your Kubernetes journey. From here, you can explore more advanced topics like scaling, self-healing, and resource management. You can also try deploying more complex applications, like a web app with a database. The possibilities are endless, and with Kubernetes, you have the power to deploy and manage your applications with ease. So what are you waiting for? Start exploring, start deploying, and join the Kubernetes community today!


💡 Related: **Content Creator Ultimate Bundle (Save 33%)* — $29.99*


📧 Get my FREE Python CheatsheetFollow me on Dev.to and drop a comment below — I'll DM you the cheatsheet directly!

🐍 50+ essential Python patterns, one-liners, and best practices for everyday development. Free for all readers.


If you found this useful, you might like Python Interview Prep Guide — a practical resource that takes things a step further. At $24.99 it's a solid investment for your toolkit.

Top comments (0)