Run mission-critical applications on Kubernetes 🚀- DevOps Tool of the Month (3)
Tags: kubernetes, devops, cloud, productivity
Published: 2021-03-26 15:40:09

[DevOps tool of the month](https://www.youtube.com/playlist?list=PLy7NrYWoggjztwSskGu59O38gL5v0LjUT) is a series, where each month I will introduce one new useful DevOps tool in 2021 🙌🏼

For March I chose: [**Shipa**](https://www.shipa.io/) 🎉 - Shipa’s cloud native application management framework makes working with Kubernetes for developers extremely easy. 

---
{% youtube _f8QfKx4rws %}
---

##What problems does Shipa solve?  👀
Shipa solves problems both for developers and for K8s administrators.

**Developer problems:**
Let's say in your project you decided you will use Kubernetes to run your application. In such cases, developers will need to learn Kubernetes, like K8s YAML configuration files, K8s components, kubectl etc. 

As a result developers take most of the time away from actually programming and instead spend it on learning K8s and trying to configure the application to run on K8s.

In addition, they may misconfigure or deploy their application with security issues simply because they don't know the security best practices in Kubernetes.
![Developer Problems](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/adsdigwqvn4j9beencsg.png)


**Platform Administrator problems:**
On the other side we have K8s administrators. These are platform admins who actually set up the K8s clusters. They are the ones who will need to take care of fixing and cleaning up any security or configuration issues in the cluster and support developers when deploying their applications into the cluster.

![Platform admins problems](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/btrfvpv53izykvvoub96.png)

So basically **developers having to learn and work with K8s directly is not a good idea**. In most of the projects it creates more effort for developers as well as platform administrators.

---

##Abstraction 💡
And Shipa helps solve exactly those challenges by abstracting away the complexity of K8s from developers.

To have something that developers can just feed their code to which will then automatically create K8s components, like Pods, Services, ConfigMaps, but also do all of that with the configuration and security best practices of Kubernetes.

So how does Shipa work?

##How Shipa works? 🤔
First the K8s administrators will connect Shipa to multiple clusters, which may be running on different platforms. 

After which they will create and configure what's called Shipa frameworks. Each framework can be configured with security rules, permissions, like who can deploy what where and some other configuration to automatically create K8s components when the application gets deployed.

![Shipa - Platform Admins Workflow](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3r0xlz6i8k0xje6wq9s5.png)

Now developers can simply push their code changes without worrying about any K8s related configurations. Then CI/CD pipeline will build the code and deliver it to one of the Shipa frameworks. Shipa framework, which is already
pre-configured by the admins with all the appropriate settings and rules will 
- check the permissions 
- do security scan
- assign resources to the application and
- automatically create all the needed components in the cluster

![Shipa - Developer Workflow](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ar0293i0jg75wdo3gcrf.png)

**Both developers and admins can do their jobs more efficiently**
Now the admins have all the control and overview of the clusters and how they want to configure it, while also freeing the developers from this struggle of working with K8s directly.

--- 

## Get started with Shipa 👩🏻‍💻
![Setup Shipa](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xcgtk1a2ulgjk37t9nxy.png)

The steps you will need to perform as a platform administrator:

**1. Create K8s cluster and install Shipa into it**
**2. Create Users and Teams**
As a K8s administrator you can actually use the dashboard
to manage the clusters and to create teams and users, to give them access to certain clusters.
**4. Install Shipa CLI and connect to Shipa**
**5. Create Role, Add Permissions and Assign Role**
As a next step, you will need to add the user to the team and give them permissions to deploy applications into the cluster. Currently, you can't do that from the Shipa dashboard, so you would need to install the Shipa CLI.

**5. Create a Framework for your rules**
As an admin you will create framework components for your clusters to configure, which security settings and access rules will be applied when applications get deployed into those clusters.

**6. Add K8s Cluster to Shipa**
Usually you already have existing K8s clusters in your company (created using EKS, OpenShift, Rancher etc), which you will need to connect to Shipa and assign the framework you want to apply for each cluster.

As a developer you don't care about the above. So when everything is set up, you will:

**1. Connect with Shipa via Shipa CLI**
**2. Deploy your Application**
In Shipa developers can actually deploy applications in 3 different ways:
![Application Deployment in Shipa](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wq7abgefgzu1dzceyed0.png)

*1. Source Code Deployment*
If developers are testing their code changes, they can deploy the source code to the cluster directly from their local machine.
*2. Docker Image Deployment*
They can deploy a Docker image into the cluster also from their local machine
*3. CI/CD Deployment*
Shipa provides users with a utility called `shipa-ci`, which can be used by any major CI/CD platform to deliver applications directly to Shipa.


In any of these three cases the **deployment does not require any K8s specific knowledge or a bunch of K8s YAML files**. We basically just give Shipa the image or source code and Shipa will then take care of creating all the necessary K8s components for that application ✅


---

Check it out and let me know what you think about it! 🤓 🧐

More awesome tools coming up next on this series, so stay tuned for it! 🎬 😊

---

**Like, share and follow me** 😍 for more content:
- [Private FB group](https://www.facebook.com/groups/techworldwithnana)
- [Twitter](https://twitter.com/Njuchi_)
- [YouTube](https://www.youtube.com/channel/UCdngmbVKX1Tgre699-XLlUA?sub_confirmation=1)
- [Instagram](https://www.instagram.com/techworld_with_nana/)
- [LinkedIn](linkedin.com/in/nana-janashia)