7 Tools To Make Kubernetes Management Easy
Tags: kubernetes, devops, opensource, go
Published: 2022-06-13 13:29:47

In the emerging Cloud-Native environment, Kubernetes is everywhere without any question. It has become the standard for orchestrating containers. But managing multiple Kubernetes clusters presents a new set of challenges. Let’s explore some of the popular tools to manage Kubernetes efficiently.

## 1. Kube-Prometheus-Stack

Prometheus is an open source tool used for metrics-based tool used for monitoring and alerting. Kube-Prometheus-Stack is a collection of kubernetes manifests, Prometheus rules and Grafana dashboards combined with documentation and scripts to provide easy to operate end-to-end kubernetes cluster monitoring with Prometheus using the Prometheus operator. As it includes both Prometheus operator and Grafana dashboards, there is no need to set them up separately.

### Installation
In order to install Prometheus Stack, you must follow these steps:

- Create the namespace for Prometheus Stack:

```
 kubectl create namespace prometheus
```

- Add the prometheus-community Helm repository:

```
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
```

- Update your local Helm chart repository cache:

```
helm repo update
```

- To install the kube-prometheus-stack Helm chart in latest version:

```
helm install prometheus prometheus-community/kube-prometheus-stack --namespace=prometheus
```

- To install the kube-prometheus-stack Helm chart in specific version :

```
helm install prometheus prometheus-community/kube-prometheus-stack --namespace=prometheus --version=<version>
```

## 2. Karpenter
Karpenter is an open-source, flexible, high-performance Kubernetes cluster autoscaler built with AWS that improves resource utilization and application availability. It observes the pod resource request of unscheduled pods and launches right-sized Amazon EC2 instances based on the needs of workloads of a cluster such as acceleration, compute, scheduling requirements, and storage.


![Karpenter](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wimp4kx1ua81ly3o27t5.jpeg)

### Why Karpenter ?

1. Karpenter can provision new EC2 instances and schedule the Kubernetes pods within a minute.
2. With minimal infrastructural and configuration overhead, Karpenter dynamically selects the EC2 instance types that are best suited to what is needed by Kubernetes pods.
3. Karpenter can work with Kubernetes cluster based on any environment or cloud.

### Installation
Install Karpenter in the Kubernetes cluster using Helm charts. But before doing this, you must ensure that there is enough compute capacity available. Karpenter requires permissions to provision compute resources that are based on the cloud provider you have chosen. Please follow this [link](https://karpenter.sh/docs/getting-started/) for installation.

## 3. Devtron
Devtron is an open source software delivery workflow for Kubernetes written in go. It is designed as a self-serve platform for operationalizing and maintaining applications (AppOps) on Kubernetes in a developer friendly way.

### Some of the amazing features that Devtron provides are:

- Zero code software delivery workflow
- Multi cloud deployment
- Easy DevSecOps integration
- Application debugging dashboard
- Enterprise Grade security and compliances
- GitOps aware

To know more about devtron, please visit [here](https://devtron.ai/).

### Installation (Using Helm3)
Follow the steps mentioned below :

```
helm repo add devtron https://helm.devtron.ai
```

```
helm install devtron devtron/devtron-operator --create-namespace --namespace devtroncd
```

```
kubectl -n devtroncd get installers installer-devtron -o jsonpath='{.status.sync.status}'
```

The command given above will show status of installation. It will print Downloaded If the installation is in progress and Applied if installation  is completed.

```
kubectl get svc -n devtroncd devtron-service -o jsonpath='{.status.loadBalancer.ingress}'
```

```
kubectl -n devtroncd get secret devtron-secret -o jsonpath='{.data.ACD_PASSWORD}' | base64 -d
```

To check the devtron installation steps in detail, please visit [here](https://docs.devtron.ai/setup/install).

## 4. KEDA
KEDA is a Kubernetes-based Event Driven Autoscaler. With KEDA, we can scale any container in Kubernetes based on the events. KEDA can be installed into any Kubernetes cluster and can work alongside standard Kubernetes components like the Horizontal Pod Autoscaler(HPA).

### Installing KEDA (using helm)

- Add helm repo:

```
helm repo add kedacore https://kedacore.github.io/charts
```

- Update Helm repo:

```
helm repo update
```

- Install keda helm chart

### Helm 2

```
helm install kedacore/keda --namespace keda --version 1.4.2 --name keda
```

### Helm 3
```
kubectl create namespace keda helm install keda kedacore/keda --version 1.4.2 --namespace keda
```

## 5. Silver Surfer
Currently there is no easy way to upgrade kubernetes objects in case of kubernetes upgrade. It's a tedious task to know whether the current ApiVersion of the Object is Removed, Deprecated or Unchanged. It provides details of issues with the kubernetes object in case they are migrated to cluster with newer kubernetes version.

![Silver Surfer](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rlmeyg0qk3bh6cdtvx12.png)

### Installation

Just with few commands, it's ready to serve your cluster.

```
git clone https://github.com/devtron-labs/silver-surfer.git
cd silver-surfer
go mod vendor
go mod download
make
```

It's done. A bin directory might have created with the binary ready to use ./kubedd command.

It categorises kubernetes objects based on change in ApiVersion. Categories are:

1. Removed ApiVersion
2. Deprecated ApiVersion
3. Newer ApiVersion
4. Unchanged ApiVersion

Within each category it identifies migration path to newer Api Version, possible paths are:

1. It cannot be migrated as there are no common ApiVersions between source and target kubernetes version
2. It can be migrated but has some issues which need to be resolved
3. It can be migrated with just ApiVersion change

This activity is performed for both current and new ApiVersion.

You can check the Repo [here](https://github.com/devtron-labs/silver-surfer)

## 6. Winter Soldier
Winter soldier can be used to scale down or delete unneeded workload after work hours based on conditions. Winter Soldier is an operator which expects conditions to be defined using hibernator CRD.

It’s very often that in a kubernetes cluster, workloads remains up which are not being utilized since long or having no need anymore and increase TCO of infrastructure.  Over the weekend, it’s very rare that a kubernetes cluster or workloads are being used but still it remains up. In such user-cases, we can use winter soldier. To know more about winter-soldier, please follow this [link](https://github.com/devtron-labs/winter-soldier).

### Installation
Please visit this [link](https://github.com/arushi09-hub/winter-soldier/tree/readme-update) to get installation steps for winter soldier.

## 7. Kyverno
In kubernetes, we need to set some rules or policies and we need to do that in a way that allows everybody else to use their cluster without a high risk or destroying everybody else’s work. So, here we are going to explore a kubernetes native solution for policies and that is Kyverno. Kyverno is an open-source policy management system for kubernetes. Kyverno allows cluster administrators to validate, mutate and generate resources.

### Installation

- In order to install Kyverno with Helm, first add the Kyverno Helm repository:

```
helm repo add kyverno https://kyverno.github.io/kyverno/
```

- Scan the new repository for charts:

```
helm repo update
```

- Use Helm 3.2+ to create a Namespace and install Kyverno.

```
helm install kyverno kyverno/kyverno --namespace kyverno --create-namespace
```

Choose any one of the tools mentioned above and try it out on your Kubernetes cluster !


Follow Devtron for all things Kubernetes, DevOps and Opensource.
{% embed https://dev.to/devtron_ %}