Kubernetes is complex, as accepted by Google itself. If you need more proof, here is an interesting collection of Kubernetes failure stories. But Kubernetes is also a powerful container orchestration engine for automating deployment, scaling and management of containerized application. So the way forward is to make Kubernetes easier.
And fortunately there are some amazing tools available that can help you with your Kubernetes workflow. Here's a list of 27 open-source tools that can make your Kubernetes workflow easier.
Minikubeβ
Minikube helps you to quickly set up a local Kubernetes cluster on macOS, Linux, and Windows. It is primarily focused to support local Kubernetes app development and help new Kubernetes users learn.
Kubeboxβ
Kubebox is a terminal and web console for Kubernetes. It can be a great tool for Kubernetes admins. Some of its key features include:
- Configuration from kubeconfig files
- Switch contexts interactively
- Namespace selection and pods list watching
- Container resources usage (memory, CPU, network, file system charts)
Kopsβ
kOps is a popular Kubernetes operations tool. kOps is like a kubectl
for clusters. It can help you create, destroy, upgrade and maintain production-grade, highly available Kubernetes cluster.
Kube-burnerβ
Kube-burner is a tool aimed at stressing kubernetes clusters. Its functionalities can be summarized in these three steps:
- Create/delete the objects declared in the jobs.
- Collect desired on-cluster prometheus metrics.
- Write and/or index them to the configured TSDB.
Kube-hunterβ
Kube-hunter is used to hunt for security weaknesses in Kubernetes clusters. The tool was developed to increase awareness and visibility for security issues in Kubernetes environments. It is available as a container or you can also run its code yourself.
k9sβ
k9s provide a terminal UI that can be used to interact with Kubernetes clusters. It watches Kubernetes clusters continuously for changes and offers subsequent commands to interact with observed resources. Some of its key features include:
- Tracks in real-time activities of resources running in your Kubernetes cluster
- Tracks real-time metrics associates with resources such as pods, containers and nodes
- Drill down directly to whatβs wrong with your clusterβs resources
- Supports for viewing RBAC rules such as cluster/roles
k3sβ
K3s is a lightweight version of Kubernetes in a single binary less than 100MB. It is designed for production workloads in unattended, resource-constrained, remote locations or inside IoT appliances.
Its single binary executable reduces dependencies and steps needed to install, run and auto-update a production Kubernetes cluster.
Helmβ
Helm is a popular open-source package manager for Kubernetes. It is used to create reproducible build of your Kubernetes applications. Using Helm, you can:
- Use popular software packaged as Helm charts
- Share your own applications as helm charts
- Intelligently manage Kubernetes manifest files
- Manage releases of Helm packages
Nacosβ
Nacos is a platform tool used for dynamic service discovery, service configuration and traffic management. It supports discovering, configuring and managing almost all types of services. Some key features of Nacos includes:
- Service discovery and service health check
- Dynamic configuration manegement
- Dynamic DNS service
- Service governance and metadata management
Kanikoβ
Kaniko is a tool created by Google(not officially supported by Google) that is used to build container images from a Dockerfile, inside a container or Kubernetes cluster. It makes container building easier on Kubernetes.
Kaniko doesn't depend on a Docker daemon and executes each command within a Dockerfile completely in userspace. This enables building container images in environments that can't easily or securely run a Docker daemon, such as a standard Kubernetes cluster.
Kube-monkeyβ
Kube-monkey is an implementation of Netflix's chaos monkey for Kubernetes clusters. Chaos Monkey is a resiliency tool that randomly terminates virtual machine instances and containers prompting engineers to build resilient services.
Kube-monkey randomly deletes k8s pods in the cluster to encourage the development of failure-resistant services.
Teleportβ
Teleport is available as a single binary that can be used to enable secure access to SSH nodes, kubernetes clusters, web apps, PostgreSQL and MySQL databases.
Some of the key features of Teleport includes:
- Provides certificate-based authentication for SSH and Kubernetes
- Logs all activity across your infrastructure
- Recording of user's screen during their SSH session for real-time or later playback
Kubesprayβ
Kubespray can be used to deploy a production-ready Kubernetes cluster. Some of the key features of Kubespray includes:
- Can be deployed on all cloud vendors like AWS, GCE, Azure, OpenStack, vSphere, Equinix metal(bare-metal), Oracle cloud infrastructure etc.
- Highly available clusters
- Supports popular Linux distributions
- Continuous integration tests
Kube-benchβ
Kube-bench can be used to check whether Kubernetes is deployed securely by running the checks documented in the CIS Kubernetes benchmark. CIS benchmarks are best practices for the secure configuration of a target system. Kube-bench implements CIS benchmarks as closely as possible.
Tests can be configured with YAML files making it easy to update as test specifications evolve.
Project Quayβ
Quay can be used to build, store and distribute your applications and containers. Its container image registries let you store container images in a central location.
Regular users of Project Quay can create repositories to organize their images and add read and write access to the repositories that users control.
Admin users can perform a broader set of tasks, such as the ability to add users and control default settings.
Kube-applierβ
Kube-applier enables continuous deployment of Kubernetes objects by applying declarative configuration files from a Git repository to a Kubernetes cluster.
It runs as a Pod in a Kubernetes cluster and watches the Git repo to ensure that the cluster objects are up-to-date with their associated spec files (JSON or YAML) in the repo.
Kubetailβ
Kubetail enables you to aggregate logs from multiple pods into one stream. It is same as running kubectl logs -f
but for multiple pods. Getting logs from multiple pods is often required and that's where Kubetail helps developers.
Kubetail is a simple bash script that allows you to tail multiple pods simultaneously in an easy manner.
Kube-state-metricsβ
Kube-state-metrics enables you to get metrics based on the current state of Kubernetes native resources. It is a simple service that listens to the Kubernetes API server and generates metrics about the state of the objects. A few example metrics captured by kube-state-metrics are:
kube_pod_container_status_restarts_total
kube_deployment_status_replicas
kube_pod_container_resource_requests
kube_pod_container_resource_limits
Kubevalβ
Kubeval is used to validate Kubernetes configuration files. It can be used locally as part of the development workflow as well as in CI pipelines.
Kubeval validates configuration files using schemas generated from the Kubernetes OpenAPI specification.
Kube-ps1β
This is a handy tool that lets you add the current Kubernetes context and namespace configured onΒ kubectl
Β to your Bash/Zsh prompt strings (i.e. theΒ $PS1
). It can be installed using Homebrew package manager.
Kubectxβ
Kubectx provides an easier and a faster way to switch between clusters back and forth.
Kubecostβ
Kubecost can be used to gain visibility into current and historical Kubernetes spend and resource allocation. The models prepared by Kubecost provide cost transparency in Kubernetes environments that support multiple applications, teams, departments, etc.
KubeDBβ
KubeDB is used to run production grade databases on Kubernetes. It simplifies and automates routine database tasks such as provisioning, patching, backup, recovery, failure detection and repair for various popular databases on private and public clouds.
Skaffoldβ
Skaffold is a tool by Google that facilitates continuous development for kubernetes applications. You can iterate on your application source code locally then deploy to local or remote Kubernetes clusters.
Skaffold then handles the workflow for building, pushing and deploying the application. It also provides building blocks and describe customizations for a CI/CD pipeline.
Tiltβ
Tilt is a tool focused on microservice development. Using Tilt you can configure a dev environment for your team. Some of key features of Tilt includes:
- Runs automated rebuilds as you edit in your IDE
- Deploys code to running containers
- Handles repetitive and tediuos parts of your workflow
- Share dev environment for collaborating on issues
Kubernetes dashboardβ
Kubernetes Dashboard is a general purpose, web-based UI for Kubernetes clusters. Provided by Kubernetes, it allows users to manage applications running in the cluster and troubleshoot them, as well as manage the cluster itself.
The dashboard can be used to get an overview of applications running on your cluster. It can also create or modify individual Kubernetes resources such as deployments, dobs and daemonsets.
Kongβ
Kong API gateway is a cloud-native, platform-agnostic, scalable API Gateway. It provides functionalities for authentication, security, traffic control, analytics, monitoring and logging for Kubernetes.
Hope you enjoyed the list. We are currently building SigNoz - an open-source full-stack APM. It can be used for metrics, logs and distributed tracing in a single pane of glass. SigNoz uses OpenTelemetry for code instrumentation, which is quietly becoming the world standard for generating telemetry data.
If this sounds interesting to you, check out our GitHub repo π