When I first learn about kubernetes, I use a lot of terminal screen and
kubectl commands. The same way happened for istio, the kubernetes service mesh. Both are powerful items, and we can create declarative configuration for both using yaml files and
kubectl commands. But it will be easier, and more productive if we can do some operations through graphical user interface.
Although cloud kubernetes (Google Kubernetes Engine) comes with their own version of graphical user interface, it is very basic. And if we use istio, the default GUI from cloud does not has user interface for it.
Anyway, the UI is summarized below, but for more usage and features, you can see it here
Lens — The Kubernetes GUI
But then I encounter lens, a (very) nice user interface for kubernetes cluster(s). We can navigate through multiple kubernetes clusters. And for each kubernetes cluster, we can navigate, or even edit these items:
- all kubernetes standard objects (deployments, daemonset, pods, configmaps, secrets, services, ingress, etc)
- CRDs (Custom Resource Definition)
- Issues that occured on kubernetes cluster
- Container logs
- Helm charts & releases
Here are the things I like about Lens:
- Single app to works for multiple clusters. I have local minikube, dev cluster, test cluster, and production cluster. I only need to install lens and can easily navigate between those clusters.
- (Amazing) easy navigation. To look for object, there is a sidebar, a search text boxt, a namespace dropdown filter. To describe the item detail, just use mouse for point-and-click. No more
kubectl get -nor
kubectl describe -nand watching yaml files on black screen. The item details organized in clean UI. Related objects also has links (e.g. deployment has links to related pods)
- Intuitive way for troubleshoot. Watch kubernetes event, resource usage (on node / pod), watch live log, all real time
- Easy installation. Download the installer, double click, and we are ready to go.
- All of these items comes with Lens free version. I don’t use the pro (paid) version, but I believe it will be better.
Kiali — The Istio GUI
Istio Service mesh is not built-in kubernetes part, but it is common to use istio service mesh on our kubernetes cluster. By using service mesh, we can has powerful capabilities for east-west traffic like : mutual TLS security, canary release, traffic routing, circuit breaker,etc (as explained here).
Kiali is a visualization tools for istio. It gathers istio data and arrange them into graph, so we can know the connection among pods on kubernetes cluster, including traffic flow, which pods are unhealthy, etc. We can also do some configuration for istio using kiali, which includes disconnecting pods from traffic.
- see topology, how our services / pods communicates each other. This works for HTTP request and also GRPC
- see traffic flows. This includes error percentage, traffic rate, nice animation
- see which traffic is unhealthy
- create, update, or delete istio traffic configuration. This includes splitting traffic, dark launching, canary release, fault injection (delay / abort request purposedly), conditional traffic based on url / http headers / etc, HTTP timeout, HTTP retry, circuit breaker, mutual TLS configuration
- detect istio misconfiguration
Although User Interface is not mandatory to works with kubernetes and istio, they will ease the devops engineer workload, and increase productivity.