Kubernetes for Developers
Tags: kubernetes, devops, developers
Published: 2024-01-13 17:02:53

In the last 8 years, Kubernetes has emerged as the standard for orchestrating containerized applications. However, its complexity can be a barrier for many developers.

> Disclaimer: I'm a co-founder of Qovery - but I guarantee it's not a trap! Give it a try to Qovery if you want a very nice developer experience on top of your Kubernetes cluster.

![Kubernetes for Developers](https://cdn.hashnode.com/res/hashnode/image/upload/v1705161062856/1d4712e1-3113-4720-9a67-e860abb63f7d.jpeg)

Enter [Qovery](https://www.qovery.com) - an Internal Developer Platform that can be installed on any Kubernetes cluster to bring a delightful and simplified developer experience. But don't take my word for granted. In this quick step-by-step article, I will show you how to deploy one of my [GitHub apps](https://github.com/evoxmusic/ShortMe-URL-Shortener) and a Postgres database on my Kubernetes cluster running on GCP. And what's really really cool is that I don't even need to understand how Kubernetes work!

## Qovery: A Brief Overview

**What is Qovery?**
An Internal Developer Platform that abstracts Kubernetes complexities, empowering developers to focus on their code.
    
**Key Benefits:**    

* Fast and easy installation on any Kubernetes cluster.
* Intuitive open-source interfaces ([Web](https://github.com/Qovery/console), [CLI](https://github.com/Qovery/qovery-cli), [API](https://api-doc.qovery.com/), [Terraform Provider](https://registry.terraform.io/providers/Qovery/qovery/latest/docs)) for efficient app deployment and 
* No Kubernetes expertise is required for developers.
* Highly customizable for Platform Engineers.
* No YAML to write for Developers ;)
* Generous free plan (no credit card required).
        
**Who Uses Qovery?**

Over 60,000 developers and Platform Engineers, valuing its simplicity and efficiency.
   

## Deploying an Application on Kubernetes with Qovery

### Step 1: Set Up Your Qovery Account

Connect to [console.qovery.com](https://console.qovery.com) and sign in with GitHub, GitLab, or Bitbucket.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1705149054671/028780f9-d2c6-4502-ad01-9b0a5b54f049.png)

Then, give a name to your [Organization](https://hub.qovery.com/docs/using-qovery/configuration/organization/) and Choose the `Free` plan.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1705149180129/4e24c0c6-7823-43de-bec6-050e594509c0.png)

Once your organization is created, you should get this view:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1705149336753/98b6fa2e-f0ef-409b-8233-7165cf60de78.png)

> I recommend familiarizing yourself with [the basic concepts of Qovery](https://hub.qovery.com/docs/getting-started/basic-concepts/) to understand what an organization, cluster, project, or environment is.

### Step 2: Connect Your GitHub Repository

You can skip this part if you signed up with your GitHub account. Otherwise, you can connect your GitHub account and permit Qovery to get access to your public and/or private repositories.

Go to your `Organization settings` &gt; `Git repositories access` &gt; then, pick the option you want to connect your GitHub account.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1705149695771/2281d2c5-1b17-4d78-b9e8-19fce5914180.png)

### Step 3: Install Qovery on Your Kubernetes Cluster

To install Qovery on your Kubernetes cluster, you need to add a cluster into the Qovery interface:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1705153251491/5529dfbb-f5fd-406e-8b3a-94e2b3ae0253.png)

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1705153326898/16a71fd9-daf2-486d-a19c-921626d7b0f5.png)

Add your Kubeconfig:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1705153373170/1385d1bc-6a6b-49d8-be1c-e9d6ac58ee4e.png)

Qovery will give you the commands and the generated helm configuration files you can download.

Then, you need to run the following on your Kubernetes cluster:

```bash
helm repo add qovery https://helm.qovery.com
helm repo update

helm upgrade --install -n qovery -f values-zXXX.yaml qovery
```

Congrats! 🥳 Your cluster is connected to Qovery. You can now deploy your apps.

### Step 4: Deploy Your Application

Now, we can deploy our GitHub app on our Kubernetes cluster. Check out this short video and look how fast it is.

{% embed https://www.loom.com/share/6d86b6aaea014b5aa673c1ed2d90d355 %}

Here is what I did:

1. I created an Environment and then I created an Application.
    
2. I select my app from my GitHub repository
    
3. By default Qovery picks the `Dockerfile` at the root of my project but I can change it.
    
4. I set the CPU to `250m` and the RAM to `256 MB`
    
5. I declared my app port to be `5555` and I tick the `expose publicly` option -&gt; So my app can be accessible from outside.
    
6. I deployed my app and it's accessible publicly (end of video)
    

This is pretty cool, right? It's not over! 😎

### Step 5: Manage and Monitor Your Application

Qovery provides everything you need to manage (start, stop, restart, redeploy, delete) and check out your applications logs - directly streamed from your Kubernetes cluster. Yes!

{% embed https://www.loom.com/share/871912e2051848dcbeb0f186e4ac5761 %}

You want to use Datadog or any third-party solutions? No problem.. Everything compatible to Kubernetes is compatible to Qovery.

### Step 6: Leverage Advanced Qovery Features

I'm pretty sure you ask yourself, ok that's great all of that. But what about configuring your environment variables, your custom domain or even deploy a database... Well it's all covered :)

{% embed https://www.loom.com/share/ac5b4c354c134a2db618995d1c8c758a %}

Imagine, you can even securely connect to your database with the Qovery CLI 😎

```bash
~ $ qovery auth
Opening your browser, waiting for your authentication...
Info: Success

~ $ qovery port-forward -p 5556:5555
Info: Current context:
Organization | MyOrg
Project      | URL Shortener
Environment  | prod
Service      | DB
Type         | database


Info: Continue with port-forward command using this context ?
Please type "yes" to validate context: yes

Listening on 127.0.0.1:5432 => 5432

~ $ psql $DATABASE_URL

psql >
```

## Powerful out-of-the-box features

Here are a list of cool features you get out of the box:

* **Auto-deploy**: if I do commit and push a change on my GitHub app - it will be automatically redeployed without any downtime
* **Clone**: this is my favorite feature! You can clone your app (or your complete environment) in one click. So, testing a new feature without impacting the original app is easily possible.
* **Ephemeral Environment**: For each Pull Request that I open for my app, Qovery will spin up a new environment 
* RBAC, GitHub Actions (CI/CD) integration, Logs, Deployment pipeline, env var interpolation, env var as a file, helm deployment, multiple clusters...
    

There are so many cool features that I could write 10 other posts to talk about them exclusively. It's probably something that I'll do if you are interested to learn more about some of them :)

## Conclusion

Qovery demystifies Kubernetes for developers, making it accessible and manageable without requiring deep expertise. Feel free to [try it now](https://www.qovery.com) on your Kubernetes cluster - it's free and will always be!

> [If you like the Qovery web interface - give a star ⭐ - it's open source and coded in React ✨](https://github.com/Qovery/console)

**Additional Resources:**
* [Qovery Documentation](https://hub.qovery.com)
* [Community Support and Discussions](https://discuss.qovery.com)