Kubernetes has become a standard way—many would say the standard way — to deploy containerized applications at scale. But if Kubernetes helps us to tame sprawling and complex container deployments, what’s available to help us tame Kubernetes? It too can be complex, messy, and difficult to manage.
As Kubernetes grows and evolves, it is likely that some of its excesses will be tamed from within. But some people aren’t waiting around for Kubernetes to get any easier to work with, and have rolled their own solutions to many common problems with Kubernetes in production.
Here we highlight 10 projects that simplify Kubernetes in various ways, from easing command-line interactions, to simplifying application deployment syntax, to integrating with AWS, to providing a window into multiple clusters.
Bitnami Cabin: Kubernetes dashboard for iOS and Android
No modern web application or service should be without some kind of mobile interface. Cabin provides Kubernetes admins with a version of the Kubernetes dashboard that is accessible from an iOS or Android smartphone. Many of the functions available in the full Kubernetes dashboard can be launched from Cabin, including Helm charts, scaling deployments, reading pod logs, and accessing web-based apps hosted by Kubernetes.
Kedge: Concise Kubernetes deployment definitions
The most common complaint about Kubernetes is how complex and verbose its manifests, or application definitions, are. They’re a pain to write and a pain to maintain, so it’s little wonder folks turn to third-party tools for relief. Kedge offers a simpler, more concise syntax. You provide the simple version of the Kubernetes definition file to Kedge, and Kedge expands it into its full-blown Kubernetes counterpart. Unlike Koki Short (see below), Kedge doesn’t use a modular syntax for its declaration files; it just boils down application definitions to common shortcuts.
Koki Short: Manageable Kubernetes manifests
Koki Short — like Kedge above—is a project to improve the way application definitions, or manifests, work in Kubernetes. Like Kedge, Short provides an abbreviated syntax for describing Kubernetes pods that can be translated into the full-blown syntax and back again. Unlike Kedge, Short is also modular, meaning details from one Short declaration can be re-used in others, so that many pods with common elements can be defined succinctly.
Kube-ps1: Smart Kubernetes command prompt
No, Kube-ps1 isn’t a first-gen Sony PlayStation emulator for Kubernetes (although that would be rather nifty). It’s a simple addition to Bash that displays the current Kubernetes context and namespace in the prompt. Kube-shell includes this along with a great many other things, but if all you want is the smarter prompt, Kube-ps1 provides it with little overhead.
Kube-prompt: Interactive Kubernetes client
Another minimal but useful modification to the Kubernetes CLI, Kube-prompt allows you to enter what amounts to an interactive command session with the Kubernetes client. Kube-prompt spares you from having to type
kubectl to prefix every command, and provides autocomplete with contextual information for each command.
Kube-shell: Shell for the Kubernetes CLI
The Kubernetes command line is powerful, but like any command line app it can be tedious to pick through its options. Kube-shell wraps the standard Kubernetes command line in an integrated shell that provides auto-completion and auto-suggestion of common commands, including suggestions provided by the Kubernetes server (e.g., for the names of services). It also gives you a more robust command history function, a
vi-style editing mode, and running context information for user, namespace, cluster, and other installation-specific details.
Kubernetes Ingress Controller for AWS
Kubernetes provides external load balancing and network services to a cluster through a service called Ingress. Amazon Web Services provides load balancing functionality, but doesn’t automatically couple these services to Kubernetes’ facilities for same. The Kubernetes Ingress Controller for AWS closes that gap. The Ingress Controller manages AWS resources for each Ingress object in a cluster automatically, creating load balancers for new ingress resources and deleting load balancers for removed ones, drawing on AWS CloudFormation to ensure the consistent state of the cluster. It also auto-manages other elements used in the cluster like SSL certificates and EC2 Auto Scaling Groups.
Kube-ops-view: Dashboard for multiple Kubernetes clusters
Kubernetes has a useful dashboard for general-purpose monitoring, but the Kubernetes community is experimenting with other ways to present data usefully to the Kubernetes admin. Kube-ops-view is one such experiment; it provides a broad at-a-glance view of multiple Kubernetes clusters, rendered graphically, so one can see at a glance the CPU and memory usage and status of pods across a cluster. It doesn’t allow you to invoke any commands, though; it’s strictly for visualization. But the visualizations it provides are striking and efficient, born for a wall monitor in your operations center.
Stern: Log tailing for Kubernetes
That’s “stern” as in a ship’s stern, not as in a disciplinarian attitude. Stern lets you produce color-coded output (as per the
tail command) from pods and containers in Kubernetes. It’s a quick way to pipe all the output from these resources into a single stream that can be read at a glance, and provides you with an at-a-glance way (the color coding) to distinguish the streams.
Teresa: A simple PaaS on Kubernetes
Teresa is an application deployment system that runs as a simple PaaS on Kubernetes. Users, organized into teams, can deploy and manage applications that belong to them. This makes it a little easier for people who are trusted with a given application to work with it, without having to deal with Kubernetes directly.